Foros del Web » Programando para Internet » PHP »

Problema en un buscador para mantener valores.

Estas en el tema de Problema en un buscador para mantener valores. en el foro de PHP en Foros del Web. Hola!!Soy nuevo en esto de PHP, y tengo un par de dudas. Tengo un buscador que no deja de ser un formulario con 4 campos, ...
  #1 (permalink)  
Antiguo 23/09/2008, 12:43
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 6 meses
Puntos: 1
Problema en un buscador para mantener valores.

Hola!!Soy nuevo en esto de PHP, y tengo un par de dudas. Tengo un buscador que no deja de ser un formulario con 4 campos, el primero sirve para meter un texto y que busque por titulo, el segundo es un campo desplegable con categorias, el tercero un campo desplegable con años y el cuarto es el boton de buscar.

Hasta aquí todo bien, mi problema viene cuando quiero paginar los resultados de la busqueda, ya que al pasar a la siguiente pagina de resultados mostrados los valores de la busqueda(nombre, categoria y año) se ponen por defecto y entonces la busqueda que se hace ahora no corresponde para nada con la inicial.

tengo en cada option value:
Código:
<option value="<? print $i ?>"  <? if($_POST['O_Año']==$i){echo " selected"; } ?> > <? print $i ?> </option>
y no me funciona...vuelve a los valores iniciales siempre.

No se si me explique bien...

les adjunto el codigo:

Código:
<form action="Obra.php" method="post" name="IFormBuscar">
  <input type="text" name="O_Titulo" value="( Busca un cuadro )" onfocus="select()" size="35" class="caja_busqueda_imagen"/>
	<select name="O_Categoria" class="caja_busqueda_categoria">
							
		<div class="error_bd">
			<?PHP
				// Obtener los valores del tipo categoria
				$instruccion = "SELECT categoria FROM categoria";
      				$consulta = mysql_query ($instruccion, conexion) 		   
		 		     or die ("No se puede acceder a la base de datos. Sentimos las molestias.");
			?>
		</div><!--error bd-->
		
							<?PHP									
		$nfilas = mysql_num_rows ($consulta);
						
		if ($nfilas > 0)
		{
		   for ($i=0; $i<$nfilas; $i++)
		   {
			$fila = mysql_fetch_array ($consulta);
			?> 
			<option value="<? print $fila[0] ?>" <?php if($_POST['O_Categoria']==$fila[0]){ echo " selected"; } ?>> <? print $fila[0] ?> </option>
			<?PHP
		   }
		}
		?>
		<option value="Todas las categorias" <? if(print ($_POST['O_Categoria'])=="Todas las categorias"){echo " selected"; } ?>>Todas las categorias</option>
		</select>
		<select name="O_Año" class="caja_busqueda_año">
			<?PHP
		        // Obtener los valores del tipo año
			$now = gmdate("Y");
			for ($i=1990; $i<=$now; $i++)
			{
				?> 
				<option value="<? print $i ?>"  <? if($_POST['O_Año']==$i){echo " selected"; } ?> > <? print $i ?> </option>
								
				<?PHP
			}
			?>
			<option value="Todos los años" <? if(print ($_POST['O_Año'])=="Todos los años"){echo " selected"; } ?> >Todos los años</option>						
			</select>
										
			<input type="submit" value="Buscar" name="Buscar" class="boton_buscar">		
								
</form>

gracias de ante mano!!
  #2 (permalink)  
Antiguo 23/09/2008, 12:47
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema en un buscador para mantener valores.

Bueno, es que cuando hace el recarge de pagina se pierden estos parametros, lo que te recomiendo es guardar la sentencia sql de la busqueda en una variable de session, para ejecutarla en cada paginado, de esta forma, los valores estaran tanbien alli y no perderas los valores.
Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 23/09/2008, 13:00
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Problema en un buscador para mantener valores.

Hola pier2384...

Pues como veo tu código en los los select debería funcionar...

Para tu input tipo text, pues siempre te va a cargar "( Busca un cuadro )" por que no le dejas el post en el value como lo haces con los select.

Otra cosa, acostúmbrate a no utilizar caracteres extraños en la programación:
Código:
<select name="O_Año" class="caja_busqueda_año">
Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 23/09/2008, 13:11
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema en un buscador para mantener valores.

Usar variables de session ya lo habia intentado del modo siguiente:

-Primero nada más empezar la pagina

Código PHP:
   session_start (); 
-Segundo guardar los valores de los distintos campos
Código PHP:
//Siendo O_Categoria el name del select
$categoria $_REQUEST['O_Categoria'];
$_SESSION['cat'] = $categoria
-Tercero cargar los option valuer asi:
Código:
<option value="<? print $fila[0] ?>" <?php if($_SESSION['cat']==$fila[0]){ echo " selected"; } ?>> <? print $fila[0] ?> </option>


y tampoco me funcionaba...

¿Alguien sabe que esta mal?

Gracias tanto a the_web_saint como a Carxl, tendre vuestros consejos muy en cuenta, y seguire dandole hasta que salga.

Carxl si que a veces rebusco los nombres un poco,
y gracias por lo del input tipo text, si que tienes razón,pero es que quiero que tenga por defecto el valor "( Buscar un cuadro )" y si lo cargo con el $_POST ese valor nunca aparecería y no se como hacerlo aparecer de primeras pero que luego guarde el valor que pongas...mucho lio :-$

Última edición por pier2384; 23/09/2008 a las 15:57 Razón: Cambiar un fallo
  #5 (permalink)  
Antiguo 23/09/2008, 16:00
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema en un buscador para mantener valores.

sigo dandole vueltas y no entiendo porque no me funciona la variable de session...

gracias a todos los que habeis participado.
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 23:02.