Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

ORDENAR resultado de consulta. Dudas (Avanzado)

Estas en el tema de ORDENAR resultado de consulta. Dudas (Avanzado) en el foro de WordPress en Foros del Web. Hola amigos, Tengo una duda que me está atrofiando a la silla durante horas. Tengo una tabla mysql con más de 100 eventos y sus ...
  #1 (permalink)  
Antiguo 11/08/2008, 08:19
 
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 11 meses
Puntos: 0
Exclamación ORDENAR resultado de consulta. Dudas (Avanzado)

Hola amigos,

Tengo una duda que me está atrofiando a la silla durante horas.


Tengo una tabla mysql con más de 100 eventos y sus respectivas fechas (eventos pasados y eventos futuros). Hago una consulta para mostrar los 5 eventos futuros más proximos y para ello en el WHERE indico como requisito que la fecha registrada tiene que ser mayor a la fecha actual. Para que me enseñe los eventos futuros más cercanos utilizo un ORDER BY segun la fecha del evento y le doy valor ASC ya que sino me mostraria eventos futuros que no son los más recientes sino que empezaria por el más futuro de todos ellos. Le pongo un LIMIT 5 para limitar a 5 resultados.

Hasta aquí todo bien, funciona perfectamente y me devuelve los próximos 5 eventos. El problema es que para que me aparezca los próximos eventos he tenido que usar ASC y ello hace que el orden de los resultados sea del más próximo al más lejano y yo necesito mostrar esos 5 pero del más lejano al más próximo.

Evidentemente no puedo cambiar el ASC por DESC ya que aunque me mostraria el orden correcto, la consulta me devolveria los 5 eventos más futuros, empezando por el más lejano, claro. Y yo quiero lo contrario.

Supongo que la solución seria poder reordenar de nuevo el orden (invertir en este caso) una vez tenemos el resultado de la consulta pero no he encontrado cómo y quiero pensar que PHP tiene alguna manera.

A ver si es posible y gracias de antemano. Espero haber sido claro.
  #2 (permalink)  
Antiguo 11/08/2008, 08:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: ORDENAR resultado de consulta. Dudas (Avanzado)

Hola Olivier,

Puedes descargar todos los datos a un arreglo y usar sort() para cambiar el orden de tu array.

Saludos.
  #3 (permalink)  
Antiguo 11/08/2008, 08:26
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: ORDENAR resultado de consulta. Dudas (Avanzado)

Tienes que reordenarlo en PHP, aunque, para ahorrar recursos, se me ocurre una reordenación que realmente no lo es, sería algo así:
Código PHP:
<?php
$reord 
= array();
for(
$c 0$row mysql_fetch_array($sql); ++$c//$sql sería tu consulta
{
   
$reord[$c] = $row;
}
?>
Luego simplemente sabiendo que son 5 los resultados, imprimiendo a partir de $reord[4] descendiendo hasta el $reord[0] tienes los resultados como tu los quieres.

No he probado el código, puede que no funcione de esta forma, pero espero que se pille la idea de guardar todos los resultados de $row en un array para luego imprimir $row en el orden inverso ;)
__________________
Un Lannister siempre cumple sus promesas
  #4 (permalink)  
Antiguo 11/08/2008, 09:11
 
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: ORDENAR resultado de consulta. Dudas (Avanzado)

Hola! Gracias a los 2 por responder ¡que rapidez!

Pues he estado probandolo, lo único que imaginándomelo más sencillo me he dejado de deciros que el script es una modificación que yo hago para Wordpress y puede que sea esto lo que hace que no me funcione (o mi torpeza, claro)

Os copio el código hasta donde he llegado ya que tan solo con lo siguiente me da un Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

Código PHP:
$fecha_hoy current_time('mysql');

if ( 
$resultados $wpdb->get_results("SELECT ID, post_title, post_date FROM $wpdb->posts WHERE AND post_date >= '$fecha_hoy' ORDER BY post_date ASC LIMIT 5") ) 
    {
              
$reord = array();
for(
$c 0$row mysql_fetch_array($resultados); ++$c)
{
   
$reord[$c] = $row;
}
//a partir de aqui empezariamos a mostrar...

  #5 (permalink)  
Antiguo 11/08/2008, 10:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: ORDENAR resultado de consulta. Dudas (Avanzado)

Tema trasladado a WordPress.

Ese error te sale debido a que tu consulta SQL es incorrecta.
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:50.