PHP - Mantener datos en un formulario

   
Vista:

Mantener datos en un formulario

Publicado por Unexes (124 intervenciones) el 20/11/2012 22:13:10
Hola a tod@s.

Tengo una página que funciona bien, pero estoy mejorandola y se me a ocurrido añadir la posibilidad de que el visitante de la misma cuando utiliza el formulario para filtrar los registros que cumplen determinadas condiciones, el formulario mantenga lo seleccionado despues de enviarlo (Filtrado).

Aclaro que la página se llama a si misma por lo tanto al presionar el botón BUSCAR me hace la busqueda de los registros correctamente pero me borra todo lo seleccionado en los diferentes selects y checkbox que tengo puestos para filtrar.

¿Como podria mantener los valores seleccionados en los checkbox y en los selects despues de enviar el formulario para filtrar?

A continuación os pongo para no hacerlo muy largo un ejemplo de uno de los selects que utilizo que se rellena desde una tabla de mysql y uno de los checkbox.

Aqui declaro la variable del select y del checkbox:
1
2
<?php $seltipocoche = isset($_GET["seltipocoche"])? $_GET["seltipocoche"]: '';
$frances = isset($_GET["frances"])? $_GET["frances"]: '';?>


Aquí relleno el select desde mi base de datos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select name="seltipocoche" id="seltipocoche" class="Guias3">
		<option value="-1" selected>Tipo de Coche</option>
<?php
	$tablatipocoche = mysql_query("SELECT * FROM tipocoche  ORDER BY TipoCoche ASC");
	while ($registrotipocoche  = mysql_fetch_array($tablatipocoche )) {
?>
 
<option value="<?php echo $registrotipocoche ['TipoCoche']; ?>"><?php echo "&nbsp;&nbsp;" .$registrotipocoche ['TipoCoche']; ?></option>
 
<?php
	}
	mysql_free_result($tablatipocabello);
		?>
	</select>

Aqui esta el input de un checkbox:
1
<label><input type="checkbox" name="frances" value="1" />Frances </label>


y esta es la parte de mi consulta que corresponde a ese select y a ese checkbox:
1
2
3
4
5
6
7
8
if (isset($_GET['seltipocoche'])and $_GET['seltipocoche'] <>'-1') {
		$sql .= "AND vehiculos.TipoCoche = '$seltipocoche' ";
	   }else {$sql .= "AND vehiculos.TipoCoche <> '-1' ";
}
       if (isset($_GET['frances'])and $_GET['francesl'] ='1') {
		$sql .= "AND vehiculos.Frances= '$frances' ";
	   }else {$sql .= "AND (vehiculos.Frances = '1' or vehiculos.Frances = '0')";
}

Para enviar utilizo un botón:
1
<input type="submit" name="cmdBuscar" id="cmdBuscar" value="BUSCAR">


Os quedare muy agradecido si me podeis ayudar, Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Mantener datos en un formulario

Publicado por xve (5515 intervenciones) el 21/11/2012 07:34:08
Hola Unexes, yo lo haría de esta manera...

Para el <select>:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<select name="seltipocoche" id="seltipocoche" class="Guias3">
    <option value="-1" selected>Tipo de Coche</option>
    <?php
    $tablatipocoche = mysql_query("SELECT * FROM tipocoche  ORDER BY TipoCoche ASC");
    while ($registrotipocoche  = mysql_fetch_array($tablatipocoche ))
    {
        if($_POST["seltipocoche"]==$registrotipocoche['TipoCoche'])
        {
            echo "<option value='".$registrotipocoche['TipoCoche']."' selected>&nbsp;&nbsp;".$registrotipocoche['TipoCoche']."</option>";
        }else{
            echo "<option value='".$registrotipocoche['TipoCoche']."'>&nbsp;&nbsp;".$registrotipocoche['TipoCoche']."</option>";
        }
    }
    mysql_free_result($tablatipocabello);
    ?>
</select>


Para el checkbox:
1
2
3
4
5
6
7
8
<?php
if($_POST["frances"])
{
    echo "<label><input type='checkbox' name='frances' value='1' checked/>Frances </label>";
}else{
    echo "<label><input type='checkbox' name='frances' value='1' />Frances </label>";
}
?>


Si tienes cualquier duda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Mantener datos en un formulario

Publicado por Unexes (124 intervenciones) el 21/11/2012 09:58:49
Gracias xve

El checkbox con las pruebas que he hecho de momento funciona bien solo tuve que hacer un pequeño cambio porque me decia que la variable no estaba definida y ademas he cambiado el metodo de $_POST a $_GET, queria preguntarte si seria mejor hacerlo todo en $_POST

El checkbox ha que dado así:
1
2
3
4
5
6
7
8
<?php
if (isset($_GET["frances"]))
{
    echo "<label><input type='checkbox' name='frances' value='1' checked/> Frances</label>";
}else{
    echo "<label><input type='checkbox' name='frances' value='1' /> Frances</label>";
}
?>

Donde tengo un problema es en el select, aparte de hacerle los mismos cambios que al checkbox el if (isset... ) y el metodo, cuando selecciono una opción me filtra por dicha opción correctamente pero luego no se me queda la opción seleccionada si no que se me queda la última opción de mi tabla, para esplicartelo mejor y que lo entiendas te pongo de nuevo un select con tu código implementado pero este select no es de un tipo de coche si no de seleccionar una ciudad, pongo este por que así sera mas sencillo de entender el problema, primero pongo el select y luego te comento que pasa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<select name="selciudad" id="selciudad" class="Guias3">
    <option value="-1" selected>&nbsp;Todas las Ciudades&nbsp;&nbsp;</option>
    <?php
    $tablaciudad = mysql_query("SELECT * FROM provincias  ORDER BY Provincia ASC");
    while ($registrociudad  = mysql_fetch_array($tablaciudad ))
    {
        if (isset($_GET["selciudad"])==$registrociudad['Provincia'])
        {
            echo "<option value='".$registrociudad['Provincia']."' selected>&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
        }else{
            echo "<option value='".$registrociudad['Provincia']."' selected>&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
        }
    }
    mysql_free_result($tablaciudad);
    ?>
</select>

Veras en el campo Provincia de mi tabla están todas las ciudades "A Coruña","Álava" etc... y la ultima logicamente es "Zaragoza" cuando selecciono en el select por ejemplo "Madrid" me filtra correctamente los registros que se corresponden con "Madrid" pero al recargar la página en el select queda seleccionada "Zaragoza que es la ultima de la tabla no se me queda "Madrid".

No veo donde esta el error, que es lo que esta mal.

Un saludo y un montón de gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de xve

Mantener datos en un formulario

Publicado por xve (5515 intervenciones) el 21/11/2012 11:18:26
El valor que hace que el select quede seleccionado es "selected" y tu lo has puesto en los dos <option value ... selected>... déjalo únicamente en el primero, que es el que cumple la condición.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener datos en un formulario

Publicado por Unexes (124 intervenciones) el 21/11/2012 19:58:43
Disculpa por hacerte perder el tiempo a sido un error por mi parte al copiar y pegar el código mientras hacia unas pruebas. el problema que te esplicado en el post anterior es lo que realmente me ocurre en estos momentos con este código que es el que tengo puesto. Antes de enviarte este comentario lo he vuelto a probar y me sigue dando el error que te comento anteriormente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<select name="selciudad" id="selciudad" class="Guias3">
    <option value="-1" selected>&nbsp;Todas las Ciudades&nbsp;&nbsp;</option>
    <?php
    $tablaciudad = mysql_query("SELECT * FROM provincias  ORDER BY Provincia ASC");
    while ($registrociudad  = mysql_fetch_array($tablaciudad ))
    {
        if (isset($_GET["selciudad"])==$registrociudad['Provincia'])
        {
            echo "<option value='".$registrociudad['Provincia']."' selected>&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
        }else{
            echo "<option value='".$registrociudad['Provincia']."' >&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
        }
    }
    mysql_free_result($tablaciudad);
 
    ?>
</select>

Perdona por enviarte un código erroneo mientras hacia pruebas. pero sigo sin ver donde esta el error en este código..

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Mantener datos en un formulario

Publicado por xve (5515 intervenciones) el 21/11/2012 20:18:44
Porque has puesto el isset??
1
if (isset($_GET["selciudad"])==$r...


Una vez has echo enviar, siempre esta establecida... quítalo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Mantener datos en un formulario

Publicado por El mismo (124 intervenciones) el 21/11/2012 20:38:05
Gracias por tu rapidez en contestar, si lo quito me da el siguiente error
1
Notice: Undefined index: selciudad in C:\wamp\www\Vehiculos\coches.php on line 159

y no se rellena el select desde la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Mantener datos en un formulario

Publicado por xve (5515 intervenciones) el 21/11/2012 22:56:33
Es un Notice, no es ni un warning ni un error... te esta informando que no esta declarado ese índice en el array, simplemente eso!!!

realiza un echo de la variable... estas seguro que estas enviando los datos por GET?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener datos en un formulario

Publicado por Unexes (124 intervenciones) el 22/11/2012 09:47:21
Veras he hecho el echo y cuando tengo el notice no me da ningún valor, pero acabo de darme cuenta de una cosa y es que cuando entro a la página por primera vez y me da el notice y no se rellena el select, si pulso sobre el botón BUSCAR del formulario que utilizo para filtrar sin seleccionar nada me muestra todos los coches eso es correcto y me da el valor de la variable $selciudad "-1" y a partir de ese momento ya puedo seleccionar la ciudad y todo funciona correctamente y el select mantiene la ciudad seleccionada.

El fallo solo lo da al entrar en la página por primera vez, por si el problema estuviera en la consulta te pongo la parte de código que corresponde a dicho select:
1
2
3
4
if (isset($_GET['selciudad'])and $_GET['selciudad'] <>'-1') {
		$sql .= "AND coches.Ciudad = '$selciudad' ";
	   }else {$sql .= "AND coches.Ciudad <> '-1' ";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SOLUCIONADO :Mantener datos en un formulario

Publicado por Unexes (124 intervenciones) el 24/11/2012 12:46:20
Ya esta SOLUCIONADO al fín encontre la forma de hacerlo.
Gracias a tod@s.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

SOLUCIONADO :Mantener datos en un formulario

Publicado por xve (5515 intervenciones) el 25/11/2012 10:36:00
Hola Unexes, nos puedes mostrar como lo hiciste al final?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SOLUCIONADO :Mantener datos en un formulario

Publicado por Unexes (124 intervenciones) el 25/11/2012 12:14:51
xve, perdonad por no poner la solución en el momento pero fue por una causa mayor tuve que marcharme rapidamente cuando estaba escribiendo el post así que deje el mensaje para que otros compañeros no siguierán buscando la solución porque yo ya la tenia, la pongo a continuación pero me gustaria que si alguien ve que en esta solución hay alguna cosa que esta mal hecha le rogaria me lo dijera porque me gusta que mi código este lo mejor posible.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<select name="selciudad" id="selciudad" class="Guias3">
    <option value="-1" selected>&nbsp;Todas las Ciudades&nbsp;&nbsp;</option>
    <?php
    $tablaciudad = mysql_query("SELECT * FROM provincias  ORDER BY Provincia ASC");
    while ($registrociudad  = mysql_fetch_array($tablaciudad ))
 
        if(empty($_GET['selciudad']))
		{
		  ($_GET['selciudad'] = '-1');
		}elseif
		  ($_GET["selciudad"]==$registrociudad['Provincia'])
		{
           echo "<option value='".$registrociudad['Provincia']."' selected>&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
       }else{
          echo "<option value='".$registrociudad['Provincia']."' >&nbsp;&nbsp;".$registrociudad['Provincia']."</option>";
      }
    mysql_free_result($tablaciudad);
 
    ?>
 
</select>

Bueno la solución estaba en comprobar si el valor que llegaba al cargar la página por primera vez era nulo y si lo era darle un valor de "-1", en caso contrario si no es la primera vez que se entra en la página osea que se a utilizado el filtro coger el valor seleccionado previamente.

Gracias a tod@s.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

SOLUCIONADO :Mantener datos en un formulario si se va a otra pagina y se desvuelve mantener los dato

Publicado por wilibeth (1 intervención) el 15/11/2014 20:12:56
Bueno necesito que me ayuden.tengo un sistema que en el formulario ace una busqueda dinamica y le permite irse a otro formulario pero cuando me desvuelvo me elimina los datos q inrese que hacer?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener datos en un formulario

Publicado por Gerardo (1 intervención) el 14/06/2016 15:08:57
Excelente publicación me ha ayudado muchisimo.

Bendiciones!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar