miércoles, 30 de enero de 2013
Pâginación PHP con Librería Zebra Pagination
En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación.
La paginación consiste en dividir una cantidad de resultados en diferentes partes, para que no aparezcan todos de golpe y de esa manera evitar listados muy grandes.
La librería Zebra Pagination, es una librería escrita en PHP, y su función el realizar una paginación aparentemente compleja de forma muy sencilla.
Esta librería se puede descargar de: http://stefangabos.ro/php-libraries/zebra-pagination/
Ejemplo
En este ejemplo vamos a utilizar también la librería ezSQL para conectar con una base de datos.
Antes de continuar con este blog, recomendaría que os leyerais http://daycryweb.blogspot.com.es/2013/01/libreria-ezsql.html, para poder entender un poco el funcionamiento de ezSQL.
Conexión con la Base de datos
<?php
//includes del ezSQL
require_once ' lib/ez_sql_core.php';
require_once 'lib/ez_sql_mysql';
//includes de Zebra_Pagination
require_once 'lib/Zebra_Pagination.php';
$conex = new ezSQL_mysql('usuario', 'password', 'base_datos', 'servidor');
?>
//includes del ezSQL
require_once ' lib/ez_sql_core.php';
require_once 'lib/ez_sql_mysql';
//includes de Zebra_Pagination
require_once 'lib/Zebra_Pagination.php';
$conex = new ezSQL_mysql('usuario', 'password', 'base_datos', 'servidor');
?>
Para poder realizar la pagínación de forma correcta, necesitamos dos parametros:
- Número de datos por página
- Número de datos en total
Esto lo podríamos saber de la siguiente manera:
<?php
//número de datos en total
$total = $conex->get_var('SELECT count(*) FROM alumnos');
//número de datos por página
$resultados = 10;
?>
//número de datos en total
$total = $conex->get_var('SELECT count(*) FROM alumnos');
//número de datos por página
$resultados = 10;
?>
Una vez tenemos estos dos datos ahora ya podemos utilizar nuetra librería Zebra:
<?php
//instanciamos la clase
$paginacion = new Zebra_Pagination();
//para indicarle el total de registros que van a salir en la tabla
$paginacion->records($total);
$paginacion->records_per_page($resultados);
//para quitar los '0' en los números con una sola cifra, sino saldrían de la siguiente forma 01, 02, ...
$paginacion->padding(false);
?>
//instanciamos la clase
$paginacion = new Zebra_Pagination();
//para indicarle el total de registros que van a salir en la tabla
$paginacion->records($total);
$paginacion->records_per_page($resultados);
//para quitar los '0' en los números con una sola cifra, sino saldrían de la siguiente forma 01, 02, ...
$paginacion->padding(false);
?>
Vamos a limitar la salida de los resultados de cada página, con la cláusula LIMIT de MySQL, de esa manera si estamos en la página 1, sacará resultados del 1 al 10, en la página 2, del 11 al 20, y así sucesivamente.
<?php
$alumnos = $conex->get_results('SELECT * FROM alumnos LIMIT ' . (($paginacion->get_page() - 1) * $resultados . ', ' . $resultados);
//$paginacion->get_page(), nos indica en que página estamos, dentro de nuestra paginación de resultados.
//imprimos los resultados
foreach ($alumnos as $alumno){
echo $alumno->id . " " . echo $alumno->nombre;
}
//para que nos aparezcan el total de páginas, y podamos acceder a cada una de ellas
$paginacion->render();
?>
$alumnos = $conex->get_results('SELECT * FROM alumnos LIMIT ' . (($paginacion->get_page() - 1) * $resultados . ', ' . $resultados);
//$paginacion->get_page(), nos indica en que página estamos, dentro de nuestra paginación de resultados.
//imprimos los resultados
foreach ($alumnos as $alumno){
echo $alumno->id . " " . echo $alumno->nombre;
}
//para que nos aparezcan el total de páginas, y podamos acceder a cada una de ellas
$paginacion->render();
?>
La librería Zebra, trae un css por defecto, que podríamos utilizar con total normalidad, y los resultados meterlos en una tabla HTML para que quedara mas visual, pero el funcionamiento sería el mismo.
Algo Interesante
Recientemente he publicado un post que habla sobre la paginación en tablas con jquery, son las llamadas dataTables.
Sería interesante que le pasarais para verlo ya que la informática avanza y las tecnologias de paginación tambien.
Aquí os dejo el link:
Suscribirse a:
Enviar comentarios
(
Atom
)
Sígueme en las Redes Sociales
Donaciones
Datos personales
Entradas populares
-
En este apartado vamos a explicar como ejercutar archivos PHP a través del terminal de Ubuntu. Lo primero que tendríamos que hacer es inst...
-
En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación. La paginaci...
-
Este post trata de la integración de la librería PHPExcel en Codeigniter, aunque se podría aplicar a cualquier librería, como por ejemplo mP...
-
Ejemplo para añadir o sumar un número determinado de hora/s, minuto/s, segundo/s a una fecha en php. Con la función strtotime se puede ...
-
Este tema es uno de los temas primordiales sobre el framework Codeigniter, ya que en alguna ocación nos hemos visto obligados a recoger dato...
© Espacio Daycry - Espacio de programación 2013 . Powered by Bootstrap , Blogger templates and RWD Testing Tool
Me ayudas a implementar esta libreria pero con datos XML para poder paginarlos??? Gracias
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminartu explicacion es muy buena pero como lo puedo hacer con un codigo hecho con dreamweaver con la clausula limit
ResponderEliminar------$query_allmovies = "SELECT * FROM tbltodaslaspelis ORDER BY idPelicula DESC";
$query_limit_allmovies = sprintf("%s LIMIT %d, %d", $query_allmovies, $startRow_allmovies, $maxRows_allmovies);----------- si me dieras una idea seria fantastico
La clave de la paginación es el cálculo de qué elementos se deben mostrar y eso se realiza a través de la variable página, esa variable página la puede recoger por get, por post o incluso por ajax, una vez recogido ese valor debes de realizar los cálculos dependiendo del número de elementos que desees mostrar y pasárselos al parámetro LMIT de la query.
EliminarAunque antes de realizar estos pasos, primero conseguiría que te funcionara la query sin paginación, y después jugar con el LIMIT. Cualquier cosa me avisas o me envías que código tienes para poderte ayudar mejor.