Foros del Web » Programando para Internet » PHP »

MySQL eliminar últimos 2 carácteres de una cadena

Estas en el tema de MySQL eliminar últimos 2 carácteres de una cadena en el foro de PHP en Foros del Web. Hola a todos, tengo un problema con una consulta en mysql, para una página hecha en php. Es esto, yo tengo un campo que se ...
  #1 (permalink)  
Antiguo 21/10/2011, 13:53
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Información MySQL eliminar últimos 2 carácteres de una cadena

Hola a todos, tengo un problema con una consulta en mysql, para una página hecha en php.

Es esto, yo tengo un campo que se llama HORREGASIS en donde almaceno la hora con 6 carácteres del tipo varchar, maracandome la hora, minutos y segundos, como le puedo hacer para que eliminar los segundos y quedarme solo con la cadena de horas y minutos, es decir, eliminar los últimos 2 carácteres de mi cadena, agradezco mucho su ayuda de antemano...
  #2 (permalink)  
Antiguo 21/10/2011, 13:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

si lo quieres hacer desde mysql lo desconozco, pero si lo quieres hacer con php, usando la función substr()

$hora=substr($fila["HORREGASIS"],-2);
  #3 (permalink)  
Antiguo 21/10/2011, 14:04
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Orale muchas gracias, no importa desde donde sea mientras funcione, supongo que solo se puede hacer desde php, gracias por tu respuesta, lo probaré :p...
  #4 (permalink)  
Antiguo 21/10/2011, 14:09
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Una pregunta, que viene siendo la variable $fila??...
  #5 (permalink)  
Antiguo 21/10/2011, 14:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

$fila es la fila ($row) que obtengas de tu consulta. A falta de código tuyo, no puedo ejemplificar con tus variables.
  #6 (permalink)  
Antiguo 21/10/2011, 14:20
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Guardas un dato de hora, en un campo varchar??? por que¿?
Por que no cambias ese campo a datetime? o mejor, timestamp ¿?¿?¿?
  #7 (permalink)  
Antiguo 21/10/2011, 14:21
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 10 meses
Puntos: 21
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

$cadena1=substr('cadenadecaracteres',0,10); //devuelveuna cadena con 10 espacios
$cadena2=susbtr('cadenadecaracteres',-2); //devuelve los dos ultimos caracteres

cualquier cosa revisar el manual de substr no vendría mal ;)
  #8 (permalink)  
Antiguo 21/10/2011, 14:27
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Ah ok, pues mira lo estoy haciendo esto para la generación de un pdf, aquí te dejo la parte del código donde esta la consulta, y dónde supongo y se tiene que hacer el cambio en la variable HORREGASIS...

Código PHP:
Ver original
  1. $hora=substr($fila["HORREGASIS"],-2);
  2. if (!empty($fechaIni) && !empty($fechaFin)) {
  3.         $resultado=mysql_query("SELECT RPEREGASIS, FECREGASIS, MIN($hora) AS entrada, MAX($hora) as salida
  4.        FROM registro WHERE RPEREGASIS LIKE 'TE%' AND FECREGASIS BETWEEN '$Inicio' AND '$Final' GROUP BY RPEREGASIS, FECREGASIS LIMIT 0,10");
  5.  
  6. $ixx = 0;
  7. while($datatmp = mysql_fetch_assoc($resultado)) {
  8.     $ixx = $ixx+1;
  9.     $data[] = array_merge($datatmp, array('id'=>$ixx));
  10. }
  11. $titles = array(
  12.                 'id'=>'<b>Id</b>',
  13.                 'RPEREGASIS'=>'<b>RPE del Empleado</b>',
  14.                 'FECREGASIS'=>'<b>Fecha</b>',
  15.                 'entrada'=>'<b>Hora de Entrada</b>',
  16.                 'salida'=>'<b>Hora de Salida</b>'
  17. );
  #9 (permalink)  
Antiguo 21/10/2011, 14:29
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

No cambio el tipo de dato, por que ya esta hecha la base de datos en donde estoy haciendo mis residencias y por lo tanto no puedo cambiarlo ... Gracias por sus respuestas...
  #10 (permalink)  
Antiguo 27/10/2011, 08:41
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Pues lo puse así leí el manual, pero no se dónde colocar esta línea, según lo que leí esta bien la función:

Código PHP:
Ver original
  1. $hora1=substr($resultado["entrada"],0,-2);

Este es la parte del código donde hago la consulta e imprimo los registros:

Código PHP:
Ver original
  1. if (!empty($fechaIni) && !empty($fechaFin)) {
  2.         $resultado=mysql_query("SELECT RPEREGASIS, FECREGASIS, MIN(HORREGASIS) AS entrada, MAX(HORREGASIS) as salida
  3.        FROM registro WHERE RPEREGASIS LIKE 'TE%' AND FECREGASIS BETWEEN '$Inicio' AND '$Final' GROUP BY RPEREGASIS, FECREGASIS LIMIT 0,20");
  4. $ixx = 0;
  5. while($datatmp = mysql_fetch_assoc($resultado)) {
  6.     $hora1=substr($resultado["entrada"],0,-2);
  7.     $ixx = $ixx+1;
  8.     $data[] = array_merge($datatmp, array('id'=>$ixx));
  9. }
  10. $titles = array(
  11.                 'id'=>'<b>Id</b>',
  12.                 'RPEREGASIS'=>'<b>RPE del Empleado</b>',
  13.                 'FECREGASIS'=>'<b>Fecha</b>',
  14.                 $hora1=>'<b>Hora de Entrada</b>',
  15.                 'salida'=>'<b>Hora de Salida</b>'
  16. );
  17. $options = array(
  18.                 'shadeCol'=>array(0.9,0.9,0.9),
  19.                 'xOrientation'=>'center',
  20.         'fontSize'=>8,
  21.                 'width'=>700,
  22.         'colGap'=>2,
  23.                 'xPos'=>'centre',
  24. );

Pero no me sale... Agradezco su ayuda!!!...
  #11 (permalink)  
Antiguo 27/10/2011, 09:36
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 10 meses
Puntos: 21
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Código PHP:
    $hora1=substr($resultado["entrada"],0,-2);  //<--- Esta variable....
             
$data[] = array_merge($datatmp, array('id'=>$ixx));//<--- .... la variable $hora1 tiene que mezclarse aquí 
Deberías hacer algo así
Código PHP:
          $datatmp["entrada"]=substr($datatmp["entrada"],0,-2);//modificas la cadena de caracteres con la misma variable
          
$data[] = array_merge($datatmp, array('id'=>$ixx));//y luego unes al array 
  #12 (permalink)  
Antiguo 27/10/2011, 09:55
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: MySQL eliminar últimos 2 carácteres de una cadena

Woooow!!! Muchísimas gracias!!! Funciona a la perfección... Este es el código que funciona...

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>

De nuevo mil gracias!!!...

Etiquetas: caracacteres, eliminacion, mysql, mysql+php
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:46.