Proba con este, a mí me funciona bien:
Código PHP:
<?
//Limito la busqueda
$TAMANO_PAGINA = 20;
include("conexion.php");
conectar();
//miro a ver el número total de campos que hay en la tabla con esa búsqueda
$rs = mysql_query("SELECT id FROM tabla");
$num_total_registros = mysql_num_rows($rs);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);
//examino la página a mostrar y el inicio del registro a mostrar
$pagina = $_GET["pagina"];
if (ereg("^[0-9]{1,10}$", $_GET['pagina']) && $total_paginas >= $pagina){
$inicio = ($pagina - 1) * $TAMANO_PAGINA;
}else{
$inicio = 0;
$pagina = 1;
}
//construyo la sentencia SQL
$rs = mysql_query("SELECT id FROM tabla LIMIT " . $inicio . "," . $TAMANO_PAGINA);
while ($fila = mysql_fetch_object($rs)){
$id = $fila->id;
echo $id;
}
//cerramos el conjunto de resultado y la conexión con la base de datos
desconectar();
// Enlaces de paginación
echo 'Páginas: ';
// Si esta página es > 1, mostrar enlace de "anterior"
if ($pagina > 1) {
$url = 'index.php?pagina=' . ($pagina - 1) . "";
echo "<a href=\"$url\">< Anterior</a> ";
}
for ($i = 1; $i <= $total_paginas; $i++) {
if ($pagina == $i){
echo $pagina . " ";
}else{
echo "<a href=\"index.php?pagina=$i\">$i</a> ";
}
}
// Si esta página es < $total_paginas, mostrar enlace de "siguiente"
if ($pagina < $total_paginas) {
$url = 'index.php?pagina=' . ($pagina+ 1) . "";
echo "<a href=\"$url\">Siguiente ></a> ";
}
?>
El archivo de conexion tiene este código:
Código PHP:
<?
function conectar()
{
//Conexion con la base
mysql_connect ("localhost", "", "");
//selección de la base de datos con la que vamos a trabajar
mysql_select_db("");
}
function desconectar()
{
mysql_close();
}
?>