Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2014, 05:42
kiko's
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Rellenar un calendario de eventos

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.