generarPaginador($pagina_actual, $total_paginas, $por_pagina)

 Propósito de la función

Genera un componente visual (paginador) que permite navegar entre diferentes páginas de resultados, comúnmente usado en listados de datos.

🔧 Parámetros que recibe:

  • $pagina_actual: La página en la que se encuentra el usuario

  • $total_paginas: Cuántas páginas existen en total

  • $por_pagina: Cuántos elementos se muestran por página

🧩 Estructura del paginador:

text
[«] [1] [2] [3] [4] [5] [»]

🔍 Desglose del código:

1. Botón "Anterior" (←)

php
if ($pagina_actual > 1) {
    // Habilita el botón si NO estamos en la primera página
    $html .= '<a href="?page='.($pagina_actual - 1).'">←</a>';
} else {
    // Deshabilita el botón si estamos en la primera página
    $html .= '<span class="disabled">←</span>';
}

2. Números de páginas

php
$inicio = max(1, $pagina_actual - 2);  // Muestra desde 2 páginas antes
$fin = min($total_paginas, $pagina_actual + 2);  // Hasta 2 páginas después

for ($i = $inicio; $i <= $fin; $i++) {
    if ($i == $pagina_actual) {
        // Página actual (resaltada)
        $html .= '<span class="active">'.$i.'</span>';
    } else {
        // Otras páginas (clickeables)
        $html .= '<a href="?page='.$i.'">'.$i.'</a>';
    }
}

3. Botón "Siguiente" (→)

php
if ($pagina_actual < $total_paginas) {
    // Habilita el botón si NO estamos en la última página
    $html .= '<a href="?page='.($pagina_actual + 1).'">→</a>';
} else {
    // Deshabilita el botón si estamos en la última página
    $html .= '<span class="disabled">→</span>';
}

🎯 Ejemplo práctico:

Si tenemos:

  • $pagina_actual = 3

  • $total_paginas = 10

  • $por_pagina = 20

El paginador se vería así:

text
[←] [1] [2] [3] [4] [5] [→]

URL generada: ?page=4&limit=20 (al hacer clic en la página 4)

💡 Ventajas de este diseño:

  • Navegación intuitiva con botones anterior/siguiente

  • Vista contextual - muestra páginas cercanas a la actual

  • Estado visual claro - página actual resaltada, botones deshabilitados cuando corresponda

  • Responsive - usa clases de Bootstrap para buen diseño

📊 Cómo calcular los datos para llamar la función:

php
$total_elementos = 100;  // Total de registros en la base de datos
$por_pagina = 20;        // Elementos por página
$pagina_actual = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$total_paginas = ceil($total_elementos / $por_pagina);

echo generarPaginador($pagina_actual, $total_paginas, $por_pagina);

Esta función es esencial para cualquier aplicación que maneje grandes cantidades de datos y necesite dividirlos en páginas para mejor usabilidad.


  1. La función generarPaginador necesita saber el $total_paginas (que depende de $total_solicitudes) para:

    • Saber cuándo mostrar/ocultar el botón "Siguiente"

    • Saber cuántos números de página mostrar

    • Determinar si la página actual es la última

Flujo del proceso:

  1. Obtener total$total_solicitudes = obtenerTotalSolicitudes($pdo);

  2. Calcular páginas$total_paginas = ceil($total_solicitudes / $por_pagina);

  3. Obtener datos paginados$solicitudes = obtenerSolicitudesPaginadas($pdo, $inicio, $por_pagina);

La función obtenerSolicitudesPaginadas solo obtiene un subconjunto de datos (los que corresponden a la página actual), mientras que $total_solicitudes representa el conjunto completo de datos, que es necesario para la lógica de paginación.

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