Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Cómo Paginar Datos con PHP

by
Difficulty:IntermediateLength:LongLanguages:

Spanish (Español) translation by Jorge Montoya (you can also view the original English article)

Puedo recordar hace años cuando comencé a programar en PHP y MySQL lo emocionado que estaba la primera vez que recibí información de una base de datos para mostrarse en un navegador web.

Para alguien que tenía poco conocimiemto de bases de datos y de programación, ver esas filas de tablas aparecer en la pantalla en función del código que escribí (está bien, copié un ejemplo de un libro -- no hilemos tan fino) me hizo sentir triunfante. Puede que no haya entendido por completo toda la magia trabajando en aquel entonces, pero ese primer éxito me impulsó a proyectos más grandes y mejores.

Si bien mi nivel de exuberancia sobre las bases de datos puede no ser el mismo que antes,
desde mi primer encuentro de 'hola mundo' con PHP y MySQL he estado enganchado
al poder de hacer las cosas simples y fáciles de usar.

Como desarrollador, un problema al que me enfrento constantemente es tomar una gran cantidad de información y hacerla más fácil de digerir. Ya sea la lista de clientes de una gran empresa o un catálogo personal mp3, tener que sentarse y mirar filas y filas y filas de datos puede ser desalentador.
y frustrante. ¿Qué puede hacer un buen desarrollador? ¡Paginar!


1. Paginación

La paginación es esencialmente el proceso de tomar un conjunto de resultados y difundirlos
a través de páginas para que sean más fáciles de ver.

example 1

Me di cuenta desde el principio si tenía 5000 filas de información para mostrar no solo
sería un dolor de cabeza que alguien intentara leer, pero la mayoría de los navegadores tomarían
una eternidad de Internet (es decir, más de unos cinco segundos) para mostrarla.

Para resolver esto codificaría varias instrucciones SQL para extraer fragmentos de datos, y si estuviera
de buen humor, incluso podría arrojar un par de botones "siguiente" y "anterior".
Después de un tiempo, tener que soltar este código en cada proyecto similar y personalizarlo
para que encaje se volvió anticuado. Rápido. Y como todo buen desarrollador sabe, la pereza engendra inventiva
o algo así. Así que un día me senté y decidí idear una sencillo,
flexible y fácil de usar clase de PHP que automáticamente hiciera el trabajo sucio por
mí.

Una palabra rápida sobre mí y las clases PHP. No soy ningún hechicer orientado a objetos. De hecho, apenas si
apenas uso esas cosas. Pero después de leer algunos ejemplos y tutoriales de OOP, y algunos
ejemplos simples de prueba y error, decidí darle un giro y ¿sabe qué?
Funciona perfectamente para la paginación. El código utilizado aquí está escrito en PHP 4 pero lo hará
trabajar en PHP 5.


2. La Base de Datos

Tengo que amar a MySQL. Sin ofender a los otros sistemas de bases de datos, pero para
mí, todo lo que necesito es MySQL. Y una gran característica de MySQL es que te dan algunas
bases de datos de muestra gratuitas para jugar en http://dev.mysql.com/doc/#sampledb.

Para mis ejemplos, usaré la base de datos mundial (~90k comprimida) que contiene más de
4000 registros para jugar, pero la belleza del script PHP que vamos a crear es
que puede usarse con cualquier base de datos. Ahora creo que todos podemos estar de acuerdo que si decidimos
no paginar nuestros resultados que terminaríamos con algunos muy largos y difíciles de manejar
resultados como los siguientes:

example 2

(haga clic para obtener una imagen de tamaño completo, ridículamente larga ~ 338k)

Así que vamos a dividir nuestros datos en bocados fáciles de digerir como este:

example 3

Hermoso, ¿verdad? Una vez que arroje la clase de paginación en su código, puede
transformar rápida y fácilmente un gran conjunto de datos en páginas fáciles de navegar con
solo unas pocas líneas de código. De verdad.


3. Paginador

Este ejemplo se compone de dos scripts, la clase de paginator reutilizable y el archivo index que mostrará los elementos y controles de la tabla.

Paginator.class.php

La clase paginator tendrá solo dos métodos y el constructor, vamos a construirlo explicando gradualmente cada paso a medida que avanzamos.

Esta definición solo establece las variables miembro requeridas por el paginador, ya que esta es una clase auxiliar y está destinada a la paginación, solo se basará en una conexión válida al servidor MySQL y una consulta ya definida que adjuntará los parámetros necesarios para paginar los resultados. Comenzaremos con el método constructor.


Muy simple ¿verdad? Este método solo establece la conexión de la base de datos del objeto y la consulta necesaria, luego de eso calcula el número total de filas recuperadas por esa consulta sin ningún límite ni parámetros de omisión, este total es necesario para crear los enlaces para el paginador.

Tenga en cuenta que, por simplicidad, no estamos haciendo una comprobación de errores ni ninguna otra validación de los parámetros dados, pero en una aplicación del mundo real estas verificaciones serán necesarias.

Recuperando Resultados

Ahora vamos a crear el método que realmente paginará los datos y devolverá los resultados.

Analicemos esto paso a paso, primero establecemos el límite y los parámetros de la página, que por defecto están configurados en 10 y 1 respectivamente. Luego comprobamos si el usuario requiere un número determinado de filas o todas ellas, basándonos en esto y en el parámetro de página que establecemos el parámetro LIMIT de la consulta, el "- 1" de la página tiene en cuenta el hecho de que están comenzando las páginas en 1 en lugar de 0.

Después de esto, simplemente evaluamos la consulta y obtenemos los resultados, finalmente creamos un nuevo objeto de resultados que contiene el límite, la página y los parámetros totales de la consulta ejecutada, así como los datos de cada una de las filas recuperadas.

Mostrando Enlaces de Paginación

Ahora vamos a escribir el método utilizado para obtener los enlaces de paginación.

Este es un método bastante largo, algo así como 34 líneas de código, así que ahora vamos a explicar qué está pasando en este método.

  1. Primero evaluamos si el usuario requiere una cantidad dada de enlaces o todos, en el segundo caso simplemente devolvemos una cadena vacía ya que no se requiere paginación.
  2. Después de esto, calculamos la última página en función de la cantidad total de filas disponibles y los elementos necesarios por página.
  3. Luego tomamos el parámetro de enlaces que representa el número de enlaces para mostrar debajo y encima de la página actual, y calculamos el enlace de inicio y final para crear.
  4. Ahora creamos la etiqueta de apertura para la lista y establecemos su clase con el parámetro de clase de lista y agregamos el enlace de "página anterior", tenga en cuenta que para este enlace comprobamos si la página actual es la primera, y si es así, establecemos la propiedad deshabilitada del enlace.
  5. En este punto, mostramos un enlace a la primera página y un símbolo de puntos suspensivos en caso de que el enlace de inicio no sea el primero.
  6. A continuación, agregamos los enlaces debajo y encima de la página actual basados ​​en los parámetros de inicio y fin calculados previamente, en cada paso evaluamos la página actual nuevamente la página de enlace mostrada y configuramos la clase activa en consecuencia.
  7. Después de esto, mostramos otro símbolo de puntos suspensivos y el enlace a la última página en caso de que el enlace final no sea el último.
  8. Finalmente, mostramos el enlace "siguiente página" y configuramos el estado deshabilitado cuando el usuario está viendo la última página, cerramos la lista y devolvemos la cadena HTML generada.

Eso es todo lo que hay en la clase Paginator.class, por supuesto, podríamos agregar setters y getters para la conexión de la base de datos, límite, página, consulta y parámetros totales, pero por simplicidad lo mantendremos de esta manera.

4. Index.php

Ahora crearemos el archivo a cargo de usar la clase Paginator y mostrar los datos, así que primero déjeme mostrarle el HTML base.

Bastante simple, este archivo solo muestra una tabla que llenaremos con la información recuperada de la base de datos, tenga en cuenta que para este ejemplo estoy usando bootstrap para el diseño básico de la página.

Usando el Paginador

Ahora para hacer uso de nuestra clase Paginator agregue el siguiente código php en la parte superior del documento.

Este script es bastante simple, solo requerimos nuestra clase Paginator, tenga en cuenta que este código asume que este archivo está en el mismo directorio que el archivo index.php, si este no es el caso, debería actualizar la ruta en consecuencia.

Luego creamos la conexión a nuestra base de datos usando la biblioteca MySQLi, recuperamos los parámetros del paginador de la solicitud GET y configuramos la consulta, ya que este no es un artículo en MySQL o algo de eso no entraré en detalles sobre la conexión o la consulta usados aquí.

Por último, creamos el objeto Paginador y recuperamos los resultados de la página actual.

Mostrando los Resultados

Ahora para mostrar los resultados obtenidos agregue el siguiente código al cuerpo de la tabla.

Aquí simplemente estamos iterando a través de los resultados del atributo de datos que contiene los registros de ciudades y creando una fila de tabla para cada uno de ellos.

Enlaces de Paginación

Ahora para mostrar los enlaces del paginador agregue el siguiente código debajo de la tabla.

Para el método Paginator createLinks pasamos el parámetro links obtenido y la clase css para los enlaces de paginación utilizada desde bootstrap. Aquí está el resultado de la página creada.

Conclusión

Esto debería proporcionarle todo lo que necesita saber para comenzar a utilizar la paginación en su aplicación.

¡No dude en dejar preguntas, comentarios o retroalimentación general en el feed a continuación!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.