El script de paginación, PAGINATOR, desarrollado por Jorge Pinedo ha sido uno de los paginadores más sencillos de utilizar para personas que tienen un conocimiento de PHP y MySQL limitado. En su momento, me gusto tanto, que lo utilice de manera casi sistemática para prácticamente todo, y a día de hoy, es el método de paginación que empleamos en esta Web. El Paginator, tal y como lo desarrollo Jorge Pinedo está presentado en este artículo, que aunque desfasado, lo dejo por si didácticamente resulta interesante.
Con el cambio de servidor y paso a una nueva versión de PHP, la 5.3, empezaron los problemas, y aunque el código seguía funcionando de manera correcta, generaba un importante número de errores. Así, con esta mala noticia, me puse manos a la obra y me implique en actualizar este script de paginación.
Los cambios afectan fundamentalmente al archivo de paginación, cuyo nombre original es paginator.inc.php, que ahora pasa a llamarse paginator1.inc.php. Los cambios y modificaciones han sido marcados con una tiple x (xxx) y están descritos en líneas de comentarios. Este archivo puede ser sustituido por el original para corregir aquellos paginadores que ya están en funcionamiento.
En una modificación realizada por mi, y con el objetivo de modificar de manera sencilla algunos de los parámetros más interesantes del paginador en la propia consulta, ahora se definen unas variables que van a condicionar como funciona el script. Antes era preciso modificar estas líneas en el archivo de paginación, y ahora, para hacerlo más sencillo, las modificaciones se realizan en la misma página que ejecuta la consulta. El nuevo archivo es paginator2.inc.php. Y es este el caso con el que se corresponde el código que se presenta y la demo.
El primer cambio afecta a la variable $_pagi_nav_estilo que definía el estilo CSS para la barra de enlaces de navegación. Esta variable ahora la definimos antes de la inclusión del archivo de paginación junto a la consulta, como puede verse en el código.
El segundo cambio afecta al número de enlaces de paginación. La variable $enlacesdepaginacion, indica el número de enlaces de paginación que se mostrarán. Cuando esta variable toma el valor 0, aparecerán tantos enlaces como páginas existan. Si el número es distinto de 0, y atención, necesariamente impar, aparecerán como máximo el número de enlaces que se especifique, y se accederá a las nuevas páginas con los enlaces, siguiente, anterior, primera y última.
En cualquiera de los dos archivos de paginación se define ahora una variable que cuenta el número de resultado en la consulta, la variable es $_Num_regis_Consul.
Puedes descargar los tres archivos de paginación, el original y las dos correcciones desde aquí.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[]>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Paginacion con Paginator, adaptada por UTERRA.COM a PHP 5.3.</title>
<meta name="robots" content="noindex, nofollow" />
<style type="text/css">
<!--
/* Definimos la clase de paginación */
#cls_pagi {
font-family: verdana,arial; /*tipo de letra*/
font-size: 12pt; /*tamaño de la letra*/
}
a.cls_pagi:link {text-decoration:none; color:#008000;} /* Color del enlace no visitado */
a.cls_pagi:visited {text-decoration:none; color:#ff0000;} /* Color del enlace visitado */
a.cls_pagi:active {text-decoration:none; color:#99FF00;} /* Color que toma el ultimo enlace visitado */
a.cls_pagi:hover {text-decoration:underline; color:#0000FF;} /* Color que toma el enlace al pasar el raton sobre el */
-->
</style>
</head>
<body>
<div align="center">
<table border="1" width="700" id="table1">
<?php
error_reporting(-1);
ini_set("display_errors", 1);
include("../abre_conexion.php");
// Paginación con Paginator
$_pagi_sql = "SELECT * FROM $tabla_db1 ORDER BY id DESC";
$_pagi_result = mysql_query($_pagi_sql);
$_pagi_cuantos = 50; // Numero de registros por pagina
$_pagi_nav_estilo = "cls_pagi"; // Nombre clase CSS de los enlaces de paginacion (definida en la cabecera)
// Indica el numero de enlaces de paginacion, solo admite como valores 0 e impares. OJO, con 0 apareceran todos.
$enlacesdepaginacion = 11;
include("paginator2.inc.php");
while ($registro = mysql_fetch_array($_pagi_result)){
echo "<tr>
<td>".$registro['id']."</td>
<td>".$registro['nombre']."</td>
<td>".$registro['email']."</td>
<td>".$registro['fecha']."</td>
</tr>
";
}
include("../cierra_conexion.php");
echo "
</table>
</div>
";
// Incluimos las barras de navegación e informacion
echo "<div id = \"cls_pagi\"><p align=\"center\">".$_pagi_navegacion."</p>
<p align=\"right\">El total de registros en la consulta <b>".$_Num_regis_Consul."</b></p>
<p align=\"right\">Registros desde el ".$_pagi_info."</p> </div>";
?>
</body>
</html>