Unidad 5: Paginación en el patrón MVC
5.1 Introducción a la paginación en MVC
5.1.1 ¿Qué es la paginación?
La paginación es una técnica utilizada en aplicaciones web para dividir grandes conjuntos de datos en partes más pequeñas y manejables, conocidas como "páginas". Esto permite a los usuarios navegar a través de los datos sin tener que cargar toda la información de una sola vez, lo que mejora la experiencia del usuario y reduce el tiempo de carga.
Cuando se trabaja con grandes cantidades de datos, como una lista de empleados, es importante presentar la información de manera clara y organizada. Los tiempos de carga prolongados y la sobrecarga de información pueden frustrar a los usuarios y hacer que abandonen la aplicación. La paginación ayuda a mitigar estos problemas al dividir los datos en partes más pequeñas y manejables.
Ejemplo: Si tienes una lista de 1000 empleados y solo deseas mostrar 10 empleados por página, la paginación dividiría esa lista en 100 páginas. El usuario podrá navegar entre las páginas para ver los empleados de manera más eficiente.
En términos de bases de datos, la paginación se logra utilizando cláusulas LIMIT y OFFSET en las consultas SQL. Estas cláusulas controlan cuántos resultados devolverá la consulta y a partir de qué punto (es decir, qué página).
5.1.2 Ventajas de la paginación en una aplicación web
- Mejora el rendimiento: Al cargar solo una parte de los datos a la vez, se reduce la cantidad de información que el servidor y el cliente deben procesar, lo que mejora el rendimiento general de la aplicación.
- Mejor experiencia de usuario (UX): La paginación permite a los usuarios navegar fácilmente a través de grandes conjuntos de datos sin sentirse abrumados. Los controles de paginación, como botones de "siguiente" y "anterior", facilitan la navegación.
- Menor consumo de recursos: Al reducir la cantidad de datos que se cargan y procesan al mismo tiempo, se disminuye el consumo de recursos del servidor y del cliente, lo que puede resultar en un mejor rendimiento y menor carga en la infraestructura.
- Facilita la búsqueda y filtrado: La paginación permite a los usuarios buscar y filtrar datos de manera más eficiente, ya que pueden centrarse en un subconjunto específico de información en lugar de tener que revisar una lista completa.
- Mejora la escalabilidad: A medida que la cantidad de datos crece, la paginación ayuda a mantener un rendimiento aceptable y una buena experiencia de usuario, lo que facilita la escalabilidad de la aplicación.
- Facilita la implementación de características adicionales: La paginación puede ser combinada con otras características, como la búsqueda y el filtrado, para mejorar aún más la experiencia del usuario y la eficiencia de la aplicación.
- Mejora la accesibilidad: La paginación puede ayudar a que la información sea más accesible para los usuarios con discapacidades, ya que les permite navegar a través de los datos de manera más sencilla y organizada.
- Facilita la implementación de controles de navegación: La paginación permite a los desarrolladores implementar controles de navegación intuitivos y fáciles de usar, lo que mejora la usabilidad de la aplicación.
- Mejora la legibilidad: Al dividir los datos en partes más pequeñas, la paginación mejora la legibilidad de la información, lo que facilita su comprensión y análisis por parte de los usuarios.
- Facilita la implementación de características de ordenación: La paginación puede ser combinada con características de ordenación para permitir a los usuarios organizar los datos de acuerdo a sus preferencias, lo que mejora aún más la experiencia del usuario.
Conclusión del punto 5.1:
La paginación es una herramienta esencial para mejorar el rendimiento, la experiencia de usuario (UX) y la gestión de datos en aplicaciones web que manejan grandes volúmenes de información. Al implementarla correctamente en el patrón MVC, podemos lograr un sistema más escalable, rápido y fácil de usar.
5.2 Implementación de la paginación en MVC
5.2.1 Modificación del modelo
Para implementar la paginación en el modelo de empleados, debemos modificar la consulta SQL para que devuelva solo un número limitado de registros por página. Esto se logra utilizando las cláusulas LIMIT y OFFSET.
La cláusula LIMIT especifica el número máximo de registros que se devolverán, mientras que la cláusula OFFSET indica desde qué registro comenzar a devolver los resultados. Por ejemplo, si queremos mostrar 10 empleados por página y estamos en la página 2, la consulta SQL sería algo así:
LIMIT 10 indica que queremos 10 registros y OFFSET 10 indica que comenzamos desde el registro 11 (es decir, la segunda página de resultados).
El Modelo es responsable de interactuar con la base de datos y de obtener los datos que vamos a mostrar. Para implementar la paginación, necesitaremos modificar la consulta SQL para que devuelva solo un número limitado de registros por página, y también debemos manejar la lógica para obtener el número total de registros, lo cual es necesario para mostrar los controles de paginación (como las páginas siguientes y anteriores).
- Actualizar la consulta SQL para que utilice
LIMITyOFFSET. - Obtener el número total de registros para calcular cuántas páginas se necesitan.
Código de Empleado.php modificado para la paginación:
Modificación del modelo
Explicación:
-
obtenerEmpleados($pagina, $empleadosPorPagina):- Realizamos una consulta SQL que obtiene un número limitado de empleados por página usando
LIMITyOFFSET. - El
LIMITcontrola cuántos registros se devuelven, y elOFFSETdetermina desde qué registro empezar a mostrar.
- Realizamos una consulta SQL que obtiene un número limitado de empleados por página usando
-
obtenerTotalEmpleados():- Esta función obtiene el total de empleados de la base de datos, lo cual es necesario para calcular el número de páginas en la vista (paginación).
5.2.2 Modificación del Controlador
El Controlador es el encargado de manejar la lógica de negocio, y en este caso, necesitamos modificarlo para que gestione la paginación.
Código del EmpleadoControlador.php modificado para la paginación:
Modificación del controlador
Explicación:
-
verEmpleados($pagina):- Recibe el número de página desde la URL.
- Llama al Modelo para obtener los empleados correspondientes a esa página y calcula el número total de páginas disponibles.
-
$totalPaginas: Calculamos el total de páginas dividiendo el total de empleados por la cantidad de empleados por página. Usamosceil()para redondear hacia arriba.
5.2.3 Modificación de la Vista
Ahora que el Controlador nos pasa los empleados de la página actual y el número total de páginas, debemos modificar la Vista para mostrar los empleados y los controles de paginación.
Código de la Vista (empleados.php) con paginación:
La vista mostrará los empleados obtenidos desde el Controlador y añadirá controles de paginación para navegar entre las páginas. Ya que las páginas pueden ser muchas, es importante que la paginación sea clara y fácil de usar. En este caso hemos creado enlaces:
- Primera: Enlace a la primera página.
- Anterior: Enlace a la página anterior (si no estamos en la primera).
- Página actual: Muestra el número de la página actual y el total de páginas.
- Siguiente: Enlace a la siguiente página (si no estamos en la última).
- Última: Enlace a la última página.
Modificación de la vista
Modificación del front controller (controlador frontal)
En el controlador frontal, debemos asegurarnos de que la acción de ver empleados esté correctamente configurada para manejar la paginación. Esto implica pasar el número de página a la función del controlador. El número de página siempre debe ser un número entero positivo, y si no se proporciona, se asume que es la primera página.
Explicación:
- Tabla de empleados: Muestra los empleados obtenidos desde el Controlador.
- Controles de paginación:
- Primer enlace: Redirige a la primera página.
- Enlace anterior: Muestra el enlace a la página anterior si no estamos en la primera página.
- Página actual: Muestra el número de la página actual y el total de páginas.
- Enlace siguiente: Muestra el enlace a la siguiente página si no estamos en la última página.
- Último enlace: Redirige a la última página de empleados.
Resumen del Punto 5.2:
- Modelo:
- Modificamos el modelo para manejar la paginación usando
LIMITyOFFSET. -
Añadimos una función para obtener el total de empleados, necesario para calcular el número total de páginas.
-
Controlador:
-
El controlador ahora maneja la paginación de los empleados, pasando los empleados de la página actual y el número total de páginas a la vista.
-
Vista:
- La vista muestra los empleados de la página actual y los controles de paginación para navegar entre las páginas de empleados.
Próximos pasos:
- Implementar validaciones y mejorar la experiencia de usuario con filtros adicionales.
- Mejorar la estética de la paginación y agregar más funcionalidades como búsquedas o ordenación de los empleados.