Foros del Web » Programando para Internet » PHP »

Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Estas en el tema de Mandar mensaje a una tabla en mysql y php con registro repetido!!! en el foro de PHP en Foros del Web. Hola a todos!!! Pues verán, tengo un problema con una tabla que se genera en un pdf, en base a mysql y php, en ella ...
  #1 (permalink)  
Antiguo 27/10/2011, 11:59
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 1
Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Hola a todos!!! Pues verán, tengo un problema con una tabla que se genera en un pdf, en base a mysql y php, en ella tengo en las dos ultimas columnas dos datos: la hora de entrada y la hora de salida de un empleado, pero hay ocasiones en que un empleado solo tiene registrada una hora, y bueno en mi tabla imprimo la misma hora en la "hora de entrada" y la "hora de salida". Cómo podría hacer, para que cuando solo se registre una hora esta la ponga en la hora de entrada y en el campo de hora de salida me ponga un mensaje como por ejemplo: "Sin salida"... Esta es el código

Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL & ~E_NOTICE);
  3. function js2PhpTime($jsdate){
  4. if(preg_match('@(\d+)/(\d+)/(\d+)\s+(\d+):(\d+)@', $jsdate, $matches)==1)
  5. {
  6. $ret = mktime($matches[4], $matches[5], 0, $matches[1], $matches[2], $matches[3]);
  7. }
  8. else if(preg_match('@(\d+)/(\d+)/(\d+)@', $jsdate, $matches)==1){
  9.     $ret = mktime(0, 0, 0, $matches[1], $matches[2], $matches[3]);
  10.   }
  11.   return $ret;
  12. }
  13.         $fechaIni=$_POST['fechaIni'];
  14.         $fechaFin=$_POST['fechaFin'];
  15.  
  16.         $conectar=mysql_connect('localhost','root','');
  17.         if($conectar==NULL)
  18.         {
  19.             printf("Error al conectar a la Base de datos");
  20.         }
  21.  
  22. require_once('class.ezpdf.php');
  23. $pdf = new Cezpdf('LETTER','landscape');
  24. $pdf->selectFont('../fonts/Helvetica.afm');
  25. $pdf->ezSetCmMargins(1,1,1.5,1.5);
  26. $pdf->ezSetMargins(40,45,30,30);
  27. $fechs = date("d/m/y");
  28. $pdf->line(20,30,750,30);
  29. $pdf->line(20,585,750,585);
  30. $texto='Comisión Federal de Electricidad - Control de Asistencias';
  31. $tex = mb_convert_encoding($texto, 'ISO-8859-1', 'UTF-8');
  32. $pdf->addText(20,590,10,$tex);
  33. $texto2='Oficina de Informática - Subgerencia de Trabajo';
  34. $tex2 = mb_convert_encoding($texto2, 'ISO-8859-1', 'UTF-8');
  35. $pdf->addText(535,590,10,$tex2);
  36. $pdf->addText(20,18,10,$fechs);
  37. $pdf->ezStartPageNumbers(750,20,12,'','{PAGENUM} de {TOTALPAGENUM}',1);
  38. $Inicio=date("Y-m-d", js2PhpTime($fechaIni));
  39. $Final=date("Y-m-d", js2PhpTime($fechaFin));
  40. if (!empty($fechaIni) && !empty($fechaFin)) {
  41.         $resultado=mysql_query("SELECT RPEREGASIS, FECREGASIS, MIN(HORREGASIS) AS entrada, MAX(HORREGASIS) as salida
  42.        FROM registro WHERE RPEREGASIS LIKE 'TE%' AND FECREGASIS BETWEEN '$Inicio' AND '$Final' GROUP BY RPEREGASIS, FECREGASIS LIMIT 0,20");
  43.        
  44.         $ixx = 0;
  45. while($datatmp = mysql_fetch_assoc($resultado)) {
  46.     $ixx = $ixx+1;
  47.      $datatmp["entrada"]=substr($datatmp["entrada"],0,-2);
  48.      $datatmp["salida"]=substr($datatmp["salida"],0,-2);
  49.     $data[] = array_merge($datatmp, array('id'=>$ixx));
  50.        
  51.  
  52. }
  53.  
  54. $titles = array(
  55.                 'id'=>'<b>Id</b>',
  56.                 'RPEREGASIS'=>'<b>RPE del Empleado</b>',
  57.                 'FECREGASIS'=>'<b>Fecha</b>',
  58.                 'entrada'=>'<b>Hora de Entrada</b>',
  59.                 'salida'=>'<b>Hora de Salida</b>'
  60. );
  61. $options = array(
  62.                 'shadeCol'=>array(0.9,0.9,0.9),
  63.                 'xOrientation'=>'center',
  64.         'fontSize'=>8,
  65.                 'width'=>700,
  66.         'colGap'=>2,
  67.                 'xPos'=>'centre',
  68. );
  69. $txttit.="<b>Reporte:</b>\n";
  70. $txttit.= "Asistencia de Empleados \n";
  71. $pdf->ezText($txttit, 12);
  72. $pdf->ezText($data, 12);
  73. $pdf->ezTable($data, $titles, '', $options);
  74. $pdf->ezText("\n\n\n", 10);
  75. //$pdf->ezText("<b>Fecha:</b> ".date("d/m/Y"), 10);
  76. $pdf->ezStream();
  77. }
  78.  
  79. else{
  80. header("Location: PDFDefault.php");
  81. }
  82. ?>
  83. </body>
  84. </html>

Lo pienso de esta manera pero no funciona n_n...

Código PHP:
Ver original
  1. if($datatmp['entrada']==$datatmp['salida'])
  2.     $salida="Sin salida";
  3. else
  4.     $salida=$datatmp['salida'];

pero pues no se como especificarle que imprima $salida si es igual la hora o 'salida' si es diferente ...

Última edición por stuart_david3; 27/10/2011 a las 12:13
  #2 (permalink)  
Antiguo 27/10/2011, 12:15
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Hola que tal.

Lo que se me ocurre de manera rapida y eficiente es que guardes cada hora en una variable diferente ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $entrada = 'algo';
  3. $salida = '';
  4.  
  5. //para validar si existe una hora de salida puedes usar empty
  6.  
  7. if( (!empty($salida)) ){
  8.      echo $salida;
  9. }else{
  10.      echo 'Sin salida';
  11. }
  12.  
  13. ?>

este es solo un ejemplo, pueder hacer muchos más.

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 27/10/2011, 12:19
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

por lo que entiendo, $datatmp['entrada'] y $datatmp['salida'] nunca serán iguales a menos que el empleado no se presente a trabajar porque así los 2 estarán vacíos(o algún valor por default), de lo contrario siempre uno tendrá valor a menos que cuando se registre guardes la hora de llegada en una variable y luego la ingreses a la tabla en ambos campos, esto con el fin de que si no registra su salida si tendrán el mismo valor.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #4 (permalink)  
Antiguo 27/10/2011, 12:25
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Hola, gracias skiper0125 Ahm tal vez me explique mal, mira en mi tabla original tengo una sola columna (HORREGASIS) para las horas, de esa misma columna para cada trabajador por decirlo así tengo una, dos (es lo ideral) o más registros (horas), si son más de una, de ese mismo campo tomo mediante la consulta en mysql el minimo y el maximo, para determinar en las variables 'entrada' y 'salida' las horas de entrada y salida del trabajador, ahora cuando en la columna original (HORREGASIS) solo tengo una, mis dos "nuevos campos" de mysql pues se llenan con la misma, por eso es que no puedo crear una variable aparte, bueno hasta ahora no creo que se pueda ya que trabajo con las que cree dentro de la consulta mysql... Gracias de nuevo...
  #5 (permalink)  
Antiguo 27/10/2011, 12:25
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Concéntrate en esta parte del código...
Código PHP:
Ver original
  1. while($datatmp = mysql_fetch_assoc($resultado)) {
  2.     $ixx = $ixx+1;
  3.      $datatmp["entrada"]=substr($datatmp["entrada"],0,-2);
  4.      $datatmp["salida"]=substr($datatmp["salida"],0,-2);
  5.     $data[] = array_merge($datatmp, array('id'=>$ixx));
  6.  }

Va a quedar más o menos algo así...

Código PHP:
Ver original
  1. while($datatmp = mysql_fetch_assoc($resultado)) {
  2.     $ixx = $ixx+1;
  3.      $datatmp["entrada"]=substr($datatmp["entrada"],0,-2);
  4.      $datatmp["salida"]=substr($datatmp["salida"],0,-2);
  5.      if($datatmp["salida"]=='')
  6.      {
  7.           $datatmp["salida"]='Sin salida";
  8.     }
  9.    $data[] = array_merge($datatmp, array('id'=>$ixx));
  10. }

Las modificaciones las tienes que hacer antes del array_merge() a la variable $datatmp
  #6 (permalink)  
Antiguo 27/10/2011, 12:28
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Ahm tal vez me explique mal, mira en mi tabla original tengo una sola columna (HORREGASIS) para las horas, de esa misma columna para cada trabajador por decirlo así tengo una, dos (es lo ideral) o más registros (horas), si son más de una, de ese mismo campo tomo mediante la consulta en mysql el minimo y el maximo, para determinar en las variables 'entrada' y 'salida' las horas de entrada y salida del trabajador, ahora cuando en la columna original (HORREGASIS) solo tengo una, mis dos "nuevos campos" de mysql pues se llenan con la misma, por eso es que no puedo crear una variable aparte, bueno hasta ahora no creo que se pueda ya que trabajo con las que cree dentro de la consulta mysql... Gracias de nuevo Sirrohan, eits y skiper0125...
  #7 (permalink)  
Antiguo 27/10/2011, 12:33
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Gracias a todos por sus respuestas, en base a lo que me dijo Sirrohan solo tuve que hacer la comparación de la salida con la entrada y gracias a Dios ya quedo... aquí les dejo el código, de nuevo un millón de gracias:

Código PHP:
Ver original
  1. while($datatmp = mysql_fetch_assoc($resultado)) {
  2.     $ixx = $ixx+1;
  3.      $datatmp["entrada"]=substr($datatmp["entrada"],0,-2);
  4.      $datatmp["salida"]=substr($datatmp["salida"],0,-2);
  5.      if($datatmp["salida"]==$datatmp["entrada"])
  6.      {
  7.           $datatmp["salida"]="Sin salida";
  8.      }
  9.     $data[] = array_merge($datatmp, array('id'=>$ixx));
  10.        
  11.  
  12. }
  #8 (permalink)  
Antiguo 27/10/2011, 12:36
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Bueno una última cosa, esto ya es extra, si sale estaría excelente, es una duda, si por ejemplo en lugar de querer mandar el mensaje de "sin salida" pudiera mandar el de "sin entrada", esto solo cuando por ejemplo la hora se mayor a las 1400 (2 de la tarde) supongo que sería otro if para entrada no??... Bueno lo intentaré agradecería si me dieran alguna idea, de nuevo gracias...

Hice esto pero solo me logra comparar el primer if, si es menor de 1400 no me da el mensaje de "sin registro de salida" ...

Código PHP:
Ver original
  1. if($datatmp["salida"]==$datatmp["entrada"]&& $datatmp["entrada"]>="1400")
  2.      {
  3.           $datatmp["entrada"]="Sin registro de entrada";
  4.      if($datatmp["salida"]==$datatmp["entrada"] && $datatmp["entrada"]<"1400")
  5.      {
  6.           $datatmp["salida"]="Sin registro de salida";
  7.      }

Última edición por stuart_david3; 27/10/2011 a las 12:45
  #9 (permalink)  
Antiguo 27/10/2011, 12:58
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Mandar mensaje a una tabla en mysql y php con registro repetido!!!

Bueno solo era error al cerrar el if, y ya gracias a Dios funciona, aquí esta el código, (me estuve contestando solo n_n) En serio que agradezco mucho su ayuda...

Código PHP:
Ver original
  1. if($datatmp["salida"]==$datatmp["entrada"]&& $datatmp["entrada"]>="1400")
  2.      {
  3.           $datatmp["entrada"]="Sin registro de entrada";
  4.      }
  5.      if($datatmp["salida"]==$datatmp["entrada"] && $datatmp["entrada"]<"1400")
  6.      {
  7.           $datatmp["salida"]="Sin registro de salida";
  8.      }

Etiquetas: mysql, registro
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 18:45.