Este es secillo y muy efectivo, primero la funcion
Código PHP:
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href=\"$enlace$anterior\">« Anterior</a> ";
else
$texto = "<b>« </b>Anterior ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if ($actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">Siguiente »</a>";
else
$texto .= "Siguiente <b>»</b>";
return $texto;
}
Debes de pasar estas variables cuando haces tu query a la base de datos
Código PHP:
// hacemos la peticion a la base de datos con variables para paginar los resultados
// Por defecto, pagina 1, esto dejalo tal cual
if (!isset($pag)) $pag = 1;
$result = mysql_query("select count(*) from TU_CONSULTA'"); // numero total de registros
list($total) = mysql_fetch_row($result);// aqui $total lleva el Nº total de registros
$tampag = 15;// el Nº de registros que quieras por pagina
$reg1 = ($pag-1) * $tampag;
$result=mysql_query ("SELECT TU_CONSULTA limit $reg1, $tampag");
if (!$result){alerta ("Error al pedir consulta","admin_catalogo.php");}
if ($total==0){die ("No hay ninguna coincidencia");}
}
Para terminar pon la llamada a la funcion donde quieres que te salgan los numeros de la paginacion
Código PHP:
if ($total>15)
echo paginar($pag, $total, $tampag, "TU_PAGINA.php?pag=");