Foros del Web » Programando para Internet » PHP »

un registro en php con 2 en mysql

Estas en el tema de un registro en php con 2 en mysql en el foro de PHP en Foros del Web. No se si lo que yo busco se hace en php o en mysql... pues veran estoy haciendo un sistema de control de entrada y ...
  #1 (permalink)  
Antiguo 23/11/2011, 15:03
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
un registro en php con 2 en mysql

No se si lo que yo busco se hace en php o en mysql...

pues veran estoy haciendo un sistema de control de entrada y salida de personal para la empresa donde trabajo...

ahora todos sabemos que el persona tiene 2 entradas y 2 salidas

Al llegar, al ir a comer, al venir de comer, al salir...

y bueno partiendo de eso yo en mysql creee una tabla con CEDULA,ENTRADA,SALIDA...

en entrada y salida se guarda la fecha y hora en la que se registran.

ahora en el reporte yo hago esta consulta:

SELECT registros.cedula,empleados.nombres,DATE_FORMAT(reg istros.entrada,'%d/%m/%Y, %r') as entrada,DATE_FORMAT(registros.salida,'%d/%m/%Y, %r') as salida,empleados.empresa as nomina,registros.empresa FROM registros INNER JOIN empleados ON registros.cedula=empleados.cedula WHERE registros.cedula>0

y en el reporte el obiamente para cada trabajador se generan 2 registros y quiero que en el reporte podes tener:

CEDULA, NOMBRE, DATOENTRADA,DATOSALIDA,DATOENTRADA,DATOSALIDA.

para solo generar una sola linea... es posible hacer eso sin tener que modificar la tabla?
  #2 (permalink)  
Antiguo 23/11/2011, 15:40
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: un registro en php con 2 en mysql

Técnicamente sí, aunque es un poco de desperdicio el tener dos registros diferentes para el mismo día por empleado.

Puedes hacer un bucle (while) para recorrer los datos de myql ordenados por fecha de forma ascendente (entrada salida 1, entrada salida 2) y "dibujar" una tabla con una fila por cada dos registros que leas de tu consulta.
  #3 (permalink)  
Antiguo 23/11/2011, 15:46
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: un registro en php con 2 en mysql

Cita:
Iniciado por ocp001a Ver Mensaje
Técnicamente sí, aunque es un poco de desperdicio el tener dos registros diferentes para el mismo día por empleado.

Puedes hacer un bucle (while) para recorrer los datos de myql ordenados por fecha de forma ascendente (entrada salida 1, entrada salida 2) y "dibujar" una tabla con una fila por cada dos registros que leas de tu consulta.
me podrias decir como hacerlo? darme una idea porque no tengo mucha idea.
  #4 (permalink)  
Antiguo 23/11/2011, 15:54
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: un registro en php con 2 en mysql

Necesitas poner algo de código de lo que has hecho, ya que así a pláticas nada más es difícil ayudarte.
  #5 (permalink)  
Antiguo 23/11/2011, 15:57
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: un registro en php con 2 en mysql

Código PHP:
Ver original
  1. <?PHP require_once('Connections/Sistema.php'); ?>
  2. <?PHP
  3. $mensaje="nada";
  4. date_default_timezone_set('America/Caracas');
  5. $ahora=date('Y-m-d H:i:s');
  6.  
  7.  
  8. $logueoform = $_SERVER['PHP_SELF'];
  9. if (isset($accesscheck)) {
  10.   $GLOBALS['PrevUrl'] = $accesscheck;
  11.   session_register('PrevUrl');
  12. }
  13.  
  14. $cedula = "-1";
  15. if ((isset($_POST["usuario"])) && ($_POST["usuario"] == "loguear"))
  16. {
  17.  
  18.     if ((($_POST["cedula"])!=NULL))
  19.     {
  20.         /*Busco la Cedula en la Tabla de Empleados*/
  21.         $numcedula = (get_magic_quotes_gpc()) ? $_POST['cedula'] : addslashes($_POST['cedula']);
  22.         mysql_select_db($database_Sistema, $Sistema);
  23.         $buscarcedulasql = sprintf("SELECT cedula,nombres FROM empleados WHERE cedula = '%s'", $numcedula);
  24.         $cedula = mysql_query($buscarcedulasql, $Sistema) or die("Error de la Consulta: ".mysql_error());
  25.         $row = mysql_fetch_assoc($cedula);
  26.         $resultado = mysql_num_rows($cedula);
  27.         if ($resultado!=0)
  28.         {
  29.             //La Cedula si Esta en la BD
  30.             // Procedo a Agregar el Registro
  31.             //Busco si Posee una salida NULA
  32.             $nombre=$row['nombres'];
  33.             mysql_select_db($database_Sistema, $Sistema);
  34.             $buscarsql = sprintf("SELECT ID FROM registros WHERE cedula = '%s' AND salida='0000-00-00 00:00:00'", $numcedula);
  35.             $busca = mysql_query($buscarsql, $Sistema) or die("Error de la Consulta: ".mysql_error());
  36.             $totalbusca = mysql_num_rows($busca);
  37.             $row = mysql_fetch_assoc($busca);
  38.             if ($totalbusca!=0)
  39.             {
  40.                 $id=$row['ID'];
  41.                 mysql_select_db($database_Sistema, $Sistema);
  42.                 //si hay un registro con esa cedula sin Salida, la agrego como Salida...
  43.                 $salidasql = sprintf("UPDATE registros set salida = '%s' WHERE salida='0000-00-00 00:00:00' AND ID = '%s'", $ahora,$id);
  44.                 $salida = mysql_query($salidasql, $Sistema) or die("Error de la Consulta: ".mysql_error());
  45.                 if ($salida)
  46.                 {
  47.                     //Salida Agregada....
  48.                     $hoy=date('h:i:s A');
  49.                     $mensaje="<img src=\"Imagenes/validacion.png\" align=\"middle\">&nbsp;<b><font color=\"#006600\">Empleado: <font color=\"#000000\">$nombre</font>, su <font color=\"#000000\">Salida</font> Fue A&ntilde;adida Exitosamente a las <font color=\"#000000\">$hoy.</font></font><b>";
  50.                 }
  51.                 else
  52.                 {
  53.                     $mensaje="<img src=\"Imagenes/exclamacion.png\" align=\"middle\">&nbsp;<b><font color=\"#FF0000\">Ha Ocurrido un Error al Actualizar la <font color=\"#000000\">Salida</font></font>";
  54.                 }
  55.             }
  56.             else
  57.             {
  58.                 //No tiene Salida agrego la Entrada de forma normal
  59.                 mysql_select_db($database_Sistema, $Sistema);
  60.                 $hoy=date('h:i:s A');
  61.                 $sql = sprintf("INSERT INTO registros (cedula,entrada,salida,empresa) VALUES ('%s','%s','0000-00-00 00:00:00','%s')", $numcedula,$ahora,$_SESSION['TIENDA']);
  62.                 $registro = mysql_query($sql, $Sistema) or die("Error de la Consulta: ".mysql_error());
  63.                 if ($registro)
  64.                 {
  65.                     $mensaje="<img src=\"Imagenes/validacion.png\" align=\"middle\">&nbsp;<b><font color=\"#006600\">Empleado: <font color=\"#000000\">$nombre</font>, su <font color=\"#000000\">Entrada</font> Fue A&ntilde;adida Exitosamente a las <font color=\"#000000\">$hoy.</font></font><b>";
  66.                 }
  67.                 else
  68.                 {
  69.                     $mensaje="<img src=\"Imagenes/exclamacion.png\" align=\"middle\">&nbsp;<b><font color=\"#FF0000\">Ha Ocurrido un Error al Registrar la <font color=\"#000000\">Entrada</font></font>";
  70.                 }
  71.             }          
  72.         }
  73.         else
  74.         {
  75.             //La Cedula no Aparece
  76.             $mensaje="<img src=\"Imagenes/error.png\" align=\"middle\">&nbsp;<b><font color=\"#FF0000\">La cedula: <font color=\"#000000\">$numcedula</font> No Aparece en Nuestra Base de Datos!</font>";
  77.         }
  78.     }
  79.     else
  80.     {
  81.         $mensaje="<img src=\"Imagenes/informacion.png\" align=\"middle\">&nbsp;<b><font color=\"#FF0000\">Por Favor ingrese una Cedula!</font>";
  82.     }
  83. }
  84. if ($_SESSION['ID'] != 0 && $_SESSION['TIENDA']!="NINGUNO")
  85. {
  86. ?>
  87. <div id="Tienda"><img src="Imagenes/candado.png"></div>
  88. <p class="Texto">Coloque su n&uacute;mero de C&eacute;dula, para agregar su control de Entrada y/o Salida </p>
  89. <form action="<?PHP echo $logueoform; ?>" method="post" name="Usuario">
  90.     <table width="600" border="0" cellspacing="0" cellpadding="0">
  91.         <tr height="50">
  92.             <td><p class="Etiqueta">C&eacute;dula de Identidad : </p></td>
  93.             <td> <input style="font-size:18px" class="campo" name="cedula" type="text" id="cedula" maxlength="10" size="40"></td>
  94.         </tr>
  95.     </table>
  96.     <p>
  97.     <input name="Enviar" type="submit" value="Entrar">
  98.     &nbsp;&nbsp;
  99.     <input type="hidden" name="usuario" value="loguear">
  100.     </p>
  101. </form>
  102. <?PHP
  103. if ($mensaje!="nada")
  104. {
  105. ?>
  106.     <table id="TextoError" border="0">
  107.         <tr>
  108.             <td height="70" valign="middle"><?PHP echo $mensaje; ?></td>
  109.         </tr>
  110.     </table>
  111.     <p>&nbsp;</p>
  112. <?PHP
  113. }
  114. }
  115. else
  116. {
  117.     redir('./control.php?code=001');
  118. }
  119. ?>

asi inserto los datos.... en el reporte hago:

Código PHP:
Ver original
  1. <?PHP
  2. require_once('Connections/Sistema.php');
  3. if ($_SESSION['ID'] != 0 && $_SESSION['TIENDA']!="NINGUNO")
  4. {
  5.     if (isset($_GET['entrada']))
  6.     {
  7.       $entrada=escape($_GET['entrada']);
  8.     }
  9.     if (isset($_GET['salida']))
  10.     {
  11.       $salida=escape($_GET['salida']);
  12.     }
  13.     if (isset($_GET['empresa']))
  14.     {
  15.       $empresa=escape($_GET['empresa']);
  16.     }
  17.     $sql = "SELECT registros.cedula,empleados.nombres,DATE_FORMAT(registros.entrada,'%d/%m/%Y, %r') as entrada,DATE_FORMAT(registros.salida,'%d/%m/%Y, %r') as salida,empleados.empresa as nomina,registros.empresa FROM registros INNER JOIN empleados ON registros.cedula=empleados.cedula WHERE registros.cedula>0";
  18.     if ( ($entrada!=NULL) )
  19.     {
  20.         $sql.=" AND DATE_FORMAT (registros.entrada,'%d/%m/%Y') >= '$entrada'";
  21.        
  22.     }
  23.     if ( ($salida!=NULL) )
  24.     {
  25.         $sql.=" AND DATE_FORMAT (registros.salida,'%d/%m/%Y') <= '$salida'";
  26.        
  27.     }
  28.     if ( ($empresa!="TODOS") )
  29.     {
  30.         $sql.=" AND empleados.empresa = '$empresa' ";
  31.        
  32.     }
  33.     $sql.=" ORDER BY registros.entrada";
  34.     mysql_select_db($database_Sistema, $Sistema);
  35.     $auditoria = mysql_query($sql, $Sistema) or die(mysql_error());
  36.     $total= mysql_num_rows($auditoria);
  37.     if ($total!=0)
  38.     {      
  39.         ini_set('max_execution_time', 300);
  40.         ini_set('memory_limit','32M');
  41.         require_once('./Scripts/pdfClassesAndFonts_009e/class.ezpdf.php');
  42.         //$pdf =& new Cezpdf('a4');
  43.         $pdf =& new Cezpdf('letter','landscape');
  44.         $pdf->selectFont('./Scripts/pdfClassesAndFonts_009e/fonts/Helvetica.afm');
  45.         $pdf->ezSetCmMargins(2,2,2,2);
  46.            
  47.         $ixx = 1;
  48.         while($row = mysql_fetch_assoc($auditoria))
  49.         {
  50.             $data[] = array_merge($row, array('num'=>$ixx));
  51.             $ixx = $ixx+1;
  52.         }
  53.         $titles = array(
  54.         'num'=>'<b>#</b>',
  55.         'cedula'=>'<b>Cedula</b>',
  56.         'nombres'=>'<b>Nombres</b>',
  57.         'entrada'=>'<b>Datos de Entrada</b>',
  58.         'salida'=>'<b>Datos de Salida</b>',
  59.         'nomina'=>'<b>Nomina</b>',
  60.         'empresa'=>'<b>Empresa</b>',
  61.         );
  62.         $options = array(
  63.         'shadeCol'=>array(0.9,0.9,0.9),
  64.         'xOrientation'=>'center',
  65.         'width'=>750
  66.         );
  67.         date_default_timezone_set('America/Caracas');
  68.         $hora=date("d/m/Y h:i:s A");
  69.         $txttit = "<b>Control de Entrada y Salida del Personal</b>\n\n";
  70.         $pdf->ezImage("./Imagenes/Banner.jpg", -40, 0, 'none', 'none');
  71.         $pdf->ezText($txttit,14,array('justification'=>'center'));
  72.         $pdf->ezTable($data, $titles, '', $options);
  73.         $pdf->ezText("\n\n<b>Fecha y Hora de Impresion:</b> ".$hora."\n\n", 10);
  74.         ob_end_clean();
  75.         $pdf->ezStream();
  76.     }
  77.     else
  78.     {
  79.         //No Hay resultados
  80.         ?>
  81.         <table width="100%" border="0">
  82.             <tr>
  83.                 <td align="center"><img src="Imagenes/Banner.gif"></td>
  84.             </tr>
  85.             <tr>
  86.                 <td align="center"><p style="font-family:Arial, Helvetica, sans-serif; color:FF0000; font-size:18px;">
  87.                 No Hay Resultados con este Criterio de Busqueda                
  88.                 </p>
  89.                 </td>
  90.             </tr>
  91.         </table>
  92.         <?PHP
  93.     }
  94. }
  95. else
  96. {
  97.     redir('./control.php?code=001');
  98. }
  99.  
  100. ?>
  #6 (permalink)  
Antiguo 23/11/2011, 16:08
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: un registro en php con 2 en mysql

si haces un select por fecha y por cedula tecnicamente tendrias dos registros


Código:
+----------+-------------+
Nombre       Entrada
+----------+-------------+
pedro        5pm
+----------+-------------+
pedro        8am
+----------+-------------+
en array que devuelve los resultados puedes llamarlos por el indice.
  #7 (permalink)  
Antiguo 23/11/2011, 16:14
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: un registro en php con 2 en mysql

como asi no te entendi :S

Etiquetas: mysql, registro, tabla
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 09:35.