Foros del Web » Programando para Internet » PHP »

Ayuda con nuevo calendario PHP para una tabla

Estas en el tema de Ayuda con nuevo calendario PHP para una tabla en el foro de PHP en Foros del Web. Saludos a todos, escribo ya que tengo un problema con una tabla de asistencia que estoy haciendo para la empresa en la que trabajo, esta ...
  #1 (permalink)  
Antiguo 15/08/2010, 07:35
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Ayuda con nuevo calendario PHP para una tabla

Saludos a todos, escribo ya que tengo un problema con una tabla de asistencia que estoy haciendo para la empresa en la que trabajo, esta es la tabla




tengo 3 selects que no se ven para seleccionar el pasillo, el mes y el año a consultar. el problema que tengo es que estoy ingresando la tabla del mes es decir esto:



eso lo hice a mano ya que no tengo ni idea de como hacer para que use un calendario pero lo represente de esa forma, alguien que me pueda hechar una mano con esto? se los agradeceria enormemente. La idea es que al seleccionar el mes y el año el ponga la cantidad de dias del mes y encima tal como esta ahi, si el primero de febrero de 2010 fue un lunes entonces empiece asi, y si 1 de febrero de 2011 es miercoles entonces empiece por ahi. No se si me he explicado bien

Ya las asistencias las genera bien y tengo todo listo, solo me falta eso del mes

Espero su ayuda de verdad, y muchas gracias de antemano por el apoyo que me puedan brindar.
  #2 (permalink)  
Antiguo 15/08/2010, 07:55
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 6 meses
Puntos: 71
Respuesta: Ayuda con nuevo calendario PHP para una tabla

La función date en combinación con mktime puedes hacer lo que quieres con las fechas.

Mirate la documentación, que salen ejemplos exactos de lo que quieres hacer.
  #3 (permalink)  
Antiguo 15/08/2010, 18:47
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda con nuevo calendario PHP para una tabla

Gracias por tu respuesta, he estado leyendo pero todavia no logro hacer la tabla, podrías darme una mano solo para empezar? disculpa la molestia. Saludos!
  #4 (permalink)  
Antiguo 15/08/2010, 20:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda con nuevo calendario PHP para una tabla

Listo ya lo hice muchas gracias por la ayuda
  #5 (permalink)  
Antiguo 16/08/2010, 02:16
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 6 meses
Puntos: 71
Respuesta: Ayuda con nuevo calendario PHP para una tabla

Me alegro.

Aunque para otros foreros, tal vez les iría bien ves la solución, para evitar post repetidos.
  #6 (permalink)  
Antiguo 16/08/2010, 20:09
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 7 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!!

Etiquetas: calendario, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:54.