Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Mostrar resultados de abajo a arriba. Mysql

Estas en el tema de Mostrar resultados de abajo a arriba. Mysql en el foro de PHP en Foros del Web. Lo que quiero es que al cargar los registros desde la base de datos los muestro de abajo a arriba. Vale esto con un DESC ...
  #1 (permalink)  
Antiguo 05/02/2014, 02:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Mostrar resultados de abajo a arriba. Mysql

Lo que quiero es que al cargar los registros desde la base de datos los muestro de abajo a arriba. Vale esto con un DESC O ASC se soluciona pero, no me funciona. Si hago esto:

Código PHP:
$menssre mysql_query("SELECT * FROM mensajes_list WHERE idm='$idm' ORDER BY id DESC LIMIT $offset,$limit")  or die ("No se puede seleccionar la consulta porque "mysql_error()); 

Me muestra los registros de manera descendente, de lo mas alto a lo mas bajo, pero se muestra asi:

9
8
7
6
5
4
3
2
1

Cuando yo quiero:
1
2
3
4
5
6
7
8
9

Pero si hago ASC y pongo un LIMIT 5 me muestra asi:

1
2
3
4
5

Cuando quiero que me muestre así:

5
6
7
8
9

Si hago un DESC con LIMIT 5
Me muestra asi.

9
8
7
6
5

Cuando quiero asi:

5
6
7
8
9

Vamos que quiero que empiece a mostrar los registro de abajo a arriba.

Ademas, luego hago que el usuario cargue más datos y quieor que los cargue hacia arriba.
Por ejemplo si tengo:
5
6
7
8
9

Al darle a cargar más, debería seguir así:

3
4
5
6
7
8
9

Gracias a cualquier ayuda!!
  #2 (permalink)  
Antiguo 05/02/2014, 02:44
Avatar de EmpireFX  
Fecha de Ingreso: marzo-2008
Ubicación: in da house
Mensajes: 60
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Mostrar resultados de abajo a arriba. Mysql

LIMIT tiene otro parametro(offset), prueba con LIMIT 5,5
  #3 (permalink)  
Antiguo 05/02/2014, 04:47
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Básicamente lo que quieres es que el LIMIT te muestre los últimos mensajes que se hayan añadido, ¿no?
Seguramente haya una forma de hacerlo, aunque no se me ocurre ahora mismo.

Lo que yo hago desde hace un tiempo es meter toda la consulta en un array multidimensional, que son mucho más manejables que las consultas sql.
Una vez que lo tengas en un array, ya puedes organizarlo de mil formas diferentes de la forma más fácil del mundo.
  #4 (permalink)  
Antiguo 05/02/2014, 05:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Cita:
Lo que yo hago desde hace un tiempo es meter toda la consulta en un array multidimensional, que son mucho más manejables que las consultas sql.


¿En serio crees eso?


Creo que deberías aprender a explotar al SQL, porque es mucho más potente de lo que supones.

El problema acá es el desconocimiento de cómo opera el LIMIT combinado con un ORDER BY, y eso se puede ver en el manual de referencia. Pero a mi no me termina de quedar claro qué es lo que @davidte quiere hacer. Parece un tema de paginado de resultados.
¿Podrías decirlo de forma sintética y sin tanta descripcion de como salen los resultados?
¿Qué es lo que exactamente quieres lograr?

Por cierto, en la query que pones el resultado te sale de esa forma porque es así como se lo estás pidiendo... no hay un error ni un defecto.
Es decir, está funcionando bien. Lo que puede pasar es que no estás escribiendo la consulta correcta, o no lo estas haciendo del modo que corresponde para tu objetivo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/02/2014, 06:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Lo que quiero es mostrar los mensajes privados.
Igual como lo muestra facebook.

Es una imagen de internet:




Como podéis ver el mensaje más actual se muestra abajo y los más antiguos arriba. Pero no muestra todos, hay que pulsar un boton para cargar más y los carga arriba del más antiguo.

Última edición por davidte; 05/02/2014 a las 07:12
  #6 (permalink)  
Antiguo 05/02/2014, 07:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar resultados de abajo a arriba. Mysql

No estás respondiendo la pregunta...
¿Mostrar los posts de qué forma? ¿del más reciente al más antiguo?
Eso sería un problema muy básico, que se resuelve ordenando de mayor a menor una columna de fecha y hora que represente el momento del posteo de mensaje...
En cuanto al paginado, hay varias formas de lograrlo, una de las cuales es por la consulta:
Código SQL:
Ver original
  1. SELECT a, b, c
  2.   FROM (SELECT   a, b, c
  3.             FROM tabla
  4.         ORDER BY c DESC) t1
  5.  LIMIT 5;
Luego se consulta LIMIT variando los dos parámetros del mismo.

Describe un poco mejor qué es lo que se te dificulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 05/02/2014, 07:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Vale haber, lo que quiero es mostrar los mensajes recibidos entre usuarios.
Quiero que se muestren al igual que lo hace facebook.
El más actual en la parte más baja, pero sin mostrar todos.
A cada mensaje le doy un ID numerico que se autoincrementa.
Por ejemplo tengo 9 mensajes, por lo tanto el ultimo ID es el 9 que a la vez es el mensaje más actual. Y quiero que se muestren en este orden.

1
2
3
4
5
6
7
8
9

El más actual siendo el de abajo y el más antiguo el de arriba. Al ser mensajes queremos ver el más actual-
El problema esta a la hora de limitar los que se muestran, Por ejemplo tengo 10 mensajes, pero quiero que se muestren 5 mensajes y con un botón cargar más.
Hago un limit para limitar los que muestro. Como he hecho el limit de manera DESC ORDER BY ID me los muestra asi:

10
9
8
7
6

Pero quiero mostrarlos así:

6
7
8
9
10

Ya que el 10 es el mensaje más actual y cargar los demás por encima de 6. en ese ordern 5 - 4 - 3 - 2 - 1

Si hago un LIMIT CON ASC ORDER BY ID Me los muestra asi:

1
2
3
4
5


Pero quiero mostrarlos así:

6
7
8
9
10

Espero que se entienda.
  #8 (permalink)  
Antiguo 05/02/2014, 07:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar resultados de abajo a arriba. Mysql

¿Entendiste el ejemplo que te di?
Cita:
Iniciado por davidte Ver Mensaje
Si hago un LIMIT CON ASC ORDER BY ID Me los muestra asi:

1
2
3
4
5


Pero quiero mostrarlos así:

6
7
8
9
10

Espero que se entienda.
Código SQL:
Ver original
  1. SELECT ID
  2. FROM tabla
  3. LIMIT 5, 5

Cada pulsación del botón deberá enviar a buscar una secuencia distinta:
Código SQL:
Ver original
  1. ...
  2. LIMIT 10, 5;
  3. ...
  4. LIMIT 15, 5;
Para tu caso, te recomiendo usar AJAX como recurso. De ese modo no recargará la pagina entera, sino sólo lo que necesitas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 05/02/2014, 08:07
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Mostrar resultados de abajo a arriba. Mysql

SELECT a, b, c
FROM (SELECT a, b, c
FROM tabla
ORDER BY c DESC) t1
LIMIT 5;


Más o menos ese t1 no lo entiendo.

Teniendo como nombre de la table: mensajes_list
Tendria que hacerlo así, no?

SELECT *
FROM (SELECT *
FROM mensajes_list
ORDER BY ID DESC) t1
LIMIT 5;

Ese t1 no se a que se refiere
  #10 (permalink)  
Antiguo 05/02/2014, 08:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Si lo hago con esto:

<script type="text/javascript">
function loadmoree()
{
i=$("#mensen li").size()
var pages = $("#pages").val();
var idm = $("#idm").val();
var a = i;
if(a==pages){$("#loadmore").remove()}

$.get("other/loadmore.php?limit="+a+"&id="+idm, function(data)
{
$("#mensen").prepend(data); //LOADS THE NEW PAGE OF CONTENT UNDER THE REST
});
}
</script>

El cargar más me funciona, el problema esta en el LIMIT.
  #11 (permalink)  
Antiguo 05/02/2014, 08:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Cita:
Iniciado por davidte Ver Mensaje
Ese t1 no se a que se refiere
Alias de la tabla derivada (una tabla resultado en un FROM se denomina "tabla derivda" y requiere obligatoriamente un alias.

Te recomiendo revisar los conceptos generales de SQL, si vas a seguir trabajando con bases de datos.
Y acudir al manual de referencia, como todos nosotros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 05/02/2014, 09:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Mostrar resultados de abajo a arriba. Mysql

Ya esta solucionado! Gracias a todos! El problema esta en el LIMIT. Gracias al comentario #8 de gnzsoloyo entendi mejor el concepto de LIMIT. Ponia mal los limites. Gracias!

Última edición por davidte; 05/02/2014 a las 09:09

Etiquetas: mysql, sql
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 15:38.