Foros del Web » Programando para Internet » PHP »

Problema con buscador y paginador

Estas en el tema de Problema con buscador y paginador en el foro de PHP en Foros del Web. Hola a todos! Tengo un problema con este paginador que uso. Al momento de mostrarme los resultados me dice que hay 3 páginas para mostrar, ...
  #1 (permalink)  
Antiguo 31/08/2011, 16:55
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Problema con buscador y paginador

Hola a todos! Tengo un problema con este paginador que uso. Al momento de mostrarme los resultados me dice que hay 3 páginas para mostrar, pero al darle SIGUIENTE me muestra hasta 450 páginas.

Este es el formulario:
Código HTML:
 <form action="rpauto-resultb.php" method="GET" >
      <table width="216" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td height="20" colspan="2"><img src="imagesite/busqueda.png" width="217" height="44" /></td>
        </tr>
        <tr>
          <td width="186" height="20" align="left"><div class="buscador-arial11pxNG" id="12">
            <input name="palabra" type="text" class="buscador-arial11pxNG" id="palabra" size="14" maxlength="20" />
          </div></td>
          <td width="31" valign="bottom"><input type="submit" id="boton" src="jpg/boton.gif" name="search" value=">>" /></td>
        </tr>
      </table>
  </form> 
Y esta la página que me muestra los resultados:

Código PHP:
// realizar esta funci&oacute;n si se apret&oacute; el bot&oacute;n de enviar en el formulario de busqueda
if(isset($_GET['search']))

// declarar variables los datos del formulario
$palabra $_GET['palabra'];
{

// obtener datos de la base
$pag $_GET['pag'];        
  if (!isset(
$pag)) $pag 1// Por defecto, pagina 1
        
$sql "SELECT COUNT(*) FROM producto WHERE descripcion LIKE '%$palabra%' ORDER BY id_articulo";

$result mysql_query($sql$conexion);

        list(
$total) = mysql_fetch_row($result);
        
$tampag 12;
        
$reg1 = ($pag-1) * $tampag;
            
$result mysql_query("SELECT * FROM producto WHERE descripcion LIKE '%$palabra%' ORDER BY id_articulo LIMIT $reg1, $tampag"$conexion) or die (mysql_error());
    
//    $nose=mysql_query("tu SQL ...") or die (mysql_error());


// Muestra los resultados....
.......

// y acá el paginador
function paginar($actual$total$por_pagina$enlace) {

  
$pag $_GET['pag'];
  
$palabra "&palabra="$_GET['palabra'];

  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;
  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior$palabra\" class='txtPaginador11b'><< ANTERIOR</a> ";
  else
    
$texto "<b><< ANTERIOR</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i$search\" class='txtPaginador11b'>$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i$search\" class='txtPaginador11b'>$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior$search\" class='txtPaginador11b'>SIGUIENTE >></a>";
  else
    
$texto .= "<b>SIGUIENTE >></b>";
  return 
$texto;

        
// Cierro la conexion
        
mysql_close($conexion); 

}


echo 
paginar($pag$total$tampag"rpauto-resultb.php?pag="); 
No entiendo como puede ser que al presionar SIGUIENTE me muestre todas esas páginas. ¿Alguna sugerencia?

Desde ya muchas gracias.
Marx
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 31/08/2011, 23:59
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con buscador y paginador

Código PHP:
Ver original
  1. echo paginar($pag, $total, $tampag, "rpauto-resultb.php?pag=");

Resulta que en ese enlace no estas incluyendo los parametros de busqueda y ahi esta el fallo, porque solo pones el numero de pagina.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 02/09/2011, 11:44
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Problema con buscador y paginador

Bueno… modifiqué una variable que estaba mal y ahora me funciona pero cada vez que presiono SIGUIENTE ó cualquier nro de página que devuelva el paginador, el mismo se vuelve loco!!! Si el resultado me dice que son 3 páginas, al pinchar sobre el siguiente link y pasar a la próxima página, me devuelve 450 links más!!! Por qué???
Los links dicen rpauto-resultb.php?pag=2$palabra=algo , ó rpauto-resultb.php?pag=3$palabra=algo…

Este es el código
Código PHP:
if(isset($_GET['search'])) 

// declarar variables los datos del formulario 
$palabra $_GET['palabra']; 


// obtener datos de la base 
$pag $_GET['pag'];         
  if (!isset(
$pag)) $pag 1// Por defecto, pagina 1 
         
$sql "SELECT COUNT(*) FROM producto WHERE descripcion LIKE '%$palabra%' ORDER BY id_articulo"

$result mysql_query($sql$conexion); 

        list(
$total) = mysql_fetch_row($result); 
        
$tampag 12
        
$reg1 = ($pag-1) * $tampag
            
$result mysql_query("SELECT * FROM producto WHERE descripcion LIKE '%$palabra%' ORDER BY id_articulo LIMIT $reg1, $tampag"$conexion) or die (mysql_error()); 
    
//    $nose=mysql_query("tu SQL ...") or die (mysql_error()); 


// Muestra los resultados.... 
....... 

// y acá el paginador 
function paginar($actual$total$por_pagina$enlace) { 

  
$pag $_GET['pag']; 
  
$palabra "&palabra="$_GET['palabra']; 

  
$total_paginas ceil($total/$por_pagina); 
  
$anterior $actual 1
  
$posterior $actual 1
  if (
$actual>1
    
$texto "<a href=\"$enlace$anterior$palabra\" class='txtPaginador11b'><< ANTERIOR</a> "
  else 
    
$texto "<b><< ANTERIOR</b> "
  for (
$i=1$i<$actual$i++) 
    
$texto .= "<a href=\"$enlace$i$palabra\" class='txtPaginador11b'>$i</a> "
  
$texto .= "<b>$actual</b> "
  for (
$i=$actual+1$i<=$total_paginas$i++) 
    
$texto .= "<a href=\"$enlace$i$palabra\" class='txtPaginador11b'>$i</a> "
  if (
$actual<$total_paginas
    
$texto .= "<a href=\"$enlace$posterior$palabra\" class='txtPaginador11b'>SIGUIENTE >></a>"
  else 
    
$texto .= "<b>SIGUIENTE >></b>"
  return 
$texto

        
// Cierro la conexion 
        
mysql_close($conexion);  



echo 
paginar($pag$total$tampag"rpauto-resultb.php?pag="); 
Alguna sugerencia?

Muchas gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 02/09/2011, 12:07
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con buscador y paginador

Resulta que la separacion de variables por URL se hace con & y no con $, entonces, el contenido de $_GET['pag'] es 2$palabra=algo
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 02/09/2011, 13:00
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Problema con buscador y paginador

Triby: es verdad pero fue un error mío de tipeo al redactar mi duda. Actualmente en la página se encuentra así: .../rpauto-resultb.php?pag=2&palabra=carbones

Buscadores Internos

Si quieres darle una mirada y probarlo, te dejo el link y es más... en mi web hay 2 buscadores. El de arriba es el cuestionado y el de abajo, el que busca por los select.
Los 2 son exactamente iguales, no tiene nada cambiado salvo las variables que recibe. La funcionalidad y líneas tipeadas son iguales con la diferencia que en el que busca por una palabra en especial, el paginador se dispara para cualquier lado.

Muchas gracias e antemano y saludos.
Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #6 (permalink)  
Antiguo 02/09/2011, 13:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con buscador y paginador

Depuracion basica: Antes de ejecutar la consulta revisa que es lo que trae... basta con un
echo $sql;

Con eso podras saber que es lo que estas haciendo mal.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 02/09/2011, 18:21
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Problema con buscador y paginador

Ahí lo probé y me devuelve esto:

Código PHP:
SELECT COUNT(*) FROM producto WHERE descripcion LIKE '%carbones%' ORDER BY id_articulo DESC 
Pero cuando le doy al link siguiente o paso a la página 2 me tira esto:
Código PHP:
SELECT COUNT(*) FROM producto WHERE descripcion LIKE '%%' ORDER BY id_articulo DESC 
El LIKE está vacío... ¿cómo puede ser entonces?
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #8 (permalink)  
Antiguo 02/09/2011, 19:24
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Problema con buscador y paginador

Por lo que veo, la variable aparece en la barra de direcciones:
...rpautopartes/rpauto-resultb.php?pag=2&buscar=carbones

Pero al pasar a las siguientes páginas, sigue apareciendo en la barra de direcciones pero NO aparece la palabra a buscar en los links del paginador:
...rpautopartes/rpauto-resultb.php?pag=2&buscar=
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #9 (permalink)  
Antiguo 02/09/2011, 20:30
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 14 años, 1 mes
Puntos: 55
Respuesta: Problema con buscador y paginador

cuando ejecutas la primer consulta te devuelve el resultado de los regisros que coinciden con '%carbones%' ya que estos viene por GET pero cuando le das a siguiente la pagina se recarga y se pierde el valor por GET asi es que te devuelve toda la BBDD 450 paginas ...

Para evitarlo almacena el valor de GET en una session y le pasas el valor de la session a la consulta ... tambien debes almaenar el valor del numero de pagian en una session y reescribirlo en la siguiente carga ..
  #10 (permalink)  
Antiguo 03/09/2011, 05:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con buscador y paginador

Ya te diste cuenta que en la consulta (conteo y lectura) usas "palabra" y en el paginador envias "buscar"?
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: mysql, paginador, sql, formulario, buscadores, variables
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 21:20.