Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/04/2014, 10:20
nades
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 3 meses
Puntos: 1
Exclamación Calendario PHP con eventos con cierto estatus

Hola amigos,
Espero puedan ayudar, cree un calendario que me muestra los días del mes en su día correspondiente. Tengo una BD donde guardo notas (eventos) y lo que necesito es que si el mes y el año se encuentran en la BD el día de esa fecha me seleccione evento.

Al principio me funcionaba correctamente pero al agregar a mi consulta que la nota tiene que ser de estatus Apartado o Garantizado no me funciona del todo bien.

Aqui mi codigo
Código PHP:
Ver original
  1. // Seleccionar notas con el mes, año y estatus especificos
  2. $query_eventos = mysql_query("SELECT * FROM calendario WHERE (month(fecha)=$mes AND year(fecha)=$anio) AND (estatus='Apartado' OR estatus='Garantizado')")or die(mysql_error());
  3.  
  4. // Guardo mi info en Array 
  5. while ($eventos = mysql_fetch_array($query_eventos)) {
  6.           $eventos_en_bd[] = $eventos['fecha'];
  7. }
  8.  
  9. // Funciones para tomar primer dia, ultimo dia y total de dias
  10.  
  11. $diames = 1;  
  12. $j=1; // dias que empieza a contarse el 1º + los dias del mes
  13.  
  14. while ($j < $total_dias) { // aqui empiezo a crear la tabla del calendario
  15.          
  16.           foreach ($eventos_en_bd as $evento) { // Para cada array tomo mi calendario
  17.                     $dia_mes = explode("-",$evento);
  18.                     // echo $dia_mes[2]; (aqui solo comprobe que realmente esten guardados en el array los días correspondientes a mi query, lo cual si me los toma correctamente)
  19.                         echo "<tr> \n";
  20.                 $i=0;
  21.  
  22.                while ($i < 7) { // aqui verifico que sean los 7 dias de la semana  
  23.  
  24.                      if ($j <= $numero_primer_dia) {
  25.                      echo "<td style='background:#EEEEEE'></td> \n"; // sombrea días inútiles
  26.                     } elseif ($diames > $ultimo_dia) {
  27.                      echo "<td style='background:#EEEEEE'></td> \n"; // sombrea días inútiles
  28.                     } else {   
  29.                       if ($diames == $dia_mes[2]) { // si el dia del mes esta en mi BD agrego la palabra Evento
  30.                           echo " <td><a style=\"display:block;\">".$diames." Evento</a></td> \n";
  31.                           $diames++;
  32.                       } else {
  33.                       echo " <td><a style=\"display:block;\">".$diames."</a></td> \n";
  34.                           $diames++;
  35.                       }
  36.  
  37.                     }
  38.                     $i++;
  39.                     $j++;
  40.                 }
  41.                echo "</tr> \n";
  42.  
  43.              }
  44. }

En este caso mi variable $dia_mes[2] me muestra "05 12 27 05 12 27" y solo el 5 y 12 estan con Evento y me agrega una fila de mas sombreada, el 27 no me lo toma en cuenta para nada.

Lo curioso es cuando le quito a mi consulta el estatus, a todos los días "05 12 13 20 27" les agrega la palabra Evento sin ningún problema. ¿En qué estoy fallando?

Código PHP:
Ver original
  1. $query_eventos = mysql_query("SELECT * FROM calendario WHERE (month(fecha)=$mes AND year(fecha)=$anio)")or die(mysql_error());