Foros del Web » Programando para Internet » PHP »

Problema con fechas...

Estas en el tema de Problema con fechas... en el foro de PHP en Foros del Web. buenas, tengo un problema a la hora de ordenar unas fechas... tengo un listado de noticias, y hago un ORDER BY fecha, y lo que ...
  #1 (permalink)  
Antiguo 09/10/2003, 12:43
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Problema con fechas...

buenas, tengo un problema a la hora de ordenar unas fechas... tengo un listado de noticias, y hago un ORDER BY fecha, y lo que me hace es lo siguiente:

01/08/03
02/06/03
02/07/03
04/07/03

es decir, me ordena la primera cifra. como hago para q el registro introducido aparezca el primero, el mas reciente, como aqui en los foros??


salu2!
  #2 (permalink)  
Antiguo 09/10/2003, 12:49
 
Fecha de Ingreso: agosto-2003
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 10
Dale la vuelta a la fecha y ponla en formato AAAA/MM/DD
******
$dia=substr($fecha,0,2);$mes=substr($fecha,3,2);$a ny=substr($fecha,6,4);
$ulac=$any.$mes.$dia;$ulac2=strtotime($ulac);
$ulac=strftime("%Y/%m/%d",$ulac2);
***** El resultado lo tienes en el valor $ulac

Suerte
  #3 (permalink)  
Antiguo 09/10/2003, 12:54
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 14 años, 10 meses
Puntos: 1
Código PHP:
SELECT FROM tu_tabla ORDER BY fecha DESC LIMIT  4 //cuanto quieras que aparesca por pagina 
  #4 (permalink)  
Antiguo 09/10/2003, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero.... ese dato de fecha .. como lo estás guardando en tu tabla de tu BD?

Es un "string" (un VARCHAR o algo de texto? .. )

Te lo comento por qué si es así .. es "normal" que te suceda eso. Usa campos tipo DATE y formatea su salida con DATE_FORMAT() (de Msyql) ..

No todo es "PHP" y ... más si se trabaja con Base de datos es IMPRESCINDIBLE conocer SQL .. El lenguaje de consultas que use. Cuanto más sepas .. verás que más fácil haces ciertas cosas y sobretodo más optimizadas y con ménos código PHP por médio cuando puede hacerlo perfectamente tu BD ..vía SQL.

www.mysql.com

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 09/10/2003 a las 13:19
  #5 (permalink)  
Antiguo 09/10/2003, 18:33
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias a todos. Cluster, me interesa tu exposición. tengo definido el campo como un varchar, y la variable que introduzco en el campo es:

$fecha=date("d")."/".date("m")."/".date("y");

como deberia definir el campo¿
  #6 (permalink)  
Antiguo 09/10/2003, 18:42
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Lo recomendable es que definas en tu tabla un campo date o datetime segun corresponda y uses las funciones que proporciona mysql para trabajar con fechas.
Dichas funciones puedes consultarlas en la pagina oficial de mysql para mas certeza en http://www.mysql.com/doc/en/Date_and...functions.html
  #7 (permalink)  
Antiguo 09/10/2003, 19:12
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
como trabajo con las fechas? en mi caso, como tendir q introducir la variable en la base de datos?
  #8 (permalink)  
Antiguo 09/10/2003, 20:49
 
Fecha de Ingreso: septiembre-2003
Mensajes: 248
Antigüedad: 14 años, 3 meses
Puntos: 2
para agregar la fecha hora actual a tu DB en mysql usa:
$f=date("Y-m-d H:i:s");
insert into tutabla(fecha) values('$f');
luego puedes usar esa columna para ordenarlo con order by como lo han explicado antes
Suerte!
__________________
Jose A
  #9 (permalink)  
Antiguo 09/10/2003, 22:54
 
Fecha de Ingreso: enero-2002
Mensajes: 4.156
Antigüedad: 15 años, 11 meses
Puntos: 21
Yo logre formatear (chequen el termino no mas) la fecha antes de guardalo en la base de datos de esta forma:

<?php
$fecha = getdate();

if ($fecha[mday]<10){
$fecha[mday]="0".$fecha[mday];
}

if ($fecha[mon]<10){
$fecha[mon]="0".$fecha[mon];
}

$fecha_final= $fecha[year]."-".$fecha[mon]."-".$fecha[mday]."<br>";

?>

Espero les sirva.

Saludos.
__________________
Aprende a comprar con PayPal sin tarjeta de crédito. Descarga aquí la guía grátis
  #10 (permalink)  
Antiguo 09/10/2003, 22:55
 
Fecha de Ingreso: enero-2002
Mensajes: 4.156
Antigüedad: 15 años, 11 meses
Puntos: 21
oops, sin el ."<br>" al final jiji
__________________
Aprende a comprar con PayPal sin tarjeta de crédito. Descarga aquí la guía grátis
  #11 (permalink)  
Antiguo 10/10/2003, 05:12
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
gracias a todos. mi problema es el siguiente.... tengo hecho un foro. hay ya unos 70 mensajes con el formato dd/mm/yy, y si ahora los nuevos registros llevan un formato diferente, tampoco podre ordenarlos, no? que tendria que hacer??


salu2!!
  #12 (permalink)  
Antiguo 10/10/2003, 06:08
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
hola amigos! al final he hecho otra cosa, he ordenado los resgistros del foro by id DESC, de esta manera, siempre me mostrará los mensajes más recientes...

por cierto, como introduzco la hora??

salu2
  #13 (permalink)  
Antiguo 10/10/2003, 09:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y .. dale .. ferranWEB ..

USA tipo de dato DATETIME y olvidate de problemas .. Por ejemplo la función NOW() de Msyql aplicada a un campo DATETIME genera la HORA(con segundos y minutos) y FECHA actual sin más PHP por médio ..

Tienes que usar campos DATETIME .. y los datos con tu formato viejo que tenias pasarlos a formato ODBC (que es el que te comentó j_aspillaga (yyyy-dd-mm hh:mm:ss) ...

En tu caso .. ese script de conversión de formato tuyo (de tus actuales "varchar") al nuevo .. Sólo sería cosa de Concatenar tus datos de mes/dia/año previo aplicado un explode() para obtener esos datos por separados ..

Un saludo,

pd: Estos son los précios que se pagan por las prisas .. Pero más vale que lo soluciones ahora con "70" mensajes .. que no dentro de un año con miles de mensajes ..Ademas que trabajar fechas en formato "varchar" y con tu própio formato te complicará la vida para hacer cosas tan simples como comparaciones por fecha .. y demás operaciones con fechas.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 10/10/2003, 17:05
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 14 años, 10 meses
Puntos: 1
Cita:
Mensaje Original por ferranWEB
hola amigos! al final he hecho otra cosa, he ordenado los resgistros del foro by id DESC, de esta manera, siempre me mostrará los mensajes más recientes...

salu2
Es lo que trate de decirte

ahora para insertar la hora si tienes los datos como cluster dice DATETIME trata asi

Código PHP:

insert into tu_tabla  
(estoestafecha)values '$esto''$esta'now()); 
  #15 (permalink)  
Antiguo 10/10/2003, 18:52
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
macabro, he hecho lo que me comentas, pero me sale lo siguiente:

2003-10-10 19:15:45

cuando la hora en q he introducido el mensaje es la 1:20 de la madrugada. pq no se corresponde la hora? es problema de mi servidor de internet? como lo solucio??


salu2, y gracias!!
  #16 (permalink)  
Antiguo 11/10/2003, 08:49
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 15 años, 11 meses
Puntos: 3
Cluster, he hecho lo que me dices. he cambiado el tipo de dato de mi campo fecha. he puesto un date y me sale un valor por defecto 0000-00-00. claro a mi me gustaria mostrar dd/mm/yy, y con eso lo hace al reves. no me gusta que me muestre yy/mm/dd..
pues cambiar ese valor por defecto? o siempre se me mostrara la fecha de esa manera¿

salu2
  #17 (permalink)  
Antiguo 11/10/2003, 11:06
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 14 años, 10 meses
Puntos: 1
La hora en tu maquina esta bien?
chekeate esto:
http://www.forosdelweb.com/showthrea...ighlight=fecha

la verdad este lenguage de php lleva mucha logica, tienes que ver algunos scripts como le hacen para ver fecha a su manera, descarga algunos libro de visitas (por ejemplo) para que juegues un rrato con las fechas, trata de "ver bien" la estructura, y si no puedes pues pasa el script que de seguro habra alguien que te ayudara con esa base,

tambien busca aqui en los foros con la palabra fecha y veras que te saldran muchos post con el mismo tema, es lo que yo hago primero, me canso de buscar y de probar el script y si no puedo pues les pido una ayuda, dandoles a conocer el scripts, ya con eso de seguro resolveras tu problema.

te paso uno que encontre buscando aqui en el foro:

http://www.forosdelweb.com/showthrea...ighlight=fecha

y esto:
http://www.forosdelweb.com/showthrea...hreadid=119333

ahora si no te sale nada prueba con esto:

Código PHP:
$result mysql_query("SELECT usuario ,fecha  FROM tu_tabla ") or die ("fallo de conexion!");

while (
$row mysql_fetch_array($result)) 
        {    
        list(
$year,$month,$dat)=explode("-",$row[fecha]);//aqui va el campo de la fecha
        
$monthlist = array("Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio"
                   
"Agosto""Septiembre""Octubre""Noviembre""Diciemebre"); 
        for(
$i 1$i <= 12$i++) { if ($month==$i){$month=$monthlist[$i-1];break;} }
        
        
$posted="$dat de $month del $year ";

echo
"mensaje puesto por: $row[usuario] el $posted";

te saldra =

 
mensaje puesto por alguien el11 de octubre del 2003 
  #18 (permalink)  
Antiguo 11/10/2003, 14:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
ferrranWEB ..

El campo DATE de mysql genera ese tipo de fechas .. ya te lo comenté en otro mensaje de este mismo tema ...

También te comenté que usases DATE_FORMAT() de MYSQL para darle el formato de salida que necesites .. pero, internamente Mysql lo va a guardar así y así se los has de dar las fechas si las introduces manualmente (desde tus formularios HTML o lo que corresponda) ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:53.