Foros del Web » Programando para Internet » PHP »

Mantener lo seleccionado en un formulario usado para filtrar. despues de enviarlo.

Estas en el tema de Mantener lo seleccionado en un formulario usado para filtrar. despues de enviarlo. en el foro de PHP en Foros del Web. Hola de nuevo 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 ...
  #1 (permalink)  
Antiguo 17/11/2012, 05:33
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Mantener lo seleccionado en un formulario usado para filtrar. despues de enviarlo.

Hola de nuevo 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.

Aclaro el tema, el formulario al enviarse llama a su misma página donde se encuentra "coches.php", en este formulario hay una docena de selects que se recargan desde varias tablas de una base de datos (Ejemplo: color del coche, tipo de combustible, año, extras, etc...) y luego tambien hay una treintena de checkbox para seleccionar otras cosas (Ejemplo: Gps, Autoradio, Aire acondicionado, etc...), pues bien al seleccionar por lo que quiero filtrar y pulsar el botón enviar me filtra los registros correctamente pero me borra los checbox seleccionados y me pone en los selects el valor por defecto y si quiero cambiar algo por lo que he filtrado me toca seleccionar todo de nuevo.

1º) ¿Como podria mantener los valores seleccionados en los checkbox y en los selects despues de enviar el formulario?
2º) ¿Como deberia plantear este asunto?. He pensado en variables de session pero necesitaria muchas y creo que no es la forma ideal de hacer esto.

Si hace falta pongo el código de cualquiera de los selects ya que todos son practicamente iguales y tambien puedo poner la consulta aunque es bastante larga.

Un saludo y gracias anticipadas por vuestra ayuda.
__________________
¿Hay algo mas hermoso que ayudar.?
  #2 (permalink)  
Antiguo 17/11/2012, 05:42
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

la respuesta a esto es ajax, que no te mueves de la pagina y te mostraría los resultados, con lo que es lo que buscas ;)
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #3 (permalink)  
Antiguo 17/11/2012, 06:04
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

Gracias CoriaWeb por tu rapida respuesta.

El problema es que no tengo ni idea de ajax, tendria que pediros a alguien que me hiciera una parte del código por ejemplo de un select y de un checbox y luego lo implementaria yo al resto, y no se si alguien me haria ese favor.

No obstante si hay algún ejemplo claro en la red me indicais donde lo puedo ver y intentare implementarlo y acoplarlo a mi código con vuestra ayuda, sin que nadie me tenga que hacer esa parte del código.

Espero que sigais ayudandome, un saludo.
__________________
¿Hay algo mas hermoso que ayudar.?
  #4 (permalink)  
Antiguo 17/11/2012, 06:40
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

En realidad creo que sería más adecuado escribir esto en el foro de ajax, porque aquí algunos aunque sepamos cosas de ajax estamos cortitos :P
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #5 (permalink)  
Antiguo 17/11/2012, 07:07
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

@unexes, algo te impide el setear los valores por defecto del form con lo que viene por POST ?, de todas formas si el form es muy complejo puedes utilizar algún tipo de persistencia lo mas común es guardar en session directamente.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 17/11/2012, 09:28
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

Yo personalmente no usaría AJAX. Para los checkbox podés hacer algo así:

Código PHP:
<input type="checkbox" name="ejemplo[]" value="1"<?php if (in_array(1$array_ejemplo)) {echo ' checked="checked"';} ?> />
<input type="checkbox" name="ejemplo[]" value="2"<?php if (in_array(2$array_ejemplo)) {echo ' checked="checked"';} ?> />
Donde $array_ejemplo es un array donde tenés todos los valores de los checkboxes seleccionados pasados por $_POST. En caso de que sea la primera vez que abrís la página y aú no recibiste variables $_POST, esa variable la inicializás como un array vacío.

Para los selects es similar pero tenés que ir preguntando si el valor del select que recibís por $_POST es igual al value que estás imprimiendo, en ese caso imprimís selected="selected".

Saludos.
  #7 (permalink)  
Antiguo 17/11/2012, 14:37
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

Gracias a tod@s, (CoriaWeb, masterpuppet, RabidFish), por vuestra ayuda.

Voy a ir por partes:

CoriaWeb, si llegara el caso y tengo que realizar esta consulta en el foro de ajax creo que no esta permitido duplicar la consulta en 2 foros distintos tendria que pedir que alguien la moviera, no obstante seguiria teniendo el mismo problema me lo tendria que dar mascado (casi hecho) algún compañero ya que de ajax no tengo ni idea y si tuviera que terminar haciendolo en ajax seria muy molesto tener que estar preguntando continuamente a los compañeros como se hace esto o lo otro ya que mi desconocimiento en ese terreno es total.

masterpuppet, en principio me plantee guardar los datos en variables de sesión porque me defiendo un poco con ellas, pero lo que me a parado es que son alrededor de 50 las variables que preciso y creo haber leido que no es aconsejable utilizar muchas ya que se multiplican en el sevidor por cada visitante de la página, aunque en realidad no se que entienden por muchas ( ¿ muchas son 10 o son 200 ? )por lo tanto es por eso que he planteado el tema para que podais aconsejarme antes de empezar a modificar mi código. ¿Tu crees que seria esa una buena solución?.

RabidFish, voy a probar en otra página lo que me dices a ver si lo puedo implementar en mi código y consigo que funcione correctamente.

Como dije al principio si precisais ver alguna parte de mi código para poderme ayudar mejor solo teneis que decirlo y lo pondre, los valores los paso por $_GET.

A ver si me podeis decir algo mas, un saludo a todos y gracias.
__________________
¿Hay algo mas hermoso que ayudar.?
  #8 (permalink)  
Antiguo 17/11/2012, 15:18
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

unexes, yo no tendría problema en ayudarte, el caso es que no soy un experto en ajax ;), pero me manejo, envíame los archivos al email [email protected], los reviso, haber si puedo ayudarte y luego ponemos aquí la solución, si lo consigo claro.. :P :D
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #9 (permalink)  
Antiguo 17/11/2012, 20:57
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

Gracias por tu ayuda CoriaWeb.

Te agradezco enormemente el detalle que tienes al pedirme que te envie los archivos para ayudarme, pero completos no te los podria enviar ya que son de la pequeña empresa donde yo trabajo y aunque yo no soy diseñador ni programador de webs ( de hay mis carencias ) como hay poco trabajo y soy el que tiene mas luces en ese terreno en la empresa me han encargado que intente mejorar la web y en estos momentos tal como esta el curro a ver quien se niega, así que lo hago en mis ratos libres, no me meten prisa, no me exigen, pero no me dan pausa.

Dicho esto lo que si que hare no te quepa la menor duda es que si en lo que queda de fin de semana no se como plantearlo te enviare el mismo código, tal como esta hecha esa página web pero simplificare el formulario, dejando en el mismo un par de selects y un par de checkbox unicamente, de esa forma te sera mas facil ayudarme, no obstante te pongo a continuación el código de uno de los selects, el código de uno de los checkbox y la parte de la consulta donde leo los registros por si con eso puedes hacer algo.

Aqui declaro la variable del select y del checkbox:
Código PHP:
Ver original
  1. <?php $seltipocoche = isset($_GET["seltipocoche"])? $_GET["seltipocoche"]: '';
  2. $frances = isset($_GET["frances"])? $_GET["frances"]: '';?>
Aquí relleno el select desde mi base de datos:
Código PHP:
Ver original
  1. <select name="seltipocoche" id="seltipocoche" class="Guias3">
  2.         <option value="-1" selected>Tipo de Coche</option>
  3. <?php
  4.     $tablatipocoche = mysql_query("SELECT * FROM tipocoche  ORDER BY TipoCoche ASC");
  5.     while ($registrotipocoche  = mysql_fetch_array($tablatipocoche )) {
  6. ?>
  7.  
  8. <option value="<?php echo $registrotipocoche ['TipoCoche']; ?>"><?php echo "&nbsp;&nbsp;" .$registrotipocoche ['TipoCoche']; ?></option>
  9.  
  10. <?php
  11.     }
  12.     mysql_free_result($tablatipocabello);
  13.         ?>
  14.     </select>
Aqui esta el input de un checkbox:
Código:
<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:
Código PHP:
Ver original
  1. if (isset($_GET['seltipocoche'])and $_GET['seltipocoche'] <>'-1') {
  2.         $sql .= "AND vehiculos.TipoCoche = '$seltipocoche' ";
  3.        }else {$sql .= "AND vehiculos.TipoCoche <> '-1' ";
  4. }
  5.        if (isset($_GET['frances'])and $_GET['francesl'] ='1') {
  6.         $sql .= "AND vehiculos.Frances= '$frances' ";
  7.        }else {$sql .= "AND (vehiculos.Frances = '1' or vehiculos.Frances = '0')";
  8. }

Para enviar utilizo un botón:
Código:
<input type="submit" name="cmdBuscar" id="cmdBuscar" value="BUSCAR">
Bueno perdonad la paliza que os estoy dando, pero no sabeis como os agradezco vuestra ayuda, lo malo es que si lo consigo solucionar, ante mi jefe sere yo quien quede bien y eso es un poco injusto.

Un saludo.
__________________
¿Hay algo mas hermoso que ayudar.?
  #10 (permalink)  
Antiguo 19/11/2012, 12:47
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

CoriaWeb.

Supongo que no has tenido tiempo a echarle un vistazo al código que he puesto, mira a ver si ves como ayudarme.

Un saludo.
__________________
¿Hay algo mas hermoso que ayudar.?
  #11 (permalink)  
Antiguo 19/11/2012, 15:50
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

No estoy ahora mismo en mi pc, pero así a primera vista lo que tienes que plantear es lo siguiente, la misma "validación" que hagas actualmente es la que hay que enviar por ajax para que realice el proceso y te muestre el resultado, la validación la haces en el mismo documento o lo envías a otro php?
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #12 (permalink)  
Antiguo 19/11/2012, 17:03
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

Vale pero como ya te comente al principio de ajax no tengo ni idea así que no se como enviar nada ni se como realizar el proceso, me interesaria validar en el mismo documento si es posible.

No te preocupes cuando estes en tu pc comentamos.

Un saludo
__________________
¿Hay algo mas hermoso que ayudar.?
  #13 (permalink)  
Antiguo 21/11/2012, 13:52
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 3 meses
Puntos: 7
Respuesta: Mantener lo seleccionado en un formulario usado para filtrar. despues de e

CoriaWeb ya estoy en vias de solucionarlo con PHP por si te sirve como solución a ti y a todos los demas que me han leido te dire que para los checkbox la solución es esta:

Código PHP:
Ver original
  1. <?php
  2. if (isset($_GET["frances"]))
  3. {
  4.     echo "<label><input type='checkbox' name='frances' value='1' checked/> Frances </label>";
  5. }else{
  6.     echo "<label><input type='checkbox' name='frances' value='1' /> Frances</label>";
  7. }
  8. ?>
y para el select estoy en ello, cuando lo tenga claro te lo comentare.


un saludo.
__________________
¿Hay algo mas hermoso que ayudar.?

Etiquetas: filtrar, formulario, registro, seleccionado, tabla, 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:52.