Foros del Web » Programando para Internet » PHP »

Fallo en paginación

Estas en el tema de Fallo en paginación en el foro de PHP en Foros del Web. Hola, De nuevo esperando que me ayudeis con otro atasco. Tengo un script para paginar resultados, todo funciona correctamente excepto en los links de las ...
  #1 (permalink)  
Antiguo 13/04/2008, 16:26
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
Fallo en paginación

Hola,

De nuevo esperando que me ayudeis con otro atasco.

Tengo un script para paginar resultados, todo funciona correctamente excepto en los links de las paginas (anterior 1 2 3 4 5 ..... siguiente).
Siempre en la primera página me muestra el numero de páginas igual al valor de registros a mostrar por página de la variable ($tamPag). En el resto de paginas se comporta correctamente.

Por ejemplo, ahora $tampag=20 teniendo 25 registros, debería mostrar "1 2 siguiente" pues muestra "1 2 3 4 ....... 19 20 siguiente " pero solo en la primera página, si pulso a la 2 o siguiente ya muestra lo correcto.

Espero que me ayudéis a encontrar el error.

gracias.


Código PHP:
//elementos para el orden
if(!isset($orden))
{
    
$orden="username";
}
//fin elementos de orden


//calculo de elementos para paginacion
//registros por pagina
$tamPag=20;
//pagina actual si no esta definida y limites
if(!isset($pagina)){
   
$pagina=1;
   
$inicio=1;
   
$final=$tamPag;
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset(
$pagina))
    {
    
$pagina=1;
    
$inicio=1;
    
$final=$tamPag;
}else{
    
$seccionActual=intval(($pagina-1)/$tamPag);
    
$inicio=($seccionActual*$tamPag)+1;
if(
$pagina<$numPags){
   
$final=$inicio+$tamPag-1;
}else{
   
$final=$numPags;
}
}
//fin de calculo

//////// 
// INSERTO DATOS
////////


//Links de paginas a mostrar
if($pagina>1){
   echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."'>";
   echo 
"<font face='verdana' size='-2'>anterior</font>";
   echo 
"</a>&nbsp;";
}

for(
$i=$inicio;$i<=$final;$i++){
   if(
$i==$pagina){
      echo 
"<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
   }else{
   echo 
"<a class='p'  href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."'>";
   echo 
"<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
   }
}

if(
$pagina<$numPags){
   echo 
"&nbsp;<a class='p'  href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."'>";
   echo 
"<font face='verdana' size='-2'>siguiente</font></a>";
}

//fin de la paginacion 
  #2 (permalink)  
Antiguo 13/04/2008, 16:45
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 3 meses
Puntos: 36
Re: Fallo en paginación

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&aacute;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=' . ($pagina1) . "";
    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();
}



?>
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #3 (permalink)  
Antiguo 14/04/2008, 15:26
NiB
 
Fecha de Ingreso: octubre-2005
Mensajes: 59
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Fallo en paginación

Mil gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:34.