Foros del Web » Programando para Internet » PHP »

PHP OO Paginacion en PHP

Estas en el tema de Paginacion en PHP en el foro de PHP en Foros del Web. Hola a todos, he creado una paginacion en PHP con MySQL, lo que ocurre es que no consigo que me salgan las 9 primeras paginas ...
  #1 (permalink)  
Antiguo 17/05/2013, 00:34
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Paginacion en PHP

Hola a todos, he creado una paginacion en PHP con MySQL, lo que ocurre es que no consigo que me salgan las 9 primeras paginas y despues las tres últimas.
A medida que avanzas se van mostrar las intermedias.

Esto es lo que actualmente sale, cuando genero todas las páginas.


Código PHP:
if ($total_paginas 1){
 
    for (
$i=1;$i<=$total_paginas;$i++){ 
        
        if (
$pagina == $i){
          
//si muestro el índice de la página actual, no coloco enlace 
          
echo "<span>".$pagina."</span> "
          
        }else{
            
            if(!isset(
$idestilo)){
                echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> "
            }else{
                echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> "
            }
        
                   
        }
        
    } 


Lo que intento conseguir es algo parecido a esta imágen.


¿Alguien tiene alguna idea?

Saludos y Gracias !!
  #2 (permalink)  
Antiguo 17/05/2013, 00:45
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Paginacion en PHP

Sería algo así:
Código PHP:
Ver original
  1. <?php
  2. if ($total_paginas > 1) {
  3.    
  4.     for($i = 1; $i <= $total_paginas; $i ++) {
  5.         if ($pagina == $i) {
  6.         } // pagina actual no se muestra el link
  7.         if ($i <= 9) {
  8.         }         // MOstrar pagina con link
  9.         elseif ($i > 9 && $i < ($total_paginas - 3)) {
  10.         }         // penultima
  11.         elseif ($i > 9 && $i < ($total_paginas - 2)) {
  12.         }         // ultima
  13.         elseif ($i > 9 && $i < ($total_paginas - 1)) {
  14.         } else
  15.             break; // cualquier otra no se muestra, salir
  16.     }
  17. }
  18. ?>

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 17/05/2013, 01:17
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Respuesta: Paginacion en PHP

No funciona, solo se restan 3.


Así es el código:
Código PHP:
for($i 1$i <= $total_paginas$i ++) {

        if (
$pagina == $i) {
             echo 
"<span>".$pagina."</span> ";        
        } 
        
        if (
$i <= 9) {
            if(!isset(
$idestilo)){
                echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> "
            }else{
                echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> "
            }    
        }    
        
        elseif (
$i && $i < ($total_paginas 3)) {
            if(!isset(
$idestilo)){
                echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> "
            }else{
                echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> "
            }    
        
        }         
// penultima
        
        
        
elseif ($i && $i < ($total_paginas 2)) {
            if(!isset(
$idestilo)){
                echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> "
            }else{
                echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> "
            }    
        }         
// ultima
        
        
        
elseif ($i && $i < ($total_paginas 1)) {
            if(!isset(
$idestilo)){
                echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> "
            }else{
                echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> "
            }    
        
        } else
            break; 
// cualquier otra no se muestra, salir
    


Para ver la página a la que lo estoy aplicando, entrar en: http://www.houseparty.es/tracks

Lo que intento es que a medida que vas visitando las paginas, se vayan mostrando y restanto por el principio.

Última edición por djboro88; 17/05/2013 a las 01:24
  #4 (permalink)  
Antiguo 17/05/2013, 01:28
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Paginacion en PHP

Para hacer lo que quieres, te falta gestionar una variable : el número de páginas a mostrar en el paginador.
Estás intentando hacerlo sólo con $total_paginas.En la imagen de ejemplo que pones, $longitud_paginador=12.

Te pego aqui un trozo de código que tengo en producción, que te puede ayudar.Es javascript, pero adaptarlo a php es simple.
Código Javascript:
Ver original
  1. if(nPages < this.pagLength || this.currentPage < halfP)
  2.                 {
  3.                     if(nPages > this.pagLength)
  4.                         ellipsis=true;
  5.                      start=0;
  6.                 }
  7.                 else
  8.                 {
  9.                     if(this.currentPage+halfP>nPages)
  10.                         start=Math.max(0,nPages-this.pagLength);
  11.                     else
  12.                     {
  13.                         ellipsis=true;
  14.                         start=Math.max(0,this.currentPage-Math.floor(this.pagLength/2));
  15.                     }
  16.                 }
currentPage es la página actual.
pagLength es la longitud del paginador.
nPages es el numero de paginas.
halfP es la longitud del paginador dividido entre dos.
ellipsis controla si hay que pintar "..." o no.
Con esto, tienes el estado inicial, antes de entrar en el bucle que crea cada uno de los links a páginas.
  #5 (permalink)  
Antiguo 17/05/2013, 01:51
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Paginacion en PHP

Buff... ni idea de como pasarlo a PHP

He hecho esto, pero no aparece nada.
Código PHP:
$currentPage $pagina;
$pagLength $total_paginas;
$nPages 9;
$halfP $total_paginas 2;

if(
$nPages $pagLength || $currentPage $halfP){
    if(
$nPages $pagLength)
        
$ellipsis="...";
        
$start=0;

    }else{
    
        if(
$currentPage $halfP $nPages){
            
$start max(0,$nPages $pagLength);
            
            for (
$i=1;$i<=$total_paginas;$i++){  
         
                if (
$pagina == $i){ 
                  
//si muestro el índice de la página actual, no coloco enlace  
                  
echo "<span>".$pagina."</span> ";  
                   
                }else{ 
                     
                    if(!isset(
$idestilo)){ 
                        echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> ";  
                    }else{ 
                        echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> ";  
                    } 
                 
                            
                } 
                 
            } 
            
        }else{
            
$ellipsis="...";
            
$start=max(0,$currentPage-floor($pagLength/2));
            
            for (
$i=1;$i<=$total_paginas;$i++){  
         
                if (
$pagina == $i){ 
                  
//si muestro el índice de la página actual, no coloco enlace  
                  
echo "<span>".$pagina."</span> ";  
                   
                }else{ 
                     
                    if(!isset(
$idestilo)){ 
                        echo 
"<a href='tracks?pagina=".$i."'>".$i."</a> ";  
                    }else{ 
                        echo 
"<a href='tracks?estilo=".$idestilo."&nomes=".$nomes."&pagina=".$i."'>".$i."</a> ";  
                    } 
                 
                            
                } 
                 
            } 
        
        }

No comprendo muy bien como hacerlo...
  #6 (permalink)  
Antiguo 18/05/2013, 15:10
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Paginacion en PHP

Uh...Por qué has metido los bucles dentro de los if's? El bloque de código que pegué es el cálculo del inicio del paginador, y de si necesitas la elipsis o no.
Una vez hecho el cálculo, entras en el bucle.No hay que meter el bucle dentro del cálculo.
Lógicamente, no te sale nada, porque hay ramas del cálculo donde no has vuelto a copiar/pegar el bucle.

Etiquetas: paginacion
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 19:07.