Quijost

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Deja tu post en el foro para hacer algun tipo de consulta

Autor Tema: Sistema de paginacion de resultados  (Leído 13211 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

espada

  • Usuario nuevo
  • *
  • Karma: +5/-0
  • Desconectado Desconectado
  • Mensajes: 36
    • Ver Perfil
Sistema de paginacion de resultados
« en: Julio 11, 2010, 04:03:32 am »

Bueno, intentare explicar como hacer un sistema de paginación de salidas SQL, un ejemplo claro de la utilidad de esto es en un blog, para no alargar infinitamente la pagina cada X entradas se para el proceso y aparece un botón para ir a las siguientes entradas.

El código que utilizaremos para limitar el numero de peticiones a la base de datos sera LIMIT.
Este se utiliza de la siguiente manera:
Código: [Seleccionar]
<?php
SELECT 
FROM `your_tableLIMIT 010
?>


El * puede ser sustituido por los campos que interesa extraer de la base de datos, con * se extraeran todos.

your_table debe de ser sustituido por el nombre de tu tabla, la tabla de la base de datos a la que quieres acceder si no lo cambias no funcionara. “nota: las ` que se encuentran a los lados pueden ser obviadas, no es necesario ponerlas.”

Después de LIMIT observamos 2 números con una coma entre medias, estos números representan el inicio y el recorrido, el código anteriormente expuesto comenzara por la primera fila y recorrerá 10.

Esto puesto así, no nos sirve realmente si queremos una pagina dinámica, no vamos a estarlo modificando cada vez que nuestro blog tenga una entrada mas de las puestas por pagina para ello asignaremos a ambos números una variable.

Código: [Seleccionar]
<?php
SELECT 
FROM `your_tableLIMIT '.$start.','.$end.'
?>


La única diferencia con el anterior es que los numeros ahora mismo no son fijos, son dados por una variable que asignaremos según nuestra conveniencia en mi caso me interesan 5 entradas por pagina pues la variables serian:

Código: [Seleccionar]
<?php
$start 
= (empty($_REQUEST["start"]) ? : ($_REQUEST["start"]));
$end 5;
?>


El $end carece de sentido explicarlo, pero el $start tiene mas chicha, lo enviaremos mediante la barra de direcciones, como explicare veremos mas tarde en los botones. La explicación de lo que hace la linea es: (si no recibo nada $star = 0 pero si recibo algo, le doy el valor recibido.)

Para que nuestro botón de siguiente pagina solo se muestre si hay mas entradas que las mostradas en la pagina que estamos utilizaremos la siguiente función php: mysql_num_rows($resource)

Esta función nos dice el numero de filas que hay en nuestra llamada, el $resource es la variable que hayamos asignado a dicha llamada.
El código seria
Código: [Seleccionar]
<?php
$filas_tot 
mysql_num_rows($var);
?>


Con esta nueva variable asignada y mediante un if conseguiremos que solo se muestre si el numero de entradas es mayor a las que muestra la pagina en la que estamos actualmente.

Código: [Seleccionar]
<?php
if(($start 5) < =$filas_tot)
   {
      echo 
'<a href="?start='.($start 5).'">NOTICIAS ANTERIORES</a>';
   }
?>

Siempre que haya mas entradas de las mostradas aparecerá nuestro botón.
 
El botón para ir a las paginas anteriores es mucho mas sencillo, siempre que no estés en la primera pagina se mostrara por lo que seria de la siguiente manera:

Código: [Seleccionar]
<?php
   
if($start 0)
   {
      echo 
'<a href="?start='.($start 5).'">NOTICIAS RECIENTES</a>';
   }
?>


Este otro if haría que se mostrase siempre que $start fuese distinto de 0 en la pagina 0 no se muestra a partir de ella se muestra siempre.

El código que se muestra dentro del echo es un hipervinculo, con el mandamos la variable que modifica la pagina. En el primer caso sumamos a nuestra variable 5, con ello la llamada a la base de datos sube 5 filas.

El $end por otra parte siempre es constante 5 puesto que queremos mostrar el mismo numero de entradas siempre.

Bueno esto es todo, espero que os sirva de ayuda cualquier problema no dudéis en preguntar.

Agradecer al equipo de Quijost su ayuda ya que ellos me lo explicaron a mi.
« última modificación: Julio 11, 2010, 04:48:03 am por espada »
En línea

shakaran

  • Soporte
  • Administrator
  • Usuario profesional
  • *****
  • Karma: +12/-0
  • Desconectado Desconectado
  • Sexo: Masculino
  • Mensajes: 487
  • Un buen soporte lo es todo
    • Ver Perfil
    • Shakaran
Re:Sistema de paginacion de resultados
« Respuesta #1 en: Julio 11, 2010, 04:44:58 am »

Te cambio el título a Sistema de paginación de resultados
En línea
Ángel Guzmán Maeso
Quijost Founder - Backend Engineer & Main support
 

Página generada en 0.106 segundos con 33 consultas.