Flujo de la Paginación
Flujo de la Paginación
1. Configuración Inicial
$por_pagina = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
$pagina_actual = isset($_GET['page']) ? (int)$_GET['page'] : 1;$por_pagina: Número de registros por página (default: 10)$pagina_actual: Página actual que se está viendo (default: 1)
2. Validación
$por_pagina = max(5, min($por_pagina, 100)); // Límite entre 5 y 100
$pagina_actual = max(1, $pagina_actual);Asegura que no haya valores inválidos
Los límites por página están entre 5 y 100
La página actual nunca es menor a 1
3. Cálculo del Inicio
$inicio = ($pagina_actual - 1) * $por_pagina;Ejemplo: Si estás en página 2 con 10 registros por página:
$inicio = (2 - 1) * 10 = 10Esto significa que en SQL se saltará los primeros 10 registros
4. Obtención de Datos
a) obtenerTotalSolicitudes($pdo)
function obtenerTotalSolicitudes($pdo) {
$stmt = $pdo->query("SELECT COUNT(*) as total FROM solicitudes");
return $stmt->fetch()['total'];
}Cuenta el total de registros en la tabla
Es necesario para calcular el número total de páginas
b) obtenerSolicitudesPaginadas($pdo, $inicio, $por_pagina)
function obtenerSolicitudesPaginadas($pdo, $inicio, $por_pagina) {
$stmt = $pdo->prepare("SELECT * FROM solicitudes ORDER BY fecha_registro DESC LIMIT :inicio, :por_pagina");
$stmt->bindValue(':inicio', $inicio, PDO::PARAM_INT);
$stmt->bindValue(':por_pagina', $por_pagina, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetchAll();
}Obtiene solo los registros de la página actual
Usa
LIMIT :inicio, :por_paginapara paginarEjemplo:
LIMIT 10, 10→ registros 11 al 20
c) Cálculo de páginas totales
$total_paginas = ceil($total_solicitudes / $por_pagina);Ejemplo: 47 registros totales ÷ 10 por página = 4.7 → 5 páginas
5. Validación de Límites
if ($pagina_actual > $total_paginas && $total_paginas > 0) {
$pagina_actual = $total_paginas;
$inicio = ($pagina_actual - 1) * $por_pagina;
$solicitudes = obtenerSolicitudesPaginadas($pdo, $inicio, $por_pagina);
}Si el usuario pone manualmente
?page=100pero solo hay 5 páginasCorrige automáticamente a la última página válida
6. Generación del Paginador
generarPaginador($pagina_actual, $total_paginas, $por_pagina)Crea los botones de navegación:
Anterior:
?page=X-1&limit=YNúmeros de página:
?page=X&limit=YSiguiente:
?page=X+1&limit=Y
¿Qué Sucede al Paginar?
Click en "Siguiente" →
?page=2&limit=10El servidor recibe estos parámetros GET
Se calcula:
$inicio = (2-1)*10 = 10Se ejecuta:
SELECT * FROM solicitudes LIMIT 10, 10Se muestran los registros 11-20
El paginador muestra página 2 como activa
Ventajas de este Sistema
Eficiente: Solo carga los registros necesarios
Flexible: Permite cambiar items por página
Robusto: Valida y corrige parámetros inválidos
SEO-friendly: URLs con parámetros claros
El sistema asegura que siempre se muestren datos válidos sin importar qué parámetros ponga el usuario en la URL.
Comentarios
Publicar un comentario