Me pareció muy didáctico y fácil este script de dooky para paginar. Sobre los errores de los que se habla arriba. Hice algunas correciones.
Éste sería el código final donde he corregido lo siguiente:
-Funciona con register_globals en OFF.
-Corregido el error por el cual se mostraba una página vacía al final cuando era exacto el número de registros dividido por la cantidad de registros a mostrar por página. Es decir, cuando $total_records / $cantidad = entero. Error detectado por Zertiko y corregido por josemi en:
http://www.forosdelweb.com/s/msg143725.html
-Uso de $_SERVER['PHP_SELF'], en lugar del nombre del script para facilitar la adaptación con cambios en menos líneas.
-Uso de mysql_query() en lugar de mysql_db_query(), ya que no era necesario al haberse seleccionado la bd con mysql_select_bd().
Código PHP:
<html>
<head>
<title>Páginación de resultados</title>
</head>
<body bgcolor=#FFFFFF>
<?
// Datos de conexión a la base
$servidor="localhost";
$usuario="tu_user";
$password="tu_password";
$base="tu_base";
$con = mysql_connect($servidor,$usuario,$password) or die (mysql_error());
mysql_select_db($base,$con) or die (mysql_error());
if (!isset($_GET['pg'])){
$pg = 0; // $pg es la pagina actual
}else{
$pg=$_GET['pg'];
}
$cantidad=5; // cantidad de resultados por página
$inicial = $pg * $cantidad;
$pegar = "SELECT * FROM tabla ORDER BY titulo LIMIT $inicial,$cantidad";
$cad = mysql_query($pegar) or die (mysql_error());
$contar = "SELECT * FROM tabla ORDER BY titulo";
$contarok= mysql_query($contar);
$total_records = mysql_num_rows($contarok);
$pages = ceil($total_records / $cantidad);
// Imprimiendo los resultados
while($array = mysql_fetch_array($cad)) {
echo $array['titulo']."<br>";
}
// Cerramos la conexión a la base
$con=mysql_close($con);
// Creando los enlaces de paginación
echo "<p>";
if ($pg <> 0){
$url = $pg - 1;
echo "<a href='paginar.php?pg=".$url."'>« Anterior</a> ";
}else {
echo " ";
}
for ($i = 0; $i<$pages; $i++) {
if ($i == $pg) {
echo "<font face=Arial size=2 color=ff0000><b> $i </b></font>";
}else{
echo "<a href='".$_SERVER['PHP_SELF']."?pg=".$i."'>".$i."</a> ";
}
}
if ($pg < $pages-1) {
$url = $pg + 1;
echo "<a href='".$_SERVER['PHP_SELF']."?pg=".$url."'>Siguiente »</a>";
}else {
echo " ";
}
echo "</p>";
?>
</body>
</html>
Saludos