Foros del Web » Programando para Internet » PHP »

matener variable

Estas en el tema de matener variable en el foro de PHP en Foros del Web. problema: tengo una página php donde hay: -un formulario con un buscador -una tabla que muestra los resultados del buscador -otro formulario que muestra el ...
  #1 (permalink)  
Antiguo 08/07/2005, 04:51
 
Fecha de Ingreso: junio-2004
Mensajes: 53
Antigüedad: 13 años, 6 meses
Puntos: 3
matener variable

problema:
tengo una página php donde hay:
-un formulario con un buscador
-una tabla que muestra los resultados del buscador
-otro formulario que muestra el detalle de uno de los resultados.

Cuando introduzco un término en el buscador pasa sin problemas la variable de formulario a la tabla de resultados, pero el problema es que cuando hago click sobre el link ( en uno de los campos de resultado) para que me abra la ficha de detalle lo pasa correctamente, pero como el pase de variable es por URL (<a href="mipagina.php?articulo=<?php echo $row_buscador['articulo']; ?>"><?php echo $row_buscador['articulo'] ; ?></a>) pues me vuelve a cargar la página y entonces solo puedo ver la ficha con uno de los productos y la lista de resultados ha desaparecido.
Mi consulta es: ¿cómo podría hacer para que, o bien no se volviera acargar la página y por tanto no me borrara el resultado primero del buscador; o bien que aunque se cargara de alguna manera se me conservase la variable inicial de la búsqueda y pudiera continuar teniendo la lista de resultados visibles.
Es intentar hace r un juego de pàginas maestro-detalle en una misma página.
Gracias
  #2 (permalink)  
Antiguo 08/07/2005, 05:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Lo que necesitas en este caso es volver a pasarle en la segunda carga de la página la variables que recibió del formulario para que haga nuevamente la busqueda de la lista de resultados.

Yo en este caso uso sessiones.

Te explico.

1º.- selecciono los campos en mi formulario (buscador.php) y lo envío (submit)
2º.- recibo las variables en la segunda página (resultador.php) y muesto la información.
3º.- La consulta sql que has utilizado para realizar el query la guardo en la session:
Código PHP:
$_SESSION['query']=$sql
4º.- Al seleccionar un producto y volverse a recargar la página debe verificar que la variable query este vacia o no.
Código PHP:
if ( !empty( $_SESSION['query'] ) )   // Creas el query en base a lo recibido el formulario
...
...
else
   
$sql=$_SESSION['query']; 
No se si me ha explicado
  #3 (permalink)  
Antiguo 08/07/2005, 05:54
 
Fecha de Ingreso: junio-2004
Mensajes: 53
Antigüedad: 13 años, 6 meses
Puntos: 3
Perdona pero mis conocimientos no son muy extensos y no sé como introducir lo que me mandas.
Te mando mi código por si puedes indicarme donde colocar tu código porque jo no he sabido hacerlo:
<?php
$currentPage = $_SERVER["PHP_SELF"];

$colname_buscador = "-0";
if (isset($_POST['busqueda'])) {
$colname_buscador = (get_magic_quotes_gpc()) ? $_POST['busqueda'] : addslashes($_POST['busqueda']);
}
mysql_select_db($database_con_arti, $con_arti);
$query_buscador = sprintf("SELECT * FROM arti WHERE articulo LIKE '%%%s%%' ORDER BY id ASC", $colname_buscador);
$buscador = mysql_query($query_buscador, $con_arti) or die(mysql_error());
$row_buscador = mysql_fetch_assoc($buscador);
$totalRows_buscador = mysql_num_rows($buscador);

Muchas gracias
  #4 (permalink)  
Antiguo 08/07/2005, 06:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Código PHP:
<?php
// Primero debes abrir una sesión.

session_start();


$currentPage $_SERVER["PHP_SELF"];

$colname_buscador "-0";
if (isset(
$_POST['busqueda'])) 
   
$colname_buscador = (get_magic_quotes_gpc()) ? $_POST['busqueda'] : addslashes($_POST['busqueda']);
  
mysql_select_db($database_con_arti$con_arti);

//A partir de aquí es donde está lo interesante

if ( $_SESSION['miQuery']=="" )        //Si NO existe una busqueda anterior ...
   
{
       
$query_buscador sprintf("SELECT * FROM arti WHERE articulo LIKE '%%%s%%' ORDER BY id ASC"$colname_buscador);     // ... creo mi query ...
       
$_SESSION['miQuery']=$query_buscador;          //  ... y lo guardo para la proxima llamada a esta página.
   
}   
else
   
$query_buscador $_SESSION['miQuery'];    // SI existe una busqueda anterior la recupero.
   
  
$buscador mysql_query($query_buscador$con_arti) or die(mysql_error());
  
$row_buscador mysql_fetch_assoc($buscador);
  
$totalRows_buscador mysql_num_rows($buscador);
  #5 (permalink)  
Antiguo 08/07/2005, 07:00
 
Fecha de Ingreso: junio-2004
Mensajes: 53
Antigüedad: 13 años, 6 meses
Puntos: 3
Muchas gracias por tu ayuda.
Pero... he introducido el código tal como me lo has mandado en su sitio pero entonces no me da resultados. Si pruebo a eliminar el if, vuelvo a recibir resultados (!)
Igual hay un error en el código que yo no sé ver...
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 07:07.