Foros del Web » Programando para Internet » PHP »

Paginar busqueda con POST

Estas en el tema de Paginar busqueda con POST en el foro de PHP en Foros del Web. Hola a todos, Estoy haciendo una búsqueda que me funciona, pero a la hora de paginar los resultados tengo un problema, envio los datos por ...
  #1 (permalink)  
Antiguo 15/08/2011, 14:23
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Exclamación Paginar busqueda con POST

Hola a todos,

Estoy haciendo una búsqueda que me funciona, pero a la hora de paginar los resultados tengo un problema, envio los datos por medio de un formulario y utilizando el método post. El problema es que cuando paso a la segunda página me sale 0 resultados.
Y si lo hago agregando las variables directo en el código la paginación si me funciona perfectamente.

Este es mi formulario

Código HTML:
<form action="pages/bus2.php" method="POST" class="search">
           	<fieldset>
        <label><h2>¿Que Busca?</span></h2></label>
          <input name="busqueda" type="text" class="form" id="atributo" size="60" value="<?php echo $busqueda; ?>" style="height:30px; font-size:14px" />
          <input name="codigo_provincia" type="text" class="form" id="atributo" value="<?php echo $codigo_provincia; ?>" size="60" style="height:30px; font-size:14px" />
        
    </fieldset>
    <input type="submit" value="Buscar" style="height:36px;">    
</form> 
Códugo php
Código PHP:
 <?php 
 
include ("../config/bdclases.php");
@
mysql_select_db("db"$link); 
//$busqueda = "cria";
//$cod_provincia = 8;
$busqueda $_POST['busqueda'];

$cod_provincia $_POST['codigo_provincia'];
 
// maximo por pagina 
$limit 3
 
// pagina pedida 
$pag = (int) $_GET["pag"]; 
if (
$pag 1

   
$pag 1

$offset = ($pag-1) * $limit;
 
$busqueda $busqueda;
 
$cod_provincia $cod_provincia;
 if (
$busqueda<>'') {
  
//CUENTA EL NUMERO DE PALABRAS
  
$trozos=explode(" ",$busqueda);
  
$numero=count($trozos);
     if (
$numero==1) {
                
$sql "SELECT SQL_CALC_FOUND_ROWS  empresa.razon_social,  empresa.descrip_actividad, empresa.calle, empresa.telefono_emp,  provincias.provincia, distritos.distrito 
                FROM empresa inner join provincias on empresa.provincia=provincias.cod_provincia 
                INNER join distritos on empresa.distrito=distritos.cod_distrito 
                WHERE (empresa.razon_social LIKE  '$busqueda%' OR empresa.descrip_actividad  LIKE '$busqueda%') and empresa.provincia=$cod_provincia limit $offset, $limit"

                
$sqlTotal "SELECT FOUND_ROWS() as total"
                 }
    elseif (
$numero>1) { 
    
                
$cadbusca"SELECT SQL_CALC_FOUND_ROWS  empresa.empresa,  empresa.descrip_act, empresa.calle, empresa.tel1,  provincias.provincia, distritos.distrito, 
                MATCH ( empresa, descrip_act )
                AGAINST (  '$busqueda%' )  FROM empresa inner join provincias on empresa.provincia=provincias.cod_provincia 
                INNER join distritos on empresa.distrito=distritos.cod_distrito  WHERE
                MATCH ( empresa, descrip_act ) AGAINST (  '$busqueda%' ) and empresa.provincia=8  limit 50"
;
    
    }
 }

$rs mysql_query($sql); 
$rsTotal mysql_query($sqlTotal); 
 
$rowTotal = @mysql_fetch_assoc($rsTotal); 
//Total de registros sin limit 
$total $rowTotal["total"];  
   while (
$row =  @mysql_fetch_assoc($rs)) {
        
$url $row ["id"];
        
$referencia $row ["empresa"];
        
$direccion $row["calle"]; 
        
$provincia $row["provincia"]; 
        
$distrito $row["distrito"]; 
          
$titulo $row["descrip_act"];
        
$tel $row ["tel1"];
         echo 
"<span>".$referencia."</span>"."<br />".$titulo."<br>".$provincia.", "$distrito."<br />"."Calle: ".$direccion."<br />"."Teléfono: ".$tel."<hr>";
        
         } 
  
  
?>        
<?php 
         $totalPag 
ceil($total/$limit); 
         echo 
"total de pages".$totalPag;
         
$links = array(); 
        
         echo 
"<a title='Start' href='bus2.php?pag=1'>< < Inicio</a> ";//Start
if ($pag>1) echo "</a><a title='Previous' href='bus2.php?pag=".($pag-1)."'> < < Previous </a> "//Previous
 
        
for ($i=1$i<=$totalPag$i++){
if (
$pagina == $i) {
echo 
"<b>".$pagina."</b> ";
} else {
echo 
"<a href='bus2.php?pag=$i'>$i</a> ";
} }
if ((
$pag+$limit)< $totalPag) echo "..."//etcetera...
if ($pag<$totalPag) echo "<a title='Siguiente' href='bus2.php?pag=".($pag+1)."'> Next >>  ";//Next
echo "<a title='End' href='bus2.php?pag=$totalPag'>Ultima >></a>";//end*/

         
echo implode(" - "$links); 
      
?>
Espero que alguien me pueda ayudar...
Saludos,
  #2 (permalink)  
Antiguo 15/08/2011, 14:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginar busqueda con POST

Es normal, ya que el método post no se puede persistir mediante enlaces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/08/2011, 15:05
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Paginar busqueda con POST

Muchas Gracias por su respuesta... Pero entonces como puede solucionar ese problema?
  #4 (permalink)  
Antiguo 15/08/2011, 15:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginar busqueda con POST

¿Es necesario que el método de búsqueda sea POST?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 15/08/2011, 15:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Paginar busqueda con POST

Tendrías que pasar los datos por GET, o usar lo que se conoce como Postback (un formulario oculto), o usar sesiones.

Saludos.
  #6 (permalink)  
Antiguo 15/08/2011, 15:29
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Paginar busqueda con POST

Ok cambie mi formulario y ahora lo mando de esta manera

Código HTML:
<form action= "pages/bus2.php" class="search">
         <input type="hidden" name="sec" value="?busqueda=<? echo $busqueda ?>&codigo_provincia=<? echo $codigo_provincia ?>" />
   	<fieldset>
        <label><h2>¿Que Busca?</span></h2></label>
          <input name="busqueda" type="text" class="form" id="atributo" size="60"  style="height:30px; font-size:14px" />
          <input name="codigo_provincia" type="text" class="form" id="atributo"  size="60" style="height:30px; font-size:14px" />
        
    </fieldset>
    <input type="submit" value="Buscar" style="height:36px;">    
</form> 
Y recibo los datos con GET, pero igual cuando le doy siguiente no me sale la segunda pagina /cry.
  #7 (permalink)  
Antiguo 15/08/2011, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Paginar busqueda con POST

Es que no puedes mezclar conceptos, ya que si te fijas en las paginas cada una tiene su URL con el número de pagina, así que es ahí donde debes de agregar los datos que quieres filtrar.

Saludos.
  #8 (permalink)  
Antiguo 15/08/2011, 15:53
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Paginar busqueda con POST

Quiere decir que como lo acabo de enviar esta mal.
La verdad no pensé que fuera tan difícil hacer esto, en los tutoriales que hay por ahi de buscadores php no ponen esta parte.
Sorry pero no entendí muy bien lo de la mezcla de conceptos
  #9 (permalink)  
Antiguo 15/08/2011, 16:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Paginar busqueda con POST

Sí no puedes enviar por GET (usando el link de la pagina) y al mismo tiempo por el formulario, tienes que escoger la forma de hacerlo.

Saludos.
  #10 (permalink)  
Antiguo 15/08/2011, 20:01
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 17 años, 6 meses
Puntos: 2
Respuesta: Paginar busqueda con POST

Buenas Noches,

Ya tengo una solución que me funciona, estoy enviendo los datos por post, los recibo con un
Código PHP:
$busqueda = isset($_REQUEST['busqueda'])?$_REQUEST['busqueda']:FALSE
y en la paginación paso las variables así
Código PHP:
for( $i=1$i<=$totalPag $i++) 
         { 
            
$links[$i] = "<a href='index.php?sec=bus2&pag=".$i."&busqueda=".$busqueda."&codigo_provincia=".$cod_provincia."'>$i</a>"
            
         } 
         echo 
implode(" - "$links); 
      
?> 
Gracias a todos por el aporte.
Ahora voy a tratar de hacer con url amigables

Etiquetas: mysql, paginar, post, registro, sql, formulario, busquedas, 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 10:46.