La paginacion es una caracteristica que nos permite crear “paginas” de los resultados que obtenemos al consultar la base de datos, las “paginas” nos permiten optimizar la carga de resultados.
Introduccion
El uso de paginacion es beneficioso en sistemas donde la carga de resultados de la base de datos es mucho, digamos 1000 resultados.
Si no usamos paginacion, entonces cada vez que se carga la pagina donde mostramos los resultados.
Al agregar elementos no se paginan por lo tanto todos los elementos se muestran en la misma pagina y si son muchos resultados entonces se afectara la carga de la pagina.
Paginacion
La paginacion nos ayuda a cargar los resultados poco a poco, es decir, si tenemos 1000 resultados, podemos cargar los resultados de 10 en 10 o de 25 en 25 o de 100 en 100, segun nuestro criterio.
Ahora si usamos un limite de pagina de 10 resultados entonces tendremos 1000/10=100 paginas, donde contaremos con links para navegar entre las diferentes paginas, lo que nos ahorra cargar los 1000 resultados.
Ejemplo
Bueno el ejemplo que les traigo es una paginacion basica, pero que cumple su funcion, para hacer uso del ejemplo deben seguir las siguientes instrucciones:
Forma 1
Descargar e instalar el archivo CRUD del ejemplo: http://evilnapsis.com/2015/06/22/crud-con-php-y-mysql/
Sustituir el archivo crud/php/tabla.php por el siguiente codigo:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
include "conexion.php"; | |
$limitpage = 10; | |
$page = 1; | |
if(isset($_GET["page"]) && $_GET["page"]!=""){ $page=$_GET["page"]; } | |
$startpage = 0; | |
$endpage = $limitpage; | |
if($page>1){ $startpage=($page-1)*$limitpage;$endpage=($page)*$limitpage; } | |
//echo $startpage; | |
$user_id=null; | |
$sql0= "select count(*) as c from person"; | |
$query0 = $con->query($sql0); | |
$count = $query0->fetch_array(); | |
$npages = $count["c"]/$limitpage; | |
$sql1= "select * from person limit $startpage,$limitpage"; | |
$query = $con->query($sql1); | |
?> | |
<?php if($query->num_rows>0):?> | |
<h4>Pagina <?php echo $page; ?> de <?php echo ceil($npages); ?></h4> | |
<table class="table table-bordered table-hover table-condensed"> | |
<thead> | |
<th>Id</th> | |
<th>Nombre</th> | |
<th>Apellido</th> | |
<th>Email</th> | |
<th>Direccion</th> | |
<th>Telefono</th> | |
<th></th> | |
</thead> | |
<?php while ($r=$query->fetch_array()):?> | |
<tr> | |
<td><?php echo $r["id"]; ?></td> | |
<td><?php echo $r["name"]; ?></td> | |
<td><?php echo $r["lastname"]; ?></td> | |
<td><?php echo $r["email"]; ?></td> | |
<td><?php echo $r["address"]; ?></td> | |
<td><?php echo $r["phone"]; ?></td> | |
<td style="width:150px;"> | |
<a href="./editar.php?id=<?php echo $r["id"];?>" class="btn btn-sm btn-warning">Editar</a> | |
<a href="#" id="del-<?php echo $r["id"];?>" class="btn btn-sm btn-danger">Eliminar</a> | |
<script> | |
$("#del-"+<?php echo $r["id"];?>).click(function(e){ | |
e.preventDefault(); | |
p = confirm("Estas seguro?"); | |
if(p){ | |
window.location="./php/eliminar.php?id="+<?php echo $r["id"];?>; | |
} | |
}); | |
</script> | |
</td> | |
</tr> | |
<?php endwhile;?> | |
</table> | |
<?php if($count["c"]>$limitpage):?> | |
<ul class="pagination"> | |
<?php if($page>1):?> | |
<li> | |
<a href="<?php if($page>2):?>./index.php?page=<?php echo $page-1; ?><?php else:?> ./index.php <?php endif; ?>" aria-label="Previous"> | |
<span aria-hidden="true">«</span> | |
</a> | |
</li> | |
<li><a href="index.php">1</a></li> | |
<?php endif; ?> | |
<?php | |
for($i=2;$i<$npages+1;$i+=1):?> | |
<li><a href="index.php?page=<?php echo $i;?>"><?php echo $i; ?></a></li> | |
<?php endfor; ?> | |
<?php if($page<$npages):?> | |
<li> | |
<a href="index.php?page=<?php echo $page+1;?>" aria-label="Next"> | |
<span aria-hidden="true">»</span> | |
</a> | |
</li> | |
<?php endif; ?> | |
</ul> | |
<?php endif; ?> | |
<?php else:?> | |
<p class="alert alert-warning">No hay resultados</p> | |
<?php endif;?> |
En el archivo de ejemplo, pueden modificar la linea 5 para cambiar el limite de elementos por pagina, por default lo grabe en 10.
Forma 2
Descargar e instalar usando las instrucciones de mi “CRUD con PHP y MySQL”
[sociallocker]https://drive.google.com/open?id=0B4VwLG0Dpi3tRDRNaDEtU1hHSzQ
[/sociallocker]Diviertete
No queda mas que decir que te diviertas, si te apasiona la programacion y el desarrollo de software te a consejo que lo hagas con pasion y que lo disfrutes y que tambien compartas tus conocimientos.
Si este articulo te ayudo por favor escribeme en los comentarios.
Y no olvides que agradezco que te suscribas a mi canal de youtube https://youtube.com/evilnapsis/ ya que tengo una meta que cumplir y no lo lograre sin tu ayuda.
Excelente contenido, justo me tope con 14000 registros y cargaban muy lento. Muchas gracias.
Un gusto haber podido ayudarte, saludos