Foros del Web » Programando para Internet » PHP »

Problemas con paginación

Estas en el tema de Problemas con paginación en el foro de PHP en Foros del Web. Tengo una paginación de 200 registros, donde muestro 20 registros por páginas. Pero el problema está en que me muestra todas las páginas paginadas y ...
  #1 (permalink)  
Antiguo 18/05/2009, 09:25
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 13 años, 1 mes
Puntos: 1
Problemas con paginación

Tengo una paginación de 200 registros, donde muestro 20 registros por páginas. Pero el problema está en que me muestra todas las páginas paginadas y solo quiero que me muestre las primeras 10 y después unos puntos y a continuación me muestre el último grupo paginado.

Me explico mejor con un ejemplo:

Lo que tengo hasta el momento es lo siguiente:
Cita:
Paginas:1 2 3 4 5 6 7 8 9 10
Y lo que quiero lograr es lo siguiente:
Cita:
Paginas: < Anterior 1 2 3 4 ... 9 10 Siguiente >
  #2 (permalink)  
Antiguo 18/05/2009, 09:56
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 16 años, 1 mes
Puntos: 19
Respuesta: Problemas con paginación

supongamos que tenes todos los numeros de paginas en un array y alguna variable que guarde la pagina actual... o no ?

$paginas = (array) (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,)
$currentPage = 10

Y queremos mostrar:

Código:
<< 5 6 7 8 9 10 11 12 13 14 15 >>
haras algo asi ...

Código:
$min = $currentPage - 5;
$max = $currentPage + 5;
echo "<<";
while ($min < $max){
        echo $paginas[$min];
        $min++;
}
echo ">>";
Bueno, esto deberia estar mostrandote las cosas como vos queres ...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #3 (permalink)  
Antiguo 18/05/2009, 10:01
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 11 años, 8 meses
Puntos: 7
Respuesta: Problemas con paginación

hola boy-computer. tu kieres mostrar una paginacionde esta manera:ç

Código:
Paginas: < Anterior 1 2 3 4 5 ... 9 10 Siguiente >
aqui te dejo un codigo. bueno nose si se adapta a lo que requieres.

Código PHP:
<?php
    
    $servidor 
"localhost";
    
$usuario "nombre-usuario";
    
$clave "tu clave";
    
$bd "tu base de datos";
    
    
$registros 8;
    
    if (!
$pagina) { 
        
$inicio 0
        
$pagina 1
    }else{ 
        
$inicio = ($pagina 1) * $registros
    }    
    
    
$cn = @mysql_connect($servidor,$usuario,$clave) or die("problemas con la conexion");
    
mysql_select_db($cn,$bd);
    
    
$sql_1 "SELECT * FROM mi-tabla";    
    
$rpta_1 mysql_query($sql_1) or die(mysql_error());
    
$total_registros mysql_num_rows($rpta_1);
    
    
$resultado_1 "SELECT * FROM mi-tabla LIMIT $inicio, $registros";            
    
$rs_resultado_1 mysql_query($resultado_1) or die(mysql_error());
    
$filas mysql_num_rows($rs_resultado_1);            
        
    
$total_paginas ceil($total_registros $registros);    
    
    if(
$filas){ #1er if.
    
        
while($row mysql_fetch_array(rs_resultado_1)){
            echo 
$row['campo'];
        }
?>
<?php
            
#pregunto si hay resultados para paginar.
                
            
mysql_free_result($rs_resultado_busqueda_productos);                
            
            if(
$total_registros) {
        
                if((
$pagina 1) > 0) {
                    
        
?>
                    <a href="archivo.php?pagina=<?=($pagina-1); ?>">< Anterior</a>
            <?php        
                
}
        
?>
            <?php
        
                
for ($i=1$i<=$total_paginas$i++){ 
                    if (
$pagina == $i) {
            
?>
                        <a href = '#'><?=$pagina?></a> 
            <?php
                        
//echo "<a class='sel' href = '#'>".$pagina."</a> "; 
                    
} else {
        
?>
                        <a href="archivo.php?pagina=<?=$i?>" ><?php echo $i?></a>
            <?php
        
                    
}    
                }
              
                if((
$pagina 1)<=$total_paginas) {
        
?>
                    <a href="archivo.php?pagina=<?=($pagina+1)&#161;; ?>">Siguiente ></a>
            <?php
                
                
}
                
            }

        }else{
            echo 
"<div align = \"center\"><b>No hay registros que se puedan mostrar.</div>";
        }    
        
?>
por cierto. no repitas el mismo tema.

saludos.
  #4 (permalink)  
Antiguo 18/05/2009, 13:45
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Problemas con paginación

Colegas, con esos códigos y en especial el de esaenz22, lo que hago solamente es activar una opción que de siguiente y anterior, pero cuando son muchos registros a paginar y el número de páginas aumente considerablemente, entonces me pone todas las páginas paginadas, y en realidad lo que quiero es que me de solamente las primero 4 paginaciones, después ponga puntos suspencivos y posteriormente las 2 últimas paginaciones, algo parecido a como hace google:

Código:
Resultados: < anterior 1 2 3 4 5. . . 9 10  siguiente >
Y a medida que voy dando clic en las paginaciones, se van quitando los puntos y van saliendo los n'úmeros de las paginaciones y se ocultan por puntos las paginaciones que ya he visitado. Además como puedo hacer la paginación pero en vez de mostrar numeros, muestro imágenes pequeña, repito, como hace google.


Ah! y disculpen, tuve problemas con mi navegador, pero no sucederá otra vez, por eso se repitio la pregunta.
  #5 (permalink)  
Antiguo 18/05/2009, 13:55
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 16 años, 1 mes
Puntos: 19
Respuesta: Problemas con paginación

ok, perdon, no mire bien como era que lo querias...

Código:
$total_paginas = mysql_num_rows($rs);
$lim = $total_paginas - 2;
$i = 0;
echo "< Anterior";
while($i < 4){
         echo "<a href='#'>$i</a>";
         $i++;
}
echo "....";
while($lim <= $total_paginas){
         echo "<a href='#'>$i</a>";
         $lim++;
}
echo "Siguiente >";
Creo que es esto lo que queres...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #6 (permalink)  
Antiguo 18/05/2009, 14:50
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Problemas con paginación

Sería mucho pedirte que postearas el código completo, donde funcione el siguiente y el anterior, además de los puntos suspencivos, y si sabes como poner imágenes en vez de números para la paginación.
  #7 (permalink)  
Antiguo 18/05/2009, 14:56
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 16 años, 1 mes
Puntos: 19
Respuesta: Problemas con paginación

El anterior ?

Código:
$anterior = $currentPage - 1;
$siguiente = $currentPage + 1;
echo "<a href='pagina.php?page=$anterior'><img src='anterior.gif'></a>";
echo "Imprimis el resto de los numeros... ";
echo "<a href='pagina.php?page=$siguiente'><img src='siguiente.gif'></a>";
Suerte, no dispongo de mucho tiempo, es mas que nada una cuestion de logica ..

ahi vas a tener las imagenes en el link ...

saludos!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
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 20:24.