Foros del Web » Programando para Internet » PHP »

Paginator con 2 Consultas

Estas en el tema de Paginator con 2 Consultas en el foro de PHP en Foros del Web. hola Todos Estoy haciendo una web y me han pedido que pagine los resultados de las consultas mi pagina tiene el buscador ( un campo ...
  #1 (permalink)  
Antiguo 13/01/2008, 18:31
 
Fecha de Ingreso: enero-2008
Mensajes: 49
Antigüedad: 16 años, 3 meses
Puntos: 0
Paginator con 2 Consultas

hola Todos

Estoy haciendo una web y me han pedido que pagine los resultados de las consultas

mi pagina tiene el buscador ( un campo text y 2 lista/menu) en la misma pagina donde quiero incluir el paginator

mi problema es:

que cuando se muestra por primera vez la web se muestra perfectamente las consultas paginadas pero cuando busco algo en el buscador se ejecuta otra sentencia sql con un like el problema es que cuando pasa a la segunda pagina o a otras se ejecuta la primera sentencia sql cuando cargo por primera vez la pagina

como puedo hacer para que cuando alguien busque algo se ejecute la sentencia sql de busqueda y no la del inicio???

copio algo del codigo que tengo


<body>
<?php


include("conexion2.php");


$bus=$_POST[texto];
echo $bus;
if(isset($bus)){
$_pagi_sql =" select * from preuba where nombre like '%$bus' ";
}
else
$_pagi_sql = "select * from preuba ";

$_pagi_cuantos = 10;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");


?>


<form id="form1" name="form1" method="post" action="preuba.php">
<label>
<input name="texto" type="text" id="texto" />
</label>
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</form>
<p>&nbsp;</p>

<table width="200" border="0">
<?php while($n = mysql_fetch_array($_pagi_result)){ ?>
<tr>
<td><? echo $n["nombre"]; ?></td>
</tr>
<?php }?>
</table>

<? echo"<p>".$_pagi_navegacion."</p>"; ?>
<p>&nbsp;</p>
</body>




Si alguien sabe como se lo Agradeceria
  #2 (permalink)  
Antiguo 13/01/2008, 20:03
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
De acuerdo Re: Paginator con 2 Consultas

El problema es que en la primera te funciona porque estas enviando la variable de búsqueda por el método POST, pero cuando navegas por la paginación se pierde la variable POST y sólo cuentas las GET (las que se ven en la URL) por lo tanto el paginator utiliza la sentencia sql sin la búsqueda.

La solución a este problema es guardar la variablé de la búsqueda en un valor de sesion así se mantendrá por las diferentes páginas.


Algo Así:


Cita:
<body>

<?php


include("conexion2.php");

session_start();

if (isset($_POST['texto']))
{
if ($_SESSION['busqueda'] != $_POST['texto'])
$_SESSION['busqueda'] = $_POST['texto'];
}

echo $bus;
if(!empty($_SESSION['busqueda'])){
$_pagi_sql =" select * from preuba where nombre like '%".mysql_real_escape_string($_SESSION['busqueda'])."%'";
}
else
$_pagi_sql = "select * from preuba ";

$_pagi_cuantos = 10;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");


?>



<form id="form1" name="form1" method="post" action="preuba.php">
<label>
<input name="texto" type="text" id="texto" value="<?= $_SESSION['busqueda'] ?>"/>
</label>
<label>
<input type="submit" name="Submit" value="Enviar" />
</label>
</form>
<p>&nbsp;</p>

<table width="200" border="0">
<?php while($n = mysql_fetch_array($_pagi_result)){ ?>
<tr>
<td><? echo $n["nombre"]; ?></td>
</tr>
<?php }?>
</table>

<? echo"<p>".$_pagi_navegacion."</p>"; ?>
<p>&nbsp;</p>
</body>
Espero te sirva.
Saludos
  #3 (permalink)  
Antiguo 14/01/2008, 06:06
 
Fecha de Ingreso: enero-2008
Mensajes: 49
Antigüedad: 16 años, 3 meses
Puntos: 0
Sonrisa Re: Paginator con 2 Consultas

SI Muchas Gracias no lo habia pensado de esa forma Gracias
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:56.