Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2005, 10:23
jonai
 
Fecha de Ingreso: noviembre-2002
Mensajes: 59
Antigüedad: 21 años, 5 meses
Puntos: 0
Paginador de las Faqs del web modestamente mejorado (creo)

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"USUARIOCLAVE);
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_estimado0);
$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]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
// Enlace a la Página Anterior
if($paginaActual>1) {
$paginaAnterior $paginaActual-1;
echo 
"<a href='$PHP_SELF?paginaActual=$paginaAnterior'>Anterior</a> |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
}
// 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 
" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <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