Hola,
Mi padre es el presidente de una comunidad de vecinos y en mis tiempos de aburrimiento decidí programarle un pequeño calendario de asistencia.
Al diseñar la base de datos no tuve en cuenta algunas cosillas y ahora me topo con un gran inconveniente que no logro solucionar sin tener que deshacer todo el código programado.
Tengo la siguiente tabla:
TABLA_EVENTOS
- Nombre del evento
- Fecha de inicio
- Fecha de fin
- Número de asistentes
Y relleno un calendario:
Código PHP:
// Creo el calendario
for ($i = 1; $i <= date('t', strtotime($month)); $i++) {
$day_week = date('N', strtotime($month . '-' . $i));
$calendar[$week][$day_week] = $i;
if ($day_week == 7)
$week++;
}
// Obtengo los eventos del mes
$eventos = funcion_devuelve_array_de_eventos($mes);
// Relleno calendario con los eventos
foreach ($eventos as $evento) {
foreach ($calendar as $week => $days) {
for ($i = 1; $i <= 7; $i++) {
// Si hay algún evento con fecha de inicio para el día que estamos iterando se añade al calendario
if ($days[$i] == $evento->fecha_inicio) {
$days[$i]->asistentes = $evento->asistentes;
$calendar[$week] = $days;
}
}
}
}
El problema es que no tuve en cuenta que el evento tiene una fecha de inicio y una de fin. Es decir, si un evento empieza el 1 de julio y termina el 3 de julio en el calendario debe aparecer:
1 de julio -> Evento 1 | 30 asistentes
2 de julio -> Evento 1 | 30 asistentes
3 de julio -> Evento 1 | 30 asistentes
Pero sólo tengo en cuenta el primer día del evento en el código que he puesto, así que en mi calendario sólo aparece:
1 de julio -> Evento 1 | 30 asistentes
Tendría que haber hecho una fila en la base de datos por cada día, pero no lo tuve en cuenta. ¿Hay solución?
Gracias.