Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/06/2010, 23:54
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Calendario en php que toma datos de una base de datos mysql

Hola ancortez
voy a permitirme quejarme del calendario que posteaste porque me parecio un asco, sin embargo me mate un buen tiempo tratando de entenderlo, y cambiandole cosas me termine estresando y borre ese adefesio
Respire, y bueno, pense que yo podía hacer uno que fuera un adefesio menor,
como resultado te voy a postear el código no sin antes hacerte algunas observaciones

0. hay muchos calendarios mejor estructurados y que consigues aquí en foros o en internet
1. las fechas podrían manejarse mejor en campos de fecha como tal
2. no confies en las modificaciones que hice, pues si bien pienso que mejoro bastante aún sigue usando cosas del anterior, y según veo faltan cosas, como por ejemplo pasar entre meses e incluso años! por eso recomiendo mejor otro calendario

aquí pues el resultado

Código PHP:
Ver original
  1. while($reg = mysql_fetch_row($result))
  2. {
  3.   //array con los datos
  4.   $fechas[$reg[0]] = array($reg[0],$reg[4]);
  5. }
  6.  
  7. //dibujado calendario
  8. echo '<tr>';
  9. //array de colores
  10. $colordias = array(
  11.                   //sabado y domingo
  12.                   0=>'#99cccc',1=>'#99cccc',
  13.                   //lunes a viernes
  14.                   2=>'#EEEEEE',3=>'#EEEEEE',4=>'#EEEEEE',5=>'#EEEEEE',6=>'#EEEEEE',
  15.                   //dia actual
  16.                   7=>'#ffcc99',        
  17.                   //dia con link
  18.                   8=>'#ffff00',
  19.               );
  20. //variable que pasara por los dias de la semana siendo 0 sabado hasta 6 viernes
  21. $k = $DiaSemanaEmpiezaMes;
  22. for($i = 1; $i < $TotalDeCeldas; $i++)
  23. {          
  24.     if( $i > 2  )
  25.     {
  26.       $j = $i - 2;
  27.    
  28.         if( $k == 6 )
  29.         {
  30.           $k = 0;
  31.           $color = $colordias[$k];
  32.         }
  33.         else if ( $k != 6 )
  34.         {
  35.           $k++;
  36.           $color = $colordias[$k];
  37.         }
  38.        
  39.         if ( $j == date(d) )
  40.           $color = $colordias[7];
  41.          
  42.       //Verificamos que exista el día dentro del array de fechas, y si
  43.       //existe veremos el link, de lo contrario solo el número    
  44.       if( array_key_exists($j, $fechas) )
  45.       {
  46.         $color = $colordias[8];
  47.         $link = '<a href = "'.$fechas[$j][1].'"><b>'.$fechas[$j][0].'</b></a>';
  48.       }
  49.       else
  50.       {
  51.         $link = $j;
  52.       }
  53.          
  54.     }
  55.          
  56.     if($i&#37;7 == 0)
  57.      echo '<td bgcolor='.$color.'>'.$link.'</td></tr><tr>';                            
  58.     else if($i == $EmpiezaMesCalOffset + 1  )
  59.       echo '<td bgcolor='.$color.'>'.$link,'</td>';
  60.     else if( $i <= $EmpiezaMesCalOffset && $i < $EmpiezaMesCalOffset)
  61.       echo '<td bgcolor='.$color.'>'.$link.'</td>';  
  62.     else if( $i <= $EmpiezaMesCalOffset && $i%7 != 0)
  63.       echo '<td bgcolor='.$color.'></td>';
  64.     else if( $i > $EmpiezaMesCalOffset && $i%7 != 0 && $i < $TotalDeCeldas - $DiaSemanaTerminaMes+1 )
  65.       echo '<td bgcolor='.$color.'>'.$link.'</td>';
  66. }
  67. echo '</tr>';
  68.  
  69. print "<tr><td align=center colspan=10><a href='calendario.php'>Ir al dia de hoy</a></td></tr>";
  70. print "</table>";

saludos

p.s: solo copie como puedes ver del while hasta cuando se cierra la tabla, el resto del código
sigue igual
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 16/06/2010 a las 23:55 Razón: add_comment()