PHP - Paginación

 
Vista:
sin imagen de perfil
Val: 54
Ha aumentado su posición en 44 puestos en PHP (en relación al último mes)
Gráfica de PHP

Paginación

Publicado por Sergio (28 intervenciones) el 23/04/2021 20:46:34
Buenas noches. Tengo un script php maestro - detalle. Muestro una factura y debajo las líneas de detalle. También he puesto una paginación pero necesito saber como hacer para que cuando haya muchos registros, me muestre esto: 1 2 3 ... 7 8 9 10. Ahora os pongo el código de la paginación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$total_registros_bd=mysqli_num_rows($resultado);
$registros_por_pagina = 1;
 
$total_paginas = $total_registros_bd / $registros_por_pagina;
$total_presupuesto = 0;
 
$iniciar = ($_GET['pagina']-1) * $registros_por_pagina;
 
<nav aria-label="Page navigation example">
    <ul class="pagination">
        <li class="page-item <?php echo $_GET['pagina']<=1 ? 'disabled' : '';?>">
            <a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']-1;?>">Anterior</a></li>
 
        <?php for($i=0;$i<$total_paginas;$i++):?>
            <li class="page-item <?php echo $_GET['pagina']==$i+1 ? 'active' : '';?>">
            <a class="page-link" href="index.php?pagina=<?php echo $i+1 ?>">
            <?php echo $i+1 ?></a></li>
        <?php endfor ?>
 
        <li class="page-item <?php echo $_GET['pagina']>=$total_paginas ? 'disabled' : '';?>">
            <a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']+1;?>">Siguiente</a></li>
    </ul>
</nav>


Espero que me podais ayudar. Gracias. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.722
Plata
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Paginación

Publicado por Mauro (870 intervenciones) el 14/05/2021 17:18:08
Hola Sergio:

Deberías poner un límite a la cantidad de páginas que quieres mostrar para un lado y para otro.

Tomando tu ejemplo (1, 2, 3...7,8,9,10), estarías mostrando las 3 primeras y las 4 últimas.

Para saber cuáles son efectivamente las que estarán presentes necesitas saber el total de páginas que tendrás.

Ese número lo calculas en base a la cantidad total de registros dividida por el tamaño de cada página.

Una vez obtenido el número total puedes hacer un ciclo de 1 hasta el número de páginas "iniciales" generando un enlace a cada una de ellas y lo mismo para las últimas páginas (Sólo que ciclando hacia atrás).

Cuando tengas todos los enlaces simplemente los dispones en la página y en el medio le pones los "...".

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha aumentado su posición en 44 puestos en PHP (en relación al último mes)
Gráfica de PHP

Paginación

Publicado por Sergio (28 intervenciones) el 14/05/2021 17:27:48
Gracias Mauro. Cómo habrás visto en el código, sólo muestro un registro cada vez. El total de páginas es el total de registros. Por eso lo de los puntos suspensivos. Cogiendo mi código, ¿me podías aclarar un poco más? Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar