Bueno llevo ya unos cuantos días que no hago más que recibir, y creo que ha llegado la hora de aportar algo desde mi modesto saber. Pues bien necesitaba un paginador de resultados obtenidos de una base de datos, despues de mucho buscar encontré el que se ofrece en las
http://www.faqsdelweb.com/ concretamente el desarrollado por webstudio - Temaqueja. Funciona estupendamente, aunque tenía dos peros, el primero es que siempre mostraba una página de más, y el segundo que no incluia enlaces individuales a las diferentes páginas.
Bien mi aportación es esa la mejora (modesta) de dicho paginador en la siguiente forma:
Código PHP:
<?
/* el script espera que se le pase la variable $paginaActual para mostrar los datos que correspondan a dicha página.
*/
if(!isset($paginaActual)) {
$paginaActual=1;
}
//mostraré 20 resultados por página
$regXpag = 20;
// Me conecto a la base de datos...
$db_link = mysql_connect("localhost", USUARIO, CLAVE);
mysql_select_db("basedatos");
//ejecuto una query para obtener la
//cantidad total de registros...
$sql = "SELECT count(*) as cantDatos FROM tabla";
$cantDatos = mysql_result(mysql_query($sql,$db_link), 0, "cantDatos");
//supongamos que la query devuelve 123
//registros como resultado, osea que
//$cantDatos será igual a 123
//Divido para obtener cuantas páginas:
// (123/20)+1 = 7.15 (7 páginas)
if($cantDatos<$regXpag) {
$regXpag = $cantDatos;
}
@$final_estimado = ($cantDatos / $regXpag);
$sindecimales = number_format($final_estimado, 0);
$resta = $final_estimado - $sindecimales;
if ($resta > 0){
$sindecimales++ ;
}
$regActual = ($paginaActual*$regXpag)-$regXpag;
//Muestro los datos...
$sql = "SELECT * FROM tabla ";
$sql.= "limit $regActual,$regXpag";
$datos = mysql_query($sql,$db_link);
while($mostrar = mysql_fetch_array($datos)) {
echo $mostrar['un_campo']. " .otros. <br>";
}
?>
Y el código para poner en cualquier lugar para imprimir el resultado de paginación:
Código PHP:
<!-- paginador -->
<table width="100%"><tr><td width="100%" align=center>
<?
// Muestro en que página está
echo "[Página $paginaActual de $sindecimales] ";
// Enlace a la Página Anterior
if($paginaActual>1) {
$paginaAnterior = $paginaActual-1;
echo "<a href='$PHP_SELF?paginaActual=$paginaAnterior'>Anterior</a> | ";
}
// Crear los enlaces hacia las distintas páginas
if ($sindecimales > 1){
for($i=1;$i<=$sindecimales;$i++){
$b=$i*$regXpag;
echo "<a href='$PHP_SELF?paginaActual=$i'> |" . $i ."|</a> ";}
}
// Enlace a la Página siguiente
if($paginaActual<$final_estimado) {
$paginaSiguiente = $paginaActual+1;
echo " | <a href='$PHP_SELF?paginaActual=$paginaSiguiente'>Siguiente</a>";
}
?>
</td></tr></table>
<!-- fin paginador -->
En fin lo dicho el mérito en un 99% es de los autore originales lo mío es simplemente un pequeño aporte.
Para ver el código original seguir el siguiente link
faqsdelweb paginador
Un saludo Jonai