Anteriormente habia hecho una entrada en este mismo blog sobre como realizar la paginacion de manera estructurada.
Hoy vengo a presentarles la libreria Zebra Paginator la cual nos generará los links de paginacion casi de manera automatica, solo necesitaremos el archivo siguiente: https://raw.githubusercontent.com/stefangabos/Zebra_Pagination/master/Zebra_Pagination.php
Aqui algunas de las propiedades, metodos que tendremos que configurar, ademas sobre algunas funciones de MySQL no muy conocidas.
get_page() - Este metodo retorna el numero de paginas actuales
records() - Establece el numero total de registros que deben ser paginados.
records_per_page() - Establece el numero de registros que se muestran en una sola pagina.
render() - Genera la salida.
SQL_CALC_FOUND_ROWS - Calcula el numero de resultados de una consulta sin LIMIT.
FOUND_ROWS() - obtiene el resultado del ultimo SQL_CALC_FOUND_ROWS ejecutado.
Hay cuatro propiedades que se cambian muy usualmente en la libreria las cuales son:
* next - esta muestra el texto a salida. Ejemplo: Siguiente
* previous - esta muestra el texto a salida. Ejemplo: Anterior
* variable_name - Es la variable que sera usada. Ejemplo: pagina
* method - Es el metodo por el cual se enviara GET o POST
Un ejemplo basico de paginacion seria el siguiente, el cual es algo generico ya que usamos la base de datos information_schema para que no tengas que crear una base de datos en este ejemplo:
<title>Paginacion</title> <style type="text/css"> .Zebra_Pagination li { list-style-type: none; display: inline; padding-right: 5px; } </style> <?php $con = mysqli_connect('localhost','root','','information_schema') or die(mysqli_error()); // cuanto registros seran mostrados por pagina $records_per_page = 10; // incluimos la clase require 'Zebra_Pagination.php'; // instanciamos el objeto zebra paginator $pagination = new Zebra_Pagination(); // la declaracion mysql para devolver registros // nota como creamos el limit // tambien, nota el "SQL_CALC_FOUND_ROWS" // esto es para obtener el número de filas que han sido devueltos si no había LIMIT // mira mas http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows $MySQL = ' SELECT SQL_CALC_FOUND_ROWS * FROM tables LIMIT ' . (($pagination->get_page() - 1) * $records_per_page) . ', ' . $records_per_page . ' '; // si la consulta no se pudo ejecutar if (!($result = @mysqli_query($con,$MySQL))) { // dejamos un mensaje de error die(mysqli_error($con)); } // arrojamos el numero de registros totales de la tabla $rows = mysqli_fetch_assoc(mysqli_query($con,'SELECT FOUND_ROWS() AS rows')); // pasamos el numero total de registros a la clase pagination $pagination->records($rows['rows']); // registros por pagina $pagination->records_per_page($records_per_page); ?> <table class="countries" border="1"> <tr><th>Prueba</th></tr> <?php while ($row = mysqli_fetch_assoc($result)):?> <tr> <td><?php echo $row['TABLE_NAME']; ?></td> </tr> <?php endwhile?> </table> <?php // Da salida a los enlaces de paginacion $pagination->render(); ?>
Hay cosas que no tomo muy en cuenta a explicar como son la instancia del objeto Zebra Paginator, incluir la libreria, mostrar estilos de salida, o reaizar las peticiones en la db, lo que les recomendaria es checar la libreria desde Github obteniendo muchos ejemplos, es una libreria muy limpia, y contiene muchos ejemplos, esto es todo saludos!
No hay comentarios:
Publicar un comentario