Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/08/2010, 20:09
douglasroos
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con nuevo calendario PHP para una tabla

cierto! acá publico el código

tomo valores de un select enviando el nombre del mes y el año

los recibo por POST y traduzco los nombres de los meses en los dias de inicio y fin

Código PHP:
Ver original
  1. if ($mes1 == "Enero"){
  2.  
  3. $mes2 = "0101";
  4. $mes3 = "3101";
  5. }
  6.  
  7. if ($mes1 == "Febrero") {
  8.    
  9.  
  10. $mes2 = "0102";
  11. if ($anoact %4 == 0) {
  12. $mes3 = "2902";
  13. }else{
  14.     $mes3 = "2802";
  15. }
  16. }
  17.  
  18. if ($mes1 == "Marzo") {
  19.    
  20. $mes2 = "0103";
  21. $mes3 = "3103";
  22.  
  23. }
  24.  
  25. if ($mes1 == "Abril") {
  26.    
  27. $mes2 = "0104";
  28. $mes3 = "3004";
  29.  
  30. }
  31.  
  32. if ($mes1 == "Mayo") {
  33.    
  34. $mes2 = "0105";
  35. $mes3 = "3105";
  36.  
  37. }
  38.  
  39. if ($mes1 == "Junio") {
  40.    
  41. $mes2 = "0106";
  42. $mes3 = "3006";
  43.  
  44. }
  45.  
  46. if ($mes1 == "Julio") {
  47.    
  48. $mes2 = "0107";
  49. $mes3 = "3107";
  50.  
  51. }
  52.  
  53. if ($mes1 == "Agosto") {
  54.    
  55. $mes2 = "0108";
  56. $mes3 = "3108";
  57.  
  58. }
  59.  
  60. if ($mes1 == "Septiembre") {
  61.    
  62. $mes2 = "0109";
  63. $mes3 = "3009";
  64.  
  65. }
  66.  
  67. if ($mes1 == "Octubre") {
  68.    
  69. $mes2 = "0110";
  70. $mes3 = "3110";
  71.  
  72. }
  73.  
  74. if ($mes1 == "Noviembre") {
  75.    
  76. $mes2 = "0111";
  77. $mes3 = "3011";
  78.  
  79. }
  80.  
  81. if ($mes1 == "Diciembre") {
  82.    
  83. $mes2 = "0112";
  84. $mes3 = "3112";
  85.  
  86. }

luego construyo la fecha en un numero que mysql pueda entender para hacer selecciones en la BD

Código PHP:
Ver original
  1. $dia01 = substr ($mes2, 0, 2);
  2. $mes01 = substr ($mes2, -2);
  3. $anobb = substr ($anoact, -4);
  4.  
  5. $dia = (int)$dia01;
  6. $mes = (int)$mes01;
  7. $ano = (int)$anobb;
  8.  
  9. $dia2cc = substr ($mes3, 0, 2);
  10. $mes2cc = substr ($mes3, -2);
  11. $ano2cc = substr ($anoact, -4);
  12.  
  13. $dia2 = (int)$dia2cc;
  14. $mes2 = (int)$mes2cc;
  15. $ano2 = (int)$ano2cc;
  16.  
  17. $primera = mktime(01,02,01,$mes,$dia,$ano);
  18. $segunda = mktime(23,59,59,$mes2,$dia2,$ano2);

luego de esto genero la tabla con codigo HTML y PHP

Código PHP:
Ver original
  1. <table align="left" border="1" cellpadding="0" cellspacing="0">
  2. <tr>
  3. <td align="center" bgcolor="red" class="texto" colspan="3">Pasillo <?php echo $pasillo; ?></td><td align="center" bgcolor="#0099FF" class="texto" colspan="33"><?php echo $mes1; ?></tr>
  4. <tr><td align="center" colspan="3" bgcolor="red">&nbsp;</td><td colspan="33" bgcolor="#0099FF">&nbsp;</td></tr>
  5. <tr>
  6. <td align="center" colspan="1" bgcolor="red"><font color="white">Cedula</font></td><td align="center" colspan="2" bgcolor="red"><font color="white">Nombre</font></td></td>

ahora hecho esto construyo el php para el calendario, traduzco los dias de la semana y finalizo la tabla con un bucle

Código PHP:
Ver original
  1. $f1= $ano."/".$mes."/".$dia."";
  2. $f2= $ano2."/".$mes2."/".$dia2."";
  3.  
  4. $dif=((strtotime($f2)-strtotime($f1))/86400);
  5. $partes=explode("/",$f1);
  6.  
  7. for ($i=0;$i<=$dif;$i++){
  8. $dia1=mktime(0,0,0,$partes[1],$partes[2]+$i,$partes[0]);
  9. $nom_dia = date("D",$dia1);
  10. $nom_dia = str_ireplace( "Mon", "L", $nom_dia );
  11. $nom_dia = str_ireplace( "Tue", "M", $nom_dia );
  12. $nom_dia = str_ireplace( "Wed", "M", $nom_dia );
  13. $nom_dia = str_ireplace( "Thu", "J", $nom_dia );
  14. $nom_dia = str_ireplace( "Fri", "V", $nom_dia );
  15. $nom_dia = str_ireplace( "Sat", "S", $nom_dia );
  16. $nom_dia = str_ireplace( "Sun", "D", $nom_dia );
  17. echo '<td align="center" bgcolor="#0099FF" class="texto">'.$nom_dia.'</td>';
  18. }
  19. echo '</tr><tr>';
  20.  
  21. echo'<td align="center" colspan="3">&nbsp;</td>';
  22. for ($i=0;$i<=$dif;$i++){
  23. $dia1=mktime(0,0,0,$partes[1],$partes[2]+$i,$partes[0]);
  24. echo '<td align="center" bgcolor="#0099FF" class="texto">'.date("j",$dia1).'</td>';
  25. }
  26. echo '</tr>';

luego realizo la consulta a la BD y genero la asistencia del personal.

Código PHP:
Ver original
  1. $vacia = " ";
  2. require('conexion.php');
  3.         $sql = "SELECT distinct cirac,nomrac FROM asistencia WHERE pasillo='$pasillo' and obser='$vacia' and fecha >=$primera and fecha <=$segunda order by nomrac ASC";
  4.         $rs = mysql_query($sql,$conn);
  5.        
  6.         if (mysql_num_rows($rs)!=0){
  7.         while($yrow = mysql_fetch_array($rs)) {
  8.            
  9.             $nombre = $yrow["nomrac"];
  10.             $cedula = $yrow["cirac"];
  11.            
  12.             echo "<tr><td align='center' colspan='1'> $cedula </td><td align='left' colspan='2'> $nombre</td>";
  13.            
  14.             $sssql = "SELECT estatus,fecha,fechados FROM asistencia WHERE cirac='$cedula'  and obser='$vacia' and fecha >=$primera and fecha <=$segunda order by nomrac,fecha ASC";
  15.         $rsss = mysql_query($sssql,$conn);
  16.        
  17.  
  18.         while($row = mysql_fetch_array($rsss)) {
  19.            
  20.             $estatus = $row["estatus"];
  21.             $fechados = $row["fecha"];
  22.             $fecha3 = $row["fechados"];
  23.                
  24.             $fecha = date('d/m/Y',$fechados);
  25.            
  26.             if ($estatus == "Presente"){
  27.                 $estatus = "T";
  28.                 $color = "#00CC66";
  29.                 $font = "black";
  30.             }
  31.             if ($estatus == "Ausente"){
  32.                 $estatus = "A";
  33.                 $color = "red";
  34.                 $font = "black";
  35.             }
  36.             if ($estatus == "Libre"){
  37.                 $estatus = "L";
  38.                 $color = "#FFFF66";
  39.                 $font = "black";
  40.             }
  41.             if ($estatus == "Permiso"){
  42.                 $estatus = "P";
  43.                 $color = "#283C7D";
  44.                 $font = "black";
  45.             }
  46.             if ($estatus == "Vacaciones"){
  47.                 $estatus = "V";
  48.                 $color= "#FF6699";
  49.                 $font = "black";
  50.             }
  51.             if ($estatus == "Relevo"){
  52.                 $estatus = "C";
  53.                 $color = "#00CC66";
  54.                 $font = "black";
  55.             }
  56.             if ($estatus == "Reposo"){
  57.                 $estatus = "R";
  58.                 $color = "#33FFCC";
  59.                 $font = "black";
  60.             }
  61.             if ($estatus == "Retardo"){
  62.                 $estatus = "T";
  63.                 $color = "#00CC66";
  64.                 $font = "black";
  65.             }
  66.            
  67.  
  68.             if ($estatus == "A"){
  69.                 $estatus1 = "Ausente";
  70.                 $color = "red";
  71.                 $font = "black";
  72.             }
  73.             if ($estatus == "L"){
  74.                 $estatus1 = "Libre";
  75.                 $color = "#FFFF66";
  76.                 $font = "black";
  77.             }
  78.             if ($estatus == "P"){
  79.                 $estatus1 = "Permiso no Remunerado";
  80.                 $color = "#283C7D";
  81.                 $font = "white";
  82.             }
  83.             if ($estatus == "V"){
  84.                 $estatus1 = "Vacaciones";
  85.                 $color= "#FF6699";
  86.                 $font = "black";
  87.             }
  88.             if ($estatus == "T"){
  89.                 $estatus1 = "Presente";
  90.                 $color = "#00CC66";
  91.                 $font = "black";
  92.             }
  93.             if ($estatus == "R"){
  94.                 $estatus1 = "Permiso Remunerado";
  95.                 $color = "#33FFCC";
  96.                 $font = "black";
  97.             }  
  98.            
  99.             $consulta = "SELECT observacion from asistencia where cirac='$cedula' and fecha='$fechados'";
  100.             $query = mysql_query($consulta,$conn);
  101.            
  102.             while($col = mysql_fetch_array($query)){
  103.                
  104.                 $observacion = $col["observacion"];
  105.   ?>
  106.    
  107.             <td bgcolor="<?php echo $color; ?>"><div class="title"><a href="observacion.php?fecha=<?php echo $fecha3; ?>&cedula=<?php echo $cedula; ?>" target="popup" onClick="window.open(this.href, this.target, 'width=300,height=200'); return false;" style='text-decoration:none;color:<?php echo $font; ?>;'><?php echo $estatus; ?></a><span><?php echo $nombre; ?> <?php echo $observacion; ?> Fecha <?php echo $fecha; ?></span></div></td>
  108.                     <?php
  109.         }
  110.         }
  111.         }
  112.         echo"</tr>";   
  113.         }

y finalizo la tabla

Código HTML:
Ver original 

Eso es lo que he hecho.

Gracias por la ayuda a todos.

Saludos!!