Ver Mensaje Individual
  #21 (permalink)  
Antiguo 26/11/2011, 09:15
Avatar de JuJoGuAl
JuJoGuAl
 
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 meses
Puntos: 19
Respuesta: Crear calendario en Sistema de Asistencia

Bueno lo tengo casi resuelto... pero los dias se me estan corriendo...

cuando coloco las fechas de intervalo: 01/11/2011 - 30/11/2011...

me muestra es que el MIERCOLES es 01 (cuando en realidad es martes) y cuando llega al 30 no muestra 30 si no 0...

te paso el codigo total:
Código PHP:
Ver original
  1. <?PHP
  2. require_once('Connections/Sistema.php');
  3. date_default_timezone_set('America/Caracas');
  4. $hora=date("d/m/Y h:i:s A");
  5. //Inicio Funciones
  6. function fechaNumero($f,$opc){
  7.     $f = preg_replace("#[,.\/ ]#","-",$f);
  8.     if(!$opc){
  9.         list($d,$m,$a) = explode("-",$f);
  10.         $fecha = mktime(0,0,0,$m,$d,$a)/(60 * 60 * 24);
  11.     }else
  12.     $fecha = explode("-",$f);
  13.     return $fecha;
  14. }
  15.  
  16. function diasemana($d) {
  17.     $sem = array("Do","Lu","Ma","Mi","Ju","Vi","Sa");
  18.     return $sem[$d];
  19. }
  20. //Término Funciones
  21.  
  22.  
  23. //Inicio Clase
  24. class claseTablaDias {
  25.     function validarDatos($fecha_inicio,$fecha_fin,$trabajadores,$trabajadornom){
  26.         $f1 = fechaNumero($fecha_inicio,0);
  27.         $f2 = fechaNumero($fecha_fin,0);
  28.         $this->fi = $fecha_inicio;
  29.         $this->dif_dias = $f2 - $f1 + 1;
  30.         if($this->dif_dias>0) {
  31.             $this->crearTablaDias($trabajadores,$trabajadornom);
  32.         }else{
  33.             print "error datos";
  34.         }
  35.     }
  36.    
  37.     function crearTablaDias($total_trabajadores,$trabajadornom){
  38.         print "<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\">\n";
  39.         for($row=0;$row<count($total_trabajadores)+2;$row++){
  40.             list($d,$m,$a) = fechaNumero($this->fi,1);
  41.             print "<tr>\n";
  42.             $celdas=$this->dif_dias+1;
  43.             for($i==0 ; $i<$celdas;$i++){
  44.                 print "<td align=\"center\">";
  45.                 $dia = diasemana(date("w",mktime(0,0,0,$m,$d,$a)));
  46.                 $fechadia = date("j",mktime(0,0,0,$m,$d,$a));
  47.                 if($row==0)
  48.                     if ($i==0)
  49.                     {
  50.                         print "&nbsp;";
  51.                     }
  52.                     else
  53.                     {
  54.                         print $dia;
  55.                     }
  56.                 elseif($row==1)
  57.                 if ($i==0)
  58.                     {
  59.                         print "&nbsp;";
  60.                     }
  61.                     else
  62.                     {
  63.                         print $fechadia-1;// menos 1 por la celda extra que agrege
  64.                     }
  65.                 elseif($row>=2){
  66.                     ##################### CONECTAR BASE DATOS #####################
  67.                         $clave=$row-2;
  68.                         $cone = mysql_connect('localhost', 'root', '') or die ("Error de Conexion: " .mysql_error());
  69.                         $select=mysql_select_db('registros',$cone) or die ("Error del select db: ".mysql_error());
  70.                         $consulta = "SELECT registros.cedula,empleados.nombres as nombres,DATE_FORMAT(registros.entrada1,'%d/%m/%Y, %r') as entrada1,DATE_FORMAT(registros.salida1,'%d/%m/%Y, %r') as salida1,DATE_FORMAT(registros.entrada2,'%d/%m/%Y, %r') as entrada2,DATE_FORMAT(registros.salida2,'%d/%m/%Y, %r') as salida2,empleados.empresa as nomina,registros.empresa FROM registros INNER JOIN empleados ON registros.cedula=empleados.cedula WHERE DATE_FORMAT(registros.entrada1,'%d/%m/%Y') = '$d/$m/$a' AND registros.cedula = $total_trabajadores[$clave]";
  71.                         ##################### DESCONECTAR BASE DATOS #####################
  72.                         $query = mysql_query($consulta);
  73.                         $rowdato = mysql_fetch_assoc($query);
  74.                     if ($i==0)
  75.                     {
  76.                         print $trabajadornom[$clave];
  77.                     }
  78.                     else
  79.                     {
  80.                         if(mysql_num_rows($query) && $dia!="Do")
  81.                         print "1";
  82.                         else
  83.                         print "0";
  84.                     }
  85.                 }
  86.                 $d++;
  87.                 print "</td>";
  88.             }
  89.             print "</tr>\n";
  90.             $i=0;
  91.         }
  92.         print "</table>";
  93.     }
  94. }
  95. //Término Clase
  96. if ($_SESSION['ID'] != 0 && $_SESSION['TIENDA']!="NINGUNO")
  97. {
  98.     if (isset($_GET['entrada']))
  99.     {
  100.       $entrada=escape($_GET['entrada']);
  101.     }
  102.     if (isset($_GET['salida']))
  103.     {
  104.       $salida=escape($_GET['salida']);
  105.     }
  106.     if (isset($_GET['empresa']))
  107.     {
  108.       $empresa=escape($_GET['empresa']);
  109.     }
  110.     //$sql = "SELECT registros.cedula,empleados.nombres,DATE_FORMAT(registros.entrada1,'%d/%m/%Y, %r') as entrada1,DATE_FORMAT(registros.salida1,'%d/%m/%Y, %r') as salida1,DATE_FORMAT(registros.entrada2,'%d/%m/%Y, %r') as entrada2,DATE_FORMAT(registros.salida2,'%d/%m/%Y, %r') as salida2,empleados.empresa as nomina,registros.empresa FROM registros INNER JOIN empleados ON registros.cedula=empleados.cedula WHERE registros.cedula>0";
  111.     $sql="SELECT cedula,nombres FROM empleados WHERE cedula > 0";
  112.     if ( ($entrada!=NULL) )
  113.     {
  114.         //$sql.=" AND DATE_FORMAT (registros.entrada1,'%d/%m/%Y') >= '$entrada'";
  115.        
  116.     }
  117.     if ( ($salida!=NULL) )
  118.     {
  119.         //$sql.=" AND DATE_FORMAT (registros.entrada1,'%d/%m/%Y') <= '$salida'";
  120.        
  121.     }
  122.     if ( ($empresa!="TODOS") )
  123.     {
  124.         //$sql.=" AND empleados.empresa = '$empresa' ";
  125.         $sql.=" AND empresa = '$empresa' ";
  126.        
  127.     }
  128.     //$sql.=" ORDER BY registros.entrada1";
  129.     $sql.=" ORDER BY cedula";
  130.     mysql_select_db($database_Sistema, $Sistema);
  131.     $auditoria = mysql_query($sql, $Sistema) or die(mysql_error());
  132.     $rowauditoria = mysql_fetch_assoc($auditoria);
  133.     $total= mysql_num_rows($auditoria);
  134.     if ($total!=0)
  135.     {      
  136.         //Listado trabajadores con ID
  137.         $aTrabajadores=array();
  138.         $nomTrabajadores=array();
  139.         do
  140.         {
  141.             $ced=$rowauditoria['cedula'];
  142.             $nom=$rowauditoria['nombres'];
  143.             array_push($aTrabajadores,$ced);
  144.             array_push($nomTrabajadores,$nom);
  145.            
  146.         }
  147.         while ($rowauditoria = mysql_fetch_assoc($auditoria));
  148.         //se crea el constructor
  149.         $const = new claseTablaDias;
  150.         //se ingresan los datos, fecha de incio, fecha de termino, array de trabajadores
  151.         $const->validarDatos($entrada,$salida,$aTrabajadores,$nomTrabajadores);
  152.     }
  153.     else
  154.     {
  155.         //No Hay resultados
  156.         ?>
  157.         <table width="100%" border="0">
  158.             <tr>
  159.                 <td align="center"><img src="Imagenes/Banner.gif"></td>
  160.             </tr>
  161.             <tr>
  162.                 <td align="center"><p style="font-family:Arial, Helvetica, sans-serif; color:FF0000; font-size:18px;">
  163.                 No Hay Resultados con este Criterio de Busqueda                
  164.                 </p>
  165.                 </td>
  166.             </tr>
  167.         </table>
  168.         <?PHP
  169.     }
  170. }
  171. else
  172. {
  173.     redir('./control.php?code=001');
  174. }
  175.  
  176. ?>