Flujo de la Paginación

Flujo de la Paginación

1. Configuración Inicial

php
$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

php
$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

php
$inicio = ($pagina_actual - 1) * $por_pagina;
  • Ejemplo: Si estás en página 2 con 10 registros por página:

    • $inicio = (2 - 1) * 10 = 10

    • Esto significa que en SQL se saltará los primeros 10 registros

4. Obtención de Datos

a) obtenerTotalSolicitudes($pdo)

php
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)

php
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_pagina para paginar

  • EjemploLIMIT 10, 10 → registros 11 al 20

c) Cálculo de páginas totales

php
$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

php
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=100 pero solo hay 5 páginas

  • Corrige automáticamente a la última página válida

6. Generación del Paginador

php
generarPaginador($pagina_actual, $total_paginas, $por_pagina)

Crea los botones de navegación:

  • Anterior?page=X-1&limit=Y

  • Números de página?page=X&limit=Y

  • Siguiente?page=X+1&limit=Y

¿Qué Sucede al Paginar?

  1. Click en "Siguiente" → ?page=2&limit=10

  2. El servidor recibe estos parámetros GET

  3. Se calcula: $inicio = (2-1)*10 = 10

  4. Se ejecuta: SELECT * FROM solicitudes LIMIT 10, 10

  5. Se muestran los registros 11-20

  6. 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

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API