Esta vez he querido publicar este manual/tutorial sobre esta pequeña librería. Existen varias alternativas modernas que utilizan incluso jQuery ya integrado, pero bueno esta es una forma simple de aprender. Me he dado cuenta que muchos están buscando y quieren saber como se implementa, bueno quizás algunos ya encontraron la forma pero otros no, y aquí esta su manual de implementación.
PHPPaging es una librería creada en su inicio por Myokram hasta la versión 2.1, que se encarga de paginar datos que le son dados desde un arreglo(array), puede ser base de datos u otro grupo de datos desde php, en un numero determinado de items por pagina. El Script es altamente personalizable, pudiendo darle un estilo mediante css y/o añadirle html.
Utilizando la Clase para PHPPaging:
Para utilizar la clase lo primero es incluir la clase al inicio de nuestro archivo PHP y luego creamos una instancia del objeto para utilizarlo posteriormente. Añadiremos las referencias a «config.php», «mysql_driver.php» y «PHPPaging.lib.php» , a nuestro ejemplo:
require_once('libreria/config.php'); // Datos de la conexión a una base de datos require_once('libreria/mysql_driver.php'); // Clase que realiza la Conexion a BD require_once('libreria/PHPPaging.lib.php'); // Libreria para el Paginado $pag = new PHPPaging($DB->conection()); // Tomado de del Articulo de Conexion a una BD mediante simpleDB.class
Asignamos la consulta a una base de datos, y valores de configuración para el paginado, así como el diseño del mismo. Pondremos como ejemplo una consulta que me listara los comentarios de un post.
$SQL = "SELECT nombre,email,fecha,comentario FROM comentarios"; $paging->agregarConsulta($SQL); $paging->porPagina(10); $paging->paginasAntes(4); $paging->paginasDespues(4); $paging->linkSeparador(" - "); //Significa que no habrá separacion $paging->linkEstructura("?page={n}"); $paging->linkSeparadorEspecial('...'); // Separador especial $paging->ejecutar();
Paso a explicar estas funciones:
$paging->agregarConsulta($SQL)
: Agrega la consulta que se paginara, OJO sin limitar la cantidad de registros a mostrar, ya que ese trabajo lo hará el PHPaging$paging->porPagina(10)
: Especifica el numero de registros a mostrar por pagina, en el caso del ejemplo seria cantidad de comentarios por pagina.$paging->paginasAntes(4)
: Número de páginas anteriores a la actual a las que se mostrará un link directo.$paging->linkSeparador(" - ")
: Este elemento sera el que aparecerá entre los links de las paginas, por ejemplo15 - 14 - 16
puedes especificar el que gustes, siempre y cuando se vea estético.$paging->linkEstructura("?page={n}")
: Esta función es bien importante ya que permite a la clase crear un link personalizable, podrás de esta forma crear las URL Amigables un ejemplo seria,noticia/comentarios/page{n}
donde {n} es el numero de la pagina que se escribirá en el link, si lo dejas tal como esta ahora o no lo defines seria simplementepagina.php?page=3
$paging->linkSeparadorEspecial('...')
: En esta función le puedes asignar un separador para cuando aya muchas paginas ya avanzadas como una especie de resumen a paginas mas lejanas y así no tener que avanzar de una en una$paging->ejecutar()
: Ejecuta la consulta y asigna valores de los definidos anteriormente, pero el paginador aun no muestra ningún resultado.
Bien una vez ya definido la estructura del paginador así como sus opciones para ser mostrado, pues toca mostrarlo, esto mediante un simple while, pero antes de esto debemos asegurarnos de que no ocurrió algún problema en la ejecución del script o ejecución de la consulta, asi como saber si hay registros que mostrar, para así mostrar un mensaje que haga saber al usuario que ocurrió un problema.
if ($paging->ejecutar()==true and $paging->numRegistrosMostrados() > 0){ while($datos = $paging->fetchResultado()){ echo "<div>". $datos["nombre"]." Email:" .$datos["email"]."</div><br />"; echo "<div>Publicado el ". date("F j, Y, g:i a",$datos["fecha"])."</div><br />"; echo "<div><pre>". $datos["comentario"]." Email:" .$datos["email"]."</pre></div><hr />"; } }
Finalmente mostramos la barra de Navegacion, tan simple como esto:
echo "<br />Paginas<br />".$paging->fetchNavegacion();
Esto seria todo lo básico para paginar contenidos desde una base de datos en PHP, pero hay algunas funciones mas que les mostrare para que les ayuden aun mas en sus proyectos:
$paging->modo("publicacion")
: Esta función sirve para definir si estamos ya publicando nuestro sitio, o si estamos aun en desarrollo, conveniente para saber si en algún momento hay un un error y que el script nos lo haga saber; aquí existen tres posibles modos:
publicacion
: Pagina ya finalizada, y no mostrara ningún error si es que los hubiese.
reporte
: Mostrara error si es que los hubiese. Pero solo un aviso, ningún otro detalle
desarrollo
: Pagina en desarrollo, mostrara todos los errores si es que los ubiese, pero de manera detallada$paging->verPost($boolean)
: Esta función Activa y Desactiva la recepción de datos por POST, esto te puede servir para ejecutar consultas por medio de Ajax sin necesidad de cargar la web, o para ejecutar la misma web sin mostrar la URL de paginado$paging->agregarArray(array)
: Esta función recibe un array de datos con todo el contenido que se paginara. Esta funcion puede ser muy útil para paginar también mediante Ajax o jQuery.$paging->nombreVariable("page")
: En esta función podemos definir el nombre de la variable que llevara el numero de pagina, que puede ser por defectopage
o simplementep
o cualquier otra palabra, como dije el script es personalizable$paging->linkAgregar()
: Esta funcion sirve para agregar una cadena al final de el link generado, esto puede servir para agregar un anclaje por ejemplo#coments
o una variable para utilizarla en php por ejemplo&va1r=cont
$paging->linkClase([cadena])
: Esta funcion permite asignar una cadena, un nombre de una clase de CSS para poderle dar un estilo propio a los enlaces en la barra de navegación.$paging->mantenerVar([array])
: Esta función permite ingresar un array en donde indicaremos variables desea mantener en la URL al momento de generar los links para la barra de navegación. La variable que propaga el número de página es incluida siempre y automáticamente. Esta función sólo funcionará si no se ha definido una estructura para los links(linkEstructura())
ni se ha hecho uso de la función(quitarVar())
.
Como se pudieron dar cuenta es muy fácil utilizar esta librería que a mi en lo particular me ayudo mucho en mis épocas de desarrollador web aficionado, las demás opciones de configuración son muy fáciles de manipular, existen otras pero creo que con estas están mas que listo para comenzar a trabajar con el. Les dejo el Link de Descarga y la Demo para que vean trabajar el Script.
Mencionar también que hice una modificación para que pueda funcionar en php 5.3 y superior, y decir que este script es de licencia libre así que el que puede modificar y aportar sus conocimientos a la comunidad bienvenido sea.