Table of Contents
Al proceso de segmentar o dividir datos con el objetivo de mejorar los tiempos de respuesta en las peticiones de nuestra API le denominaremos paginación en PHP
Cuando iniciamos un nuevo proyecto, en el cual consultamos a una base de datos y nos devuelve registros, nunca sabemos cual es la cantidad de registros que dicha base de datos nos devolverá, puede ser 1, 100, 1,000 o 1,000,000 de registros.
Por lo que es importante tomar en consideración que estas consultas deberán estar optimizadas y segmentadas para evitar que nuestra aplicación se pueda colgar o generar algún error que probablemente no teníamos en consideración.
Es por eso que ahora te voy a contar acerca de cómo realizar la paginación en tus consultas para eficientar los procesos que nuestra API va generando.
¿Qué es la paginación en PHP y cómo implementarla en tu página web?
La paginación es un proceso que divide una cantidad de resultados en diferentes páginas. En PHP, se puede realizar la paginación de resultados de una base de datos, por ejemplo, mostrando un número limitado de resultados por página y proporcionando enlaces para navegar entre las páginas.
¿Cómo paginar los datos de tu API en PHP?
Para poder páginar tus datos en PHP es necesario definir la lógica que utilizarás para servirlos, en términos generales, los pasos para poder añadir la páginación a tu proyecto, son los siguientes:
- Recuperar la cantidad total de resultados de la base de datos
- Definir el número de resultados por página
- Calcular el número total de páginas
- Recuperar el número de página actual
- Calcular el registro inicial para el límite y Recuperar los resultados de la base de datos para la página actual
Aquí hay un ejemplo básico de cómo hacer paginación en PHP para tu API utilizando el Framework FlightPHP:
Recuperar la cantidad total de resultados de la base de datos
El primer paso para poder realizar la paginación en PHP la consulta a la tabla que queramos páginar, en este caso, hice una consulta SQL a la tabla de usuarios y mediante el método rowCount pude acceder al total de elementos o registros que trae esa consulta, mismos que se añaden a la variable total.
Definir el número de resultados por página
El segundo paso para poder realizar la paginación en PHP es definir el número de resultados que quieres se muestren por página, en este caso, utilicé una variable denominada limit y le asigné el valor de 10, lo que quiere decir que deseo que se muestren 10 registros por página
Calcular el número total de páginas
El tercer paso para poder hacer una paginación en PHP es hacer una división o cociente del número total de registros entre el número de elementos que queremos por página, con eso lograremos encontrar el número total de páginas de nuestra petición.
En este caso, se realiza la división de la variable total creada en el paso 1 y la variable limit creada en el paso 2 y mediante la función ceil la cual permite redondear los números decimales hacia arriba, se asigna el resultado a la variable pages.
Esto es importante ya que si suponemos que total es un 11 y limit es un 10, la división nos dará como resultado 1.1, si redondeamos hacia abajo, entonces solo tendríamos 1 página como resultado, por lo que el registro 11 nunca lo mostraríamos, sin embargo, si el resultado se redondea hacia arriba, entonces tendremos 2 páginas, y en la segunda aparecería el registro #11.
Recuperar el número de página actual
En este punto de la paginación en PHP, debemos revisar que nos envíen como parámetro la variable page y en caso de no ser así o de no estar definida dicha variable, automáticamente tenemos que suponer que el valor de page es igual a 1.
Calcular el registro inicial para el límite y Recuperar los resultados de la base de datos para la página actual
Una vez que ya tenemos todos nuestros valores para poder realizar la paginación en PHP, lo siguiente será realizar una consulta MySQL utilizando la cláusula limit, es importante recordar que limit cuenta con dos parámetros.
El primero es a partir de que elemento o registro queremos mostrar y el segundo es cuantos elementos o registros queremos mostrar, es por ello que definimos una variable start que le resta uno a la variable page que recibimos y lo multiplica por el limit, con esto conseguimos que el offset o desplazamiento de nuestra consulta, se relacione directamente con el número de páginas. Haz la prueba, si page es uno, entonces:
start será igual a uno menos uno que nos da cero y multiplicado por 10 nos seguirá dando cero.
¿Cómo se interpreta esto en la consulta MySQL?
Esto quiere decir que seleccionaremos todos los registros de los usuarios con un desplazamiento 0, es decir, empezando desde el primer registro, y limitando la consulta para que únicamente nos muestre 10 registros.
¿Qué pasaría si page vale 2? te invito a que realices los cálculos para entender la lógica.
En resumen, podemos observar que el proceso de paginación es bastante sencillo y el costo-beneficio en relación con los tiempos de respuesta y optimización de nuestras consultas siempre será el adecuado, por lo que te recomiendo ampliamente paginar en medida de lo posible todos tus desarrollos.
Te recomiendo que visites nuestra página Cómo crear un API utilizando el Framework de FlightPHP, si deseas empezar a construir tu API desde cero utilizando el Framework FlightPHP
Adicional, te recomiendo visites mi canal de Youtube en el cual encontrarás información referente a incrementar tus habilidades dentro del desarrollo web.