> Manuales > Taller de PHP

Vemos una clase en PHP que nos permite paginar los resultados obtenidos mediante una consulta MySQL.

En esta ocasión vamos a analizar una clase,de programación orientada a objetos en PHP, que nos ayuda a paginar resultados obtenidos mediante una consulta en MySQL. Como quizás sepamos, la paginación de resultados permite mostrar la salida de una consulta en varias partes o páginas.

Imaginaros que queremos hacer una consulta para encontrar elementos en una base de datos y que se reciben cientos o miles de resultados. Quizás sería demasiado excesivo mostrarlos todos en la misma página, así que la solución pasa por implementar un sistema que permita ver los resultados en distintas páginas, de manera similar a como lo hacen los buscadores como Google.

Entendemos que ya sabes perfectamente lo que es una páginación y lo que quieras es implementarla en tu sitio web. Para ello tienes varias posibilidades. Puedes hacer el trabajo desde cero por tu cuenta, creando un sistema único para tu sitio web, o si lo prefieres, puedes utilizar un desarrollo creado por otras personas y adaptarlo a tus necesidades, que es lo que te vamos a enseñar en este artículo.

Nota: En DesarrolloWeb.com ya hemos tratado en algunos artículos el tema de la paginación, enseñando paso por paso a realizarla con PHP y MySQL, o mostrando como utilizar algún script ya creado como Paginator.

Simple Pagination usando MySQL

La clase que vamos a presentar en este artículo es bastante sencilla. De hecho, su propio nombre (Simple Pagination usando MySQL) ya nos sugiere que está realizada de manera que sea muy fácil de utilizar. Lo que básicamente tenemos que hacer es incluir la clase ya creada y previamente descargada de PHPClasses en nuestro archivo PHP.

Una vez que la tenemos incluida, creamos nuestra SQL y la guardamos en una variable, que podemos llamar de cualquier forma, por ejemplo $query. A continuación creamos un nuevo objeto de la clase pagination con la siguiente linea:

$pagination= new pagination();

Una vez que tenemos esto le pasamos la SQL y el numero de registros que queremos que aparezcan por página.

$pagination->createPaging($query,10);

Con la anterior línea se ejecuta la sentencia SQL, que habíamos cargado en $query, indicando que queremos los resultados paginados de 10 en 10 elementos. Realizado ese paso, podemos acceder a la propiedad "resultpage" en el objeto $pagination, donde tendremos un recordset con los resultados a mostrar.

Para presentar por pantalla los registros únicamente tendremos que implementar un bucle WHILE que recorra el recordset. Podríamos hacer esto de la siguiente manera:

while($fila=mysql_fetch_object($pagination->resultpage)) {
   echo $fila->nombre;
}

Para acabar, necesitamos colocar los enlaces a las siguientes páginas, con el siguiente código:

$pagination->displayPaging();

El método displayPaging() ya se encarga de mostrar los enlaces a las siguientes páginas de resultados. Nosotros no tenemos que hacer nada más que esa llamada y el propio objeto escribirá tantos enlaces como sea necesario, teniendo en cuenta las páginas de resultados que se hayan producido.

Cuando un usuario pulsa sobre un enlace, para ver otra página de resultados, distinta de la primera, se hace una llamada al mismo script de paginación, pero pasando una variable, que es el número de página que se desea ver. El propio objeto de paginación es lo suficientemente inteligente para saber qué página de resultados debe mostrar, atendiendo a las variables recibidas. O en el caso de no recibir ninguna página, sin tener que decirle nada, ya nos muestra únicamente la primera.

Como veis es bastante sencillo de implementar y puede ayudar bastante en cualquier tipo de página donde deseemos mantener resultados de búsquedas de una manera corta y ordenada.

Código completo de la paginación simple con MySQL

Para que os hagáis una idea de como quedaría un código completo, os dejo un ejemplo a continuación:

<?
include_once("pagination.class.php");
$pagination = new pagination();
$query = "SELECT * FROM usuario WHERE 1";
$pagination->createPaging($query,10);
echo '<table border="1" width="400" align="center">';
while($row=mysql_fetch_object($pagination->resultpage)) {
echo '<tr><td>'.$row->nombre.'</td><td>'.$row->edad.'</td></tr>';
}
echo '</table>';
echo '<table border="1" width="400" align="center">';
echo '<tr><td>';
$pagination->displayPaging();
echo '</td></tr>';
echo '</table>';
?>

Conclusión

Si lo comparamos con paginator, pues personalmente le veo más pobre pero si queremos algo sencillo y que nos saque de un apuro en un momento dado, nos viene bastante bien.

Además, según mi punto de vista, el hecho de este script estar programado con programación orientada a objetos, hace que sea un poco más fácil de utilizar y simplifica considerablemente la implementación del script. Del mismo modo, el uso de clases facilita el mantenimiento de la aplicación web que estamos realizando, por lo que nos vendrá muy bien. Incluso para las personas que no tienen nociones de programación orientada a objetos, resultará de fácil implementación y permitirá avanzar un poco más en las tareas habituales de desarrollo.

Sara Alvarez

Equipo DesarrolloWeb.com

Manual