PHP - Consulta SQL y paginación

 
Vista:

Consulta SQL y paginación

Publicado por firestorm (4 intervenciones) el 04/01/2006 23:17:50
Hola, bueno tengo un problema en un script que estoy haciendo y la verdad no se como solucionarlo...

Vamos a ver, mi script consiste en un sistema de noticias en el que tienes un par de listbox:

- El primero te permite seleccionar Ordenar por fecha, titulo o lecturas.
- El segundo puedes seleccionar ordenar ascendentemente o descendentemente.
- Ambos se aplican sobre una consulta SQL.

Todo funciona correctamente, el problema es que a la hora de visualizar la información utilizo un sistema de paginación para la consulta y claro, cuando me voy a mover a la siguiente página se pierde toda la consulta que hice ya que se refresca el explorador y se pierden el valor de los elementos POST del formulario.
Como puedo arreglar esto?. Es que no se el modo de poder almacenar los valores de la consulta para que de ese modo no se pierda al moverte entre las páginas.

PD: La idea del script es muy similar a la utilizada por esta web para organizar sus consultas
Venga, un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta SQL y paginación

Publicado por Michel (52 intervenciones) el 05/01/2006 17:13:52
Hola, no se si has probado guardar las valores en variables de Sesion se como se hace en ASP pero en PHP, no!!!, soy bastante nuevo, pero bueno la causa por la cual se pierde los valores es esa, que como no las tiene guardadas en ese tipo de variables al refrescar la pagina se pierde, las variables de sesiones lo que hacen es guardarte el valor, pero para cada navegador en especifico, o sea que las variables de sesion que yo estoy usando cuando navegue por tu pagina no necesariamente deben tener el mismo valor, que tus variables de sesion cuando estes navegando, asi lo hagamos en el mismo momento,
Bueno espero que alguien te pueda contestar como hacer eso pero con el codigo, bueno espero que sea eso mismo, suerte

ATT

Michel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me parece más fácil

Publicado por Serra Labán, Eloy Alejandro L. (5 intervenciones) el 13/01/2006 22:30:13
Me parece mucho más facil así:
1.- Hacés la consulta con mysql_query
2.- Usás mysql_num_rows para saber el número de filas
3.- Usás mysql_data_seek para posicionarte en el inicio (por ejemplo en la fila número 10).
4.- Usás un for/while o lo que te guste para pedir fila por fila con mysql_fetch_array hasta llegar al final (por ejemplo 20), o a $inicio+$filas_por_pagina.

Espero que te sirva:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL y paginación

Publicado por Mike79 (669 intervenciones) el 14/01/2006 00:59:36
Existe el metodo post, y el metodo get. Aquí tienes 2 opciones, la forma facil y la dificil, veamos la facil.

La fácil, cambia de Post a Get, y asi cuando hagas un enlace a "Siguiente", entonces simplemente en la referencia pones algo asi como: http://miservidor/miarchivo.php?Tipo=F&Orden=A&Pag=2

Donde F seria Fecha y A ascendente (por ejemplo), puedes incluir directamente el SQL, pero nunca es recomendable por que se presta a metodos de hacking.

En tu php, solo lo recuperas, y así puedes saber las opciones que el usuario habia puesto, obviamente los links de siguiente y atraz deben generarse de forma dinamica, arrastrando los valores antes seleccionados. ¿Si me explico?, por ejemplo, algo así:

echo "href=\"miarchivo.php?"; // Empzamos la referencia
if ($Tipo != "" ) // Si selecciono algún tipo
echo "Tipo=$Tipo&";
if ($Orden != "") // Si selecciono algún orden
echo "Orden=$Orden&";
$Pag++;
echo "Pag=$Pag";
echo "\""; // Terminamos la referencia

Puedes usar isset($Orden) en lugar de solo verificar si esta vacio. Eso ya depende de como estes manejando tus variables.

------------
La forma dificil, usando POST.
En lugar de hacer una referencia, usa un formulario con campos invisibles, con las opciones que originalmente habias escojido, y con el número de página a mostrar, entonces cuando hagas click en "Siguiente" (o atraz) usa un JavaScript para invocar el metodo submit de ese formulario, y así refresca arrastrando de nuevo todos los datos del post, obviamente tienes que agregar el número de página para que esto funcione.

Digo que es dificil, por que tienes que saber JavaScript, pero en si, es tan facil como el anterior.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar