Ver Mensaje Individual
  #15 (permalink)  
Antiguo 05/08/2015, 21:31
Avatar de chronos682
chronos682
 
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 3 meses
Puntos: 69
Respuesta: Tabla Html Php

Cita:
Iniciado por efkruuse Ver Mensaje
Hola chronos682 gracias por tu tiempo y dedicacion!!


He agregado una comprobacion con if e isset para validar si existe o no el dato, y he solucionado el problema de que el dia comiense como Lunes.
Código PHP:
for ($n 1$n <= $num$n++){
     echo 
"<td>"." ";
     if(isset(
$calendario[$i][$n]) ) {
             echo 
"<center>".date("d"$calendario[$i][$n])."</center>";
     }else {
            echo 
" ";
     }
     echo 
"</td>";

Obtengo el siguiente resultado para:
Lunes 27


Martes 28


Miercoles 29


Algo sucede con los <td> que van disminuyendo, alguna idea?
Yo lo plantearía diferente, yo llenaría el array hasta completar los espacios que hagan falta así siempre serían 5 elementos horizontales por cada elemento vertical en el array de 2 dimensiones. Quedaría así el código:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $fechaInicio=strtotime("06-08-2015");
  4. $fechaFin=strtotime("05-09-2015");
  5. $calendario = array();
  6.  
  7. $semana=1;
  8. //Se comprueba a qué día de la semana corresponde la fecha de inicio
  9. $diasemana = date( 'w', $fechaInicio );
  10.  
  11. //Si es sábado o domingo automáticamente modifica la fecha de inicio al siguiente Lunes
  12. if ($diasemana == 0)
  13. {
  14.     $fechaInicio += 86400;
  15. }
  16. elseif ($diasemana == 6)
  17. {
  18.     $fechaInicio += 172800;
  19. }
  20.  
  21. $diasemana = date( 'w', $fechaInicio );
  22.  
  23. //Si la fecha de inicio corresponde a un día entre Martes y Viernes
  24. //rellena los espacios del array que hagan falta con guión para completar hasta el Lunes anterior
  25. if ($diasemana > 1 && $diasemana < 6)
  26. {
  27.     for($i=1;$i<=$diasemana - 1; $i++)
  28.     {
  29.         $calendario[$semana][$i] = "-";
  30.     }
  31. }  
  32.  
  33. /* avanzamos de a 1 dia; 1 dia ? 86400 segundos */
  34. for($i=$fechaInicio; $i<=$fechaFin; $i+=86400){
  35.    
  36.     /* obtenemos el dia de semana como numero; Domingo = 0, Lunes = 1... Sabado = 6 */
  37.     $diasemana = date( 'w', $i );
  38.    
  39.    
  40.     /* solo agregamos los dias Lunes, Martes, Miercoles, Jueves y Viernes */
  41.     if(($diasemana >= 1) && ($diasemana <=5 ))
  42.     {
  43.         /* obtenemos el calendario en formato numerico STR, [Semana] [Dia Semana] = Fecha */
  44.         $calendario[ $semana ][ $diasemana ] = $i;
  45.     }
  46.    
  47.     /* imprimir fechas hacia abajo, en formato dia-mes-año */
  48.     //echo date('d/m/Y',$calendario[$semana][$diasemana]). "<br>";
  49.    
  50.     /* aumentamos la cantidad de semanas */
  51.     if($diasemana == 6){
  52.         $semana++;
  53.     }
  54.    
  55. }
  56. ?>
  57.  
  58. <!DOCTYPE html>
  59. <html>
  60.  
  61.     <head>
  62.     </head>
  63.  
  64.     <body>
  65.  
  66.         <table border="1">
  67.             <thead>
  68.                 <tr>
  69.                     <td>Lunes</td>
  70.                     <td>Martes</td>  
  71.                     <td>Miércoles</td>  
  72.                     <td>Jueves</td>  
  73.                     <td>Viernes</td>
  74.                     <td>Semana</td>                
  75.                 </tr>
  76.             </thead>
  77.  
  78.             <tbody>
  79.                 <?php
  80.                     for($i = 1; $i <= count($calendario); $i++)
  81.                     {
  82.                         echo "<tr>";
  83.                             $num = count($calendario[$i]);
  84.                             for ($n = 1; $n <= $num; $n++)
  85.                             {
  86.                                 echo "<td>";
  87.                                     //Determina si el elemento del array es un guion
  88.                                     //Si es guión, coloca un espacio
  89.                                     if ($calendario[$i][$n] != "-")
  90.                                     {
  91.                                         echo "<center>".date("d", $calendario[$i][$n])."</center>";
  92.                                     }
  93.                                     else
  94.                                     {
  95.                                         echo " ";
  96.                                     }
  97.                                 echo "</td>";
  98.                             }
  99.                             echo "<td>Semana {$i}</td>"; //Si no quieres que aparezca la semana en la tabla borras esta línea
  100.                             //y donde dice <td>Semana</td> tambien lo eliminas
  101.                         echo "</tr>";
  102.                     }
  103.                 ?>
  104.             </tbody>
  105.         </table>
  106.     </body>
  107.    
  108. </html>

Lo comenté para que sea más fácil de entenderlo y estudiarlo.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]