Foros del Web » Programando para Internet » PHP »

Representación de una fecha guardada en una base de datos

Estas en el tema de Representación de una fecha guardada en una base de datos en el foro de PHP en Foros del Web. ¡Hola compañeros! Tengo una duda que seguro que ya le surgió a alguno de vosotros alguna vez. Mi idea es hacer un tablón (vamos, una ...
  #1 (permalink)  
Antiguo 25/08/2005, 11:07
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta Representación de una fecha guardada en una base de datos

¡Hola compañeros!



Tengo una duda que seguro que ya le surgió a alguno de vosotros alguna vez.

Mi idea es hacer un tablón (vamos, una especie de libro de visitas). Cuyos campos son ID_reg (autonumérico por lo que no se utiliza en el formulario), usuario (texto), mail (texto) y mensaje (texto), así como la fecha (timestamp). Así está declarado en la base de datos.

El problema viene a la hora de representar la fecha. Cuando se inserta un registro, automáticamente se inserta la fecha y hora todo junto: 20050808134658 por ejemplo. El problema lo tengo al intentar separar la fecha y utilizar los formatos de representación.



El código que tengo es el siguiente:

Código PHP:
 
<?php 
 
$sql
="SELECT * FROM tablon ORDER BY fecha"//Selecciono todos los campos de la tabla tablón ordenados por el campo fecha.
 
$resultado=mysql_query($sql$dbd); //Ejecuto la consulta. El resultado me queda guardado en el array resultado.
 
 
 
if (!$resultado)
 
            die (
"<h2 class='fondoazul letrablanca'> *** ERROR en la b&uacute;squeda: ".mysql_error()."</h2>");
 
?>
 
 
 
 
 
<table width="98%" border="0" align="center" cellpadding="2" cellspacing="2" >
 
<?php 
 
while($registro mysql_fetch_array($resultadoMYSQL_ASSOC)) //recorro el array
 
?>
 
<tr class="azulclaro"> 
 
    <td width="74%" class="azulclaro">Usuario: <?php echo $registro['usuario']?>//muestro el usuario</td>
 
    <td width="26%" class="azulclaro">Fecha: <?php $data=$registro['fecha']; echo date("d-m-Y"time());?>//Aquí muestro la fecha</td>
 
</tr>
 
<tr> 
 
    <td colspan="2"><?php echo $registro['mensaje']?></td>
 
</tr>
 
<?php }
 
?>
 
</table>


Donde muestro la fecha ahora aparece como date("d-m-Y", time()) y así me muestra correctamente la fecha de hoy: 25-08-2005. Pero lo que a mi me interesa es poner la fecha que tengo guardada en la base de datos, poniendo en lugar de time(), la variable $data, y esto es lo que me devuelve por alguna inexplicable razón: 19-01-2038



Os agradecería en el alma que me echaseis una mano porque ciertamente ya no se que más probar. Gracias por adelantado :)
  #2 (permalink)  
Antiguo 25/08/2005, 11:12
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
y la fecha q tendria q sacar es del año 2004, no?

esa es la fecha hasta la cual hay 20050808134658 segundos a partir de hoy.

xq no utilizas campo DATE?
__________________
php user ;)
  #3 (permalink)  
Antiguo 25/08/2005, 11:16
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Hola compositor!

La respuesta es no. 20050808134658 es la fecha y hora todo junto 2005-08-08 13:46:58 y lo que yo quiero es utilizar esa representación.
Si te fijas en mi código, sí utilizo la función date(), e incluso digo que me da una fecha errónea si leo la variable que contiene la información de la base de datos.
Espero haberme explicado un poco mejor :)
  #4 (permalink)  
Antiguo 25/08/2005, 11:27
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
jaaj vale perdon xDDDD es verda :p
joe entonces ni idea. Se q existe una funcion para contar caracteres de una cadena y to eso.

lo siento, salu2 !
__________________
php user ;)
  #5 (permalink)  
Antiguo 25/08/2005, 11:49
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Gracias por intentar ayudarme compositor.
:)
  #6 (permalink)  
Antiguo 25/08/2005, 12:52
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
hola de nuevo, he estao mirando y he hecho una pequeña funcion q t puede ayudar:

Código PHP:

$fecha
=20050808134658;


function 
convertirDateTime($a){
$year=substr($a04);
$mes=substr($a42);
$dia=substr($a62);

$hora=substr($a82);
$minutos=substr($a102);
$segundos=substr($a122);
$total=$year."-".$mes."-".$dia." ".$hora.":".$minutos.":".$segundos;
return 
$total;
}

echo 
convertirDateTime($fecha); // Esto sacara por pantalla el resultado que quieres. 
salu2 !!
__________________
php user ;)
  #7 (permalink)  
Antiguo 25/08/2005, 14:20
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Muchas muchas gracias :)

No esperaba que nadie se molestara tanto pero me has sido de enorme ayuda. Me funciona a la perfección esa pequeña función. Muchísimas gracias :)
  #8 (permalink)  
Antiguo 25/08/2005, 15:06
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
de nada, m alegro ;)

salu2
__________________
php user ;)
  #9 (permalink)  
Antiguo 26/08/2005, 19:10
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Bueno, finalmente no utilizo la función. Encontré la solución tal y como me proponían utilizando la función UNIX_TIMESTAMP.

Simplemente lo utilicé así (aunque llegar a esta conclusión me costó barro :P):
Esto para hacer la consulta:
Código PHP:
 $sql="SELECT UNIX_TIMESTAMP(fecha) as data,usuario,mensaje FROM tablon"
$resultado=mysql_query($sql$dbd); 
Y esto para mostrar los resultados:
Código PHP:
 <?php 
while($registro mysql_fetch_array($resultadoMYSQL_ASSOC))
?>
  <tr class="azulclaro"> 
    <td width="74%" class="azulclaro">&nbsp;&nbsp;Mensaje escrito por &nbsp;<?php echo $registro['usuario']?></td>
    <td width="26%" class="azulclaro centrado"><?php $fecha=$registro['data']; $tiempo=date("d-m-Y (h:i:s)",$fecha); echo $tiempo;?></td>
  </tr>
  <tr> 
    <td colspan="2"><?php echo $registro['mensaje']?></td>
  </tr>
<?php }
?>
</table>
Os lo dejo aquí por si a alguien le interesa la resolución de la cuestión. (Aún sigo agradecida a compositor que conste ;P)

Saludos!
  #10 (permalink)  
Antiguo 26/08/2005, 19:13
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
ya m parecia raro q no hubiese ninguna funcion MySQL para eso, de toas formas, siempre viene bien una alternativa :d

salu2
__________________
php user ;)
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 06:26.