Foros del Web » Programando para Internet » PHP »

Paginar el filtro de una consulta

Estas en el tema de Paginar el filtro de una consulta en el foro de PHP en Foros del Web. Buenos días, Tengo un problema al intentar paginar el resultado de una consulta. Tengo un formulario en html a través del cual el usuario filtra ...
  #1 (permalink)  
Antiguo 22/08/2009, 05:15
 
Fecha de Ingreso: julio-2009
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Paginar el filtro de una consulta

Buenos días,

Tengo un problema al intentar paginar el resultado de una consulta.

Tengo un formulario en html a través del cual el usuario filtra los resultados de una consulta enviando por post a un .php. (se escribe Pedro en el campo nombre y devuelve todos los clientes llamados pedro)

Lo que quiero és que los resultados obtenidos se paginen.

He utilizado varios scripts que he encontrado en la red (Paginator, PaginaEvil, Web Proyecto, forber…) y en todos me pasa lo mismo:

Los resultados que el scripts pagina son el total de registros que tiene la consulta y no el filtro de los resultados que se realizan sin el paginador. (es decir, devuelve la lista total de clientes)

Estoy empezando con el php ¿Alguien podria indicar que parte del código de un script paginador se encarga del filtro y puede ser el responsable mis quebraderos de cabeza?

Gracias.
  #2 (permalink)  
Antiguo 22/08/2009, 06:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Paginar el filtro de una consulta

Trata con phppaging
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 22/08/2009, 18:20
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Paginar el filtro de una consulta

La solución es usar GET como método de tu formulario de búsqueda, y no POST. Por defecto, todos los paginadores propagan sus variables por medio de la url, es decir, usando variable GET. Y algunos usan el pequeño artificio de tomar las variables de POST también, pero luego ponerlas en la url para que sean propagadas. Para evitar estos artificios que pueden traer resultados inesperados es mejor usar desde el comienzo GET.

  #4 (permalink)  
Antiguo 23/08/2009, 04:12
Avatar de flanagan44  
Fecha de Ingreso: abril-2004
Mensajes: 182
Antigüedad: 20 años
Puntos: 2
Respuesta: Paginar el filtro de una consulta

Si te sirve yo uso esto:


Primero miro la cantidad de resultados de lo que quiero paginar
Código PHP:
$consulta="SELECT COUNT(*) as num from noticies where id_permis<=".$tipus;
$resultat=mysql_query($consulta);
$not=mysql_fetch_array($resultat); 
Luego tiro la consulta usando el
Código PHP:
LIMIT 
para destriar los resultados que necesito

[PHP ]
if(empty($_GET['pag']))
{
$consulta="SELECT * from noticies order by id LIMIT 0,1";
$resultat=mysql_query($consulta);
}
else
{
$pag=$_GET['pag'];
$consulta="SELECT * from noticies order by id LIMIT ".$pag.",1";
$resultat=mysql_query($consulta);
}
[/PHP]

Y finalmente los links para ir saltando de pagina

Código PHP:
if(empty($_GET['pag']))
{
if(
$not['num']>1)echo "<a href='index.php?pag=1' style='font-size:11px;'>SEGÜENT</a>";
}
else                                {                                        
        if(
$pag<($not['num']-1))
       {
        echo 
"<a href='index.php?pag=".($pag-1)."' style='font-size:11px;'>ANTERIOR</a> | <a href='index.php?pag=".($pag+1)."' style='font-size:11px;'>SEGÜENT</a>";
    }
    else
    {
        echo 
"<a href='index.php?pag=".($pag-1)."' style='font-size:11px;'>ANTERIOR</a>";
    }

Aqui esta echo para que muestre las cosas de 1 en una, si necesitas mas tienes que modificar 4 cosillas y te funcionara

Espero que te sirva, un saludo
  #5 (permalink)  
Antiguo 23/08/2009, 08:53
 
Fecha de Ingreso: julio-2009
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Paginar el filtro de una consulta

Muchas gracias a todos por vuestras respuestas, lo he solucionado siguiendo la recomendación de abimaelrc de usar el phppaging (contiene una función especial que lo reconoce).

Viendo la respuesta de okram supongo que me he obsesionado con el método post i por medio de get hubiera podido solucionarlo con los otros scripts.

De nuevo, gracias por la ayuda.
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:08.