Ver Mensaje Individual
  #7 (permalink)  
Antiguo 12/08/2011, 13:18
Avatar de historiasdemaria
historiasdemaria
 
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 13 años, 7 meses
Puntos: 54
Respuesta: Paginación - Pasar página sin perder los criterios de búsqueda

Cita:
Iniciado por sidneyendis Ver Mensaje
Hola "ramiro_md", "cuasatar" y "Pherenick", Muchas gracias por vuestras respuestas....

Ramiro_md: Lo estoy haciendo manual y si que tengo un LIMIT indicado, ahora lo podrás ver graficamente.

Cuasatar: Gracias por tu gran explicación, me he centrado en tu respuesta haciendo pruebas... pero me sigue sin mostrar los registros correspondientes a las paginas 2, 3....

Pherenick: Gracias por mostrar tu código, lo estudiaré y probaré posibles soluciones.

Centrandome en la respuesta de "Cuasatar", pongo el código sin modificar y la modificación que realizaria según su respuesta a ver si podeis indicarme que hago mal.

El código sin modificar es:

Código PHP:
<!------- Paginación (Empieza) ----------> 
       <div class="barrapaginacion"> 
       <?php
        
//UNA VEZ QUE MUESTRO LOS DATOS TENGO QUE MOSTRAR EL BLOQUE DE PAGINACIÓN SIEMPRE Y CUANDO HAYA MÁS DE UNA PÁGINA
        
if($num_rows != 0)
        {
           
$nextpage$page +1;
           
$prevpage$page -1;
        
         echo 
'<ul id="paginacion">';
         
        
//SI ES LA PRIMERA PÁGINA DESHABILITO EL BOTON DE ANTERIOR, MUESTRO EL 1 COMO ACTIVO Y MUESTRO EL RESTO DE PÁGINAS
         
if ($page == 1
        {

          echo 
'<li class="previous-off">&laquo; Anterior</li>';
          echo 
'<li class="active">1</li>'

             
// Numero de paginas a mostrar
        
$num_paginas=7;
        
//limitando las paginas mostradas
        
$pagina_intervalo=ceil($num_paginas/2)-1;
        
// Calculamos desde que numero de pagina se mostrara
        
$pagina_desde=$page-$pagina_intervalo;
        
$pagina_hasta=$page+$pagina_intervalo;
         
// Verificar que pagina_desde sea negativo
        
if($pagina_desde<1)
        {
        
// le sumamos la cantidad sobrante para mantener el numero de enlaces mostrados
        
$pagina_hasta-=($pagina_desde-1);
        
$pagina_desde=1;
        }
        
// Verificar que pagina_hasta no sea mayor que paginas_totales
        
if($pagina_hasta>$lastpage)
        {
            
$pagina_desde-=($pagina_hasta-$lastpage);
            
$pagina_hasta=$lastpage;
            if(
$pagina_desde<1)
            {
                
$pagina_desde=1;
            }
        }
        
            for(
$i$page+$pagina_desde$i<= $pagina_hasta $i++)
            {
                 echo 
'<li><a href="index.php?page=' $i '">' $i '</a></li>';
            }
           
//Y SI LA ULTIMA PÁGINA ES MAYOR QUE LA ACTUAL MUESTRO EL BOTON SIGUIENTE O LO DESHABILITO
        
if($lastpage >$page )
        {      
              echo 
'<li class="next"><a href="?page=' $nextpage '" >Siguiente &raquo;</a></li>';
        }
        else
        {
              echo 
'<li class="next-off">Siguiente &raquo;</li>'
        }
         } 
        else 
        {
        
//EN CAMBIO SI NO ESTAMOS EN LA PÁGINA UNO HABILITO EL BOTON DE ANTERIOR Y MUESTRO LAS DEMÁS
              
echo '<li class="previous"><a href="?page=' $prevpage '?>"  >&laquo; Anterior</a></li>';
        
// Numero de paginas a mostrar
        
$num_paginas=7;
        
//limitando las paginas mostradas
        
$pagina_intervalo=ceil($num_paginas/2)-1;
        
// Calculamos desde que numero de pagina se mostrara
        
$pagina_desde=$page-$pagina_intervalo;
        
$pagina_hasta=$page+$pagina_intervalo;
         
// Verificar que pagina_desde sea negativo
        
if($pagina_desde<1)
        {
        
// le sumamos la cantidad sobrante para mantener el numero de enlaces mostrados
        
$pagina_hasta-=($pagina_desde-1);
        
$pagina_desde=1;
        }
        
// Verificar que pagina_hasta no sea mayor que paginas_totales
        
if($pagina_hasta>$lastpage)
        {
            
$pagina_desde-=($pagina_hasta-$lastpage);
            
$pagina_hasta=$lastpage;
            if(
$pagina_desde<1)
            {
                
$pagina_desde=1;
            }
        }
 
          for(
$i$pagina_desde$i<= $pagina_hasta $i++)
        {
        
//COMPRUEBO SI ES LA PÁGINA ACTIVA O NO
        
if($page == $i)
        {  
            echo 
'<li class="active">' .$i'</li>';
        }
        else
        { 
            echo 
'<li><a href="?page=' $i '" >' $i '</a></li>';
        }
          }
        
//SI NO ES LA ÚLTIMA PÁGINA ACTIVO EL BOTON SIGUIENTE    
          
if($lastpage >$page )
        {
              echo 
'<li class="next"><a href="?page='$nextpage .'">Siguiente &raquo;</a></li>';
          }
        else
        {
            echo 
'<li class="next-off">Siguiente &raquo;</li>';
          }
         }
        }
            echo 
'</ul>';
        
?> 
        </div>
      <!------- Paginación (Termina) ---------->
En todos los lugares donde pongo el link de la página, debería ponerlo según me ha indicado Cuasatar, ¿verdad?, es decir, sustituir esto:
Código PHP:
echo '<li><a href="?page=' $i '" >' $i '</a></li>'
¿Por esto otro?
Código PHP:
for($i$pagina_desde$i<= $pagina_hasta $i++)
        {
        
//COMPRUEBO SI ES LA PÁGINA ACTIVA O NO
        
if($page == $i)
        {  
            echo 
'<li class="active">' .$i'</li>';
        }
        else
        { 
            echo 
'<li><a href="index.php?frase=' $_GET['frase'] . '&provincia=' $_GET['provincia'] . '&poblaciones=' $_GET['poblaciones'] . '&form_id=218021&buscar=Buscar" >' $i '</a></li>';
        }
          } 
Así puesto no me funciona... Por lo tanto si me pudieseis guiar... jeje

$_GET['frase'] : Lo recojo de un input del formulario
$_GET['provincia'] : Lo recojo de un option de un select del formulario
y $_GET['poblaciones'] : Lo recojo de un option de un select del formulario que e sun como anidado al select de provincia.

Espero sus respuestas!! muchas gracias por vuestro interés en ayudarme.

Un saludo.
Y el formulario? cual es el methodo que utilizas, GET o POST?
Haz un print_r($_GET) para ver si recuperas de verdad los valores