Foros del Web » Programando para Internet » PHP »

Consulta MySQL con "ORDER by"

Estas en el tema de Consulta MySQL con "ORDER by" en el foro de PHP en Foros del Web. Hola ¿Que tal estan? ^^ Tengo una base de noticias donde ordeno los ingresos por fecha para que aparezca siempre la última noticia al arriba. ...
  #1 (permalink)  
Antiguo 29/06/2006, 10:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Consulta MySQL con "ORDER by"

Hola ¿Que tal estan? ^^

Tengo una base de noticias donde ordeno los ingresos por fecha para que aparezca siempre la última noticia al arriba. El problema es que si agrego en el mismo día 3 noticias, me aparece primero siempre la PRIMER noticia, y por ultimo la última.

¿Como puedo hacer para que salga primero siempre la última noticia? ¿estoy obligado a utilizar un campo con FECHA y HORA o hay algun otro recurso?


GRACIAS !
  #2 (permalink)  
Antiguo 29/06/2006, 11:05
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 11 años, 6 meses
Puntos: 3
Hola


Código PHP:
<?
   
include("config.php");
    
$fecha date("Y-m-d h:i:s");
   
$query = ("select * from nombretabla where date='$fecha' order by id asc limit 1"); 
   
$refecha=mysql_query($query);
   while(
$row=mysql_fetch_array($refecha)){
   
printf("$row['campo']);
   };
?>
Tabla autonumerica
puede ser
asc = ascendente
desc = descendente

limit
cantidad de registros a mostrar de ese día
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #3 (permalink)  
Antiguo 29/06/2006, 13:44
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Gracias Scorpion.

En caso estoy listando TODAS las noticias, pero me encontre ahora con este problema. Asi es mi query:

Código PHP:
$SQL "select * from noticias where (fecha <= CURDATE()) and (status = 'A') order by fecha desc limit $desde,$hasta"
'fecha' es un DATETIME... el tema es que CURDATE no parece entender los horarios muy bien... supongamos:

Hoy es 2006-06-29. Si yo tengo noticias cuya fecha es:

2006-06-29 00:00:00 las entiende y las muestra. No hace lo mismo si tengo
2006-06-29 14:00:00 por ejemplo.

¿qué podrá ser? ¿Tendré que utilizar algo en vez de CURDATE() ?

MUCHAS GRACIAS !
  #4 (permalink)  
Antiguo 29/06/2006, 14:11
Avatar de MWNS  
Fecha de Ingreso: julio-2003
Mensajes: 528
Antigüedad: 14 años, 4 meses
Puntos: 2
mmm, hola, creo que podrias capturar la hora de ingreso de la noticia y organizar por ellas... teniendo en cuenta que se diferencien en el dia

, no sé... me cuentas
__________________
MWNS
Mario Navas
http://marionavas.com
  #5 (permalink)  
Antiguo 29/06/2006, 14:34
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Ahhhhhh me parece que lo encontré !

Mi servidor dice "2006-06-29 04:30:34" cuando deberia decir "2006-06-29 16:30:34" !!!

Ahora puedo utilizar

$SQL = "select * from noticias where (fecha <= CURRENT_TIMESTAMP)) and (status = 'A') order by fecha desc limit $desde,$hasta";

y omitir la función date...

¿Podré utilizar algun comando para indicar al servidor que la hora se indique en format 24 horas?


Bueno gracias por la ayuda que me han dado :)
  #6 (permalink)  
Antiguo 29/06/2006, 14:37
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 11 años, 6 meses
Puntos: 3
hasta donde se

CURDATE(): devuelve la fecha actual en formato "aaaa-mm-dd"
CURTIME(): devuelve hora

creo que no tienes que estar complicando mucho la cabeza

si al final lo que tu deseas es que te salga las noticas nada mas que del día
ej: 2006-06-29

con esto
$query = ("select * from nombretabla where date='$fecha' order by id asc limit 1");

vaya si lo deseas puedes hasta quitar (limit 1)
y saldaras las noticias del dia 2006-06-29
desde las 00:00:00 hasta las 23:59:59

sabras que en un periodo pasada la media noche no habra nada a no ser que a esa hora pongan algunas noticias.

Vuelvo y repito el parametro CURDATE ES:
CURDATE(): devuelve la fecha actual en formato "aaaa-mm-dd"

saludos
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #7 (permalink)  
Antiguo 06/07/2006, 09:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Gracias Scorpion, ya lo he resuelto. El problema era el q decia arriba... mi servidor tiene un horario de 0 hs a 12 hs, y no de 0hs a 24hs... por ende jamas me reconocia 14:00 hs y a partir de eso se desencadenó todo el problema!!

Ya esta solucionado, MUCHAS GRACIAS!
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 11:42.