Foros del Web » Programando para Internet » PHP »

completar sistema de paginacion

Estas en el tema de completar sistema de paginacion en el foro de PHP en Foros del Web. hola a todos/as. tengo este sistema de paginación: ///////////////////////////////////////////////////////////////////////////////////////////////////// Defino cuantos registros tendrá cada página: Código PHP: $registros  =  12 ;  Compruebo si la variable ...
  #1 (permalink)  
Antiguo 25/08/2008, 10:26
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
completar sistema de paginacion

hola a todos/as. tengo este sistema de paginación:


/////////////////////////////////////////////////////////////////////////////////////////////////////
Defino cuantos registros tendrá cada página:

Código PHP:
$registros 12
Compruebo si la variable $pagina (indica el numero de pagina actual) esta definida, si no es así le damos el valor 1 ósea que si no se paso por la url la variable $pagina (por ejemplo: "seccion.php?pagina=2") entramos a la pagina 1 directamente... La variable $inicio indica desde que registro empezar a mostrar los datos


Código PHP:
$pagina $_GET["pagina"];

if (!
$pagina) { 
$inicio 0
$pagina 1

else { 
$inicio = ($pagina 1) * $registros


obtenemos el numero de resultados totales...


Código PHP:
$resultados mysql_query("SELECT id FROM productos WHERE categoria= '$cat'"); 
$total_registros mysql_num_rows($resultados); 
limitamos los resultados devueltos:

Código PHP:
$resultados mysql_query("SELECT * FROM productos WHERE categoria= '$cat' ORDER BY nombreDESC LIMIT $inicio, $registros"); 
$total_paginas ceil($total_registros $registros); 
Mostramos los resultados:

Código PHP:
while($articulo=mysql_fetch_array($resultados)) { 

echo 
"<b>".$articulo["titulo"]."</b><br>"
echo 
"<font color='#666666'>".$articulo["descripcion"]."</font><br><br><br>"


y por último paginamos:

se divide en tres partes, primero la que muestra el link a la pagina anterior


Código PHP:
if(($pagina 1) > 0) { 
echo 
"<a href=seccion.php?cat='$cat&pagina=".($pagina-1)."'>< Anterior</a> "

El link a la pagina anterior será visible siempre y cuando no estemos en la primer pagina ($pagina - 1) > 0). La segunda parte del navegador de paginas seria la que muestra la cantidad de paginas...


Código PHP:
for ($i=1$i<=$total_paginas$i++){ 
if (
$pagina == $i) { 
echo 
"<b>".$pagina."</b> "
} else { 
echo 
"<a href=seccion.php?cat='$cat'&pagina=$i'>$i</a> "
} } 
Y la tercer parte es la que muestra el enlace a la pagina siguiente...


Código PHP:
if(($pagina 1)<=$total_paginas) { 
echo 
" <a href=seccion.php?cat='$cat'&pagina=".($pagina+1)."'>Siguiente ></a>"

bien. la paginación la hace correcta. cuál es el problema? el problema es que si yo tengo 58 páginas aparecerá

1[2][3][4][5][6][7][8][9][10][11][12][13][SIGUIENTE] y así hasta la 58. Yo lo que quiero es que aparezcan solo las 5 siguientes y las cinco anteriores a la que se está y después los enlaces [anterior] y [siguiente] como ahora pero además [primero] y [último]

me podéis echar una mano? gracias a todos/as
  #2 (permalink)  
Antiguo 25/08/2008, 10:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: completar sistema de paginacion

hola! hoy en el trabajo tuve el mismo problema... pero lo resolví, aunque no del modo preciso que tu esperas....

te coloco este código, haber si le entiendes y descubres como es el comportamiento... para que tu lo apliques!

Código PHP:
<?php
          
 $sql 
'SELECT DISTINCT `autor` FROM `letras` ORDER BY `autor` ASC'
     
$q mysql_query($sql);

     
$all mysql_num_rows($q);
     
$per 20;
     
     
$begin $cur $per;
     
$cur = (int)$_GET["paginas"];

     
$sql .= " LIMIT $begin,$per";
     
     
$qmysql_query($sql) or die(mysql_error());
     
     
$sep='|';
     
$noop '...';
     
     
$begins '<<';
     
$ends '>>';
     
     
// -------------

    
$count=ceil($all $per);
    
$pages=array();
    
    if (
$count<=1)
    {
        
$pages[]=$noop;
    }
    else
    {
        
//$pages[]=a(link_to(dirname($pre)), $begins);
        
if ($cur 1)
        {
            
$ss=$cur-10<=01$cur-10;
            
$pages[]='<a href="/pagina-autor/'.($ss).'/">'.$begins.'</a>';
            
$pages[]=$sep;
        }
        
        
$break=0;
        
$z=$cur;
        
        for (
$i=$z$i<($cur 10);++$i)
        {
            
//if ($i>=10) break;
            
            //$url=link_to($pre.$i);
            
$class=($i==(int)$cur'here''');
            
            
//$pages[]=a($url,$i,array('class'=>$class));
            
$pages[]='<a href="/pagina-autor/'.$i.'/" class="'.$class.'">'.$i.'</a>';
        }
        
        if (
$pages[sizeof($pages)-1]!==$sep)
        {
            
$pages[]=$sep;
        }
        
//$pages[]=a(link_to($pre.(--$count)), $ends);
        
$pages[] = '<a href="/pagina-autor/'.($cur 10).'/">'.$ends.'</a>';
    }
    
    echo 
join(' '$pages);
    
    
?>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 01:33.