Foros del Web » Programando para Internet » PHP »

no consigo mantener valores checkbox en un formulario

Estas en el tema de no consigo mantener valores checkbox en un formulario en el foro de PHP en Foros del Web. Hola, muy buenas! Estoy tratando de conseguir que se mantengan los valores seleccionados en un un input con checkbox en un formulario, en php, al ...
  #1 (permalink)  
Antiguo 29/01/2011, 16:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 1 mes
Puntos: 0
no consigo mantener valores checkbox en un formulario

Hola, muy buenas!

Estoy tratando de conseguir que se mantengan los valores seleccionados en un un input con checkbox en un formulario, en php, al volever a la página.

He visto varias soluciones pero no consigo que me salga a mí. Creo que debo estar haciendo algo mal con el array.

Esta es la parte correspondiente en el primer formulario en la primera página:

Código PHP:
..
<
input type="checkbox" name="coche[]" value="ford"ford<br />
<
input type="checkbox" name="coche[]" value="opel">opel<br />
 <
input type="checkbox" name="coche[]" value="peugeot"peugeot<br />
 ... 
Entonces, los valores los recojo en otra página, donde si hay algún error pongo otra vez el formulario. Así recogo los valores antes del formulario:

Código PHP:
..
$coche=$array();//para que sepa que es un array
$coche=$_POST['coche'];
.. 

Y la parte correspondiente al formulario la tengo así:

Código PHP:
..
print<<<HERE
..
<input type="checkbox" name="coche[]" value="ford"
HERE;
if (
array_key_exists('ford'$coche)) {
    echo 
"checked";}
print<<<HERE
 > ford<br /><input type="checkbox" name="coche[]" value="opel"
...
.... 
,pero me sale un error diciendo que se espera que el segundo parámetro(de la función con array) sea un array. Aquí es donde me pierdo. Supongo que debo tratar el array $coche[] de otra manera para poder incluirlo en dicha función, aunque no veo porqué esta mal.

Todo lo demás está bien , porque antes de implementar dicha función los valores quedaban registratos correctamente y todo funciona bien.

¿Alguna idea, por favor, de qué puedo o debo cambiar?.

Muchísimas gracias de antemano.
Un saludo

Última edición por breaststroke; 29/01/2011 a las 16:59
  #2 (permalink)  
Antiguo 30/01/2011, 08:35
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 14 años, 1 mes
Puntos: 54
Respuesta: no consigo mantener valores checkbox en un formulario

el problema es que si no hay ningun coche seleccionado previamente en el formulario, la variable post que recoges no devuelve nada, y no hay por tanto ningun array devuelto.
Por tanto pregunta antes if(isset($_POST['coche']))

Y luego ya veras como recuperar valores

Última edición por historiasdemaria; 30/01/2011 a las 08:42
  #3 (permalink)  
Antiguo 30/01/2011, 17:58
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: no consigo mantener valores checkbox en un formulario

Hola y gracias, historiasdemaria, por responder.

Sigue sin salirme. He cambiado a añadir lo que me dices:
Código PHP:
..
.. 
print<<<
HERE 
.. 
<
input type="checkbox" name="coche[]" value="ford" 
HERE
if(isset(
$_POST['coche'])){
$coche=$_POST['coche'];//también lo he probado omitiendo esto y poníendo abajo el array del POST
if (array_key_exists('ford'$coche)) { 
    echo 
"checked";}}
print<<<
HERE 
 
ford<br /><input type="checkbox" name="coche[]" value="opel" 
... 
.... 
Creo que era esto lo que me sugerías, no estoy muy seguro.

saludos
  #4 (permalink)  
Antiguo 30/01/2011, 22:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde Configuración PHP a PHP
  #5 (permalink)  
Antiguo 01/02/2011, 09:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: no consigo mantener valores checkbox en un formulario

Hey!!!

Me funciona con la función in_array!!
yuhuuu!!.
¿Puede ser que la función array_key_exists sea para versiones anteriores de php?(versión3); me ha parecido leer esto en algún sitio.
yuhuu!!

Gracias historiasdemaria!!

saludos
  #6 (permalink)  
Antiguo 01/02/2011, 09:04
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 14 años, 1 mes
Puntos: 54
De acuerdo Respuesta: no consigo mantener valores checkbox en un formulario

Código PHP:
Ver original
  1. <?php
  2. function isChecked($value)
  3. {
  4.         if (isset($_POST['coche']))
  5.         {
  6.             if (in_array($value, $_POST['coche']))
  7.             {
  8.                 return " CHECKED";
  9.             }
  10.         }
  11.    
  12.         return "";
  13. }
  14.  
  15. ?>
  16. <form method="post" id="form" name="form" action="form.php">
  17. <input type="checkbox" name="coche[]" value="ford" <?php echo isChecked('ford'); ?>> ford<br />
  18. <input type="checkbox" name="coche[]" value="opel" <?php echo isChecked('opel'); ?>>opel<br />
  19. <input type="checkbox" name="coche[]" value="peugeot" <?php echo isChecked('peugeot'); ?>> peugeot<br />
  20.  
  21. <input type="submit" value="enviar" />
  22. </form>

Ahi va, enterito ;)
  #7 (permalink)  
Antiguo 01/02/2011, 09:15
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: no consigo mantener valores checkbox en un formulario

hola,

Parece que me he adelantado unos segundos a tu último post, historiasdemaria:)

Gracias por tu nuevo post. Lo estudiaré y si me falla lo que estoy haciendo lo aplicaré de esa manera.
Muchas gracias de nuevo!!

Saludos
  #8 (permalink)  
Antiguo 01/02/2011, 16:46
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: no consigo mantener valores checkbox en un formulario

Hola de nuevo.
Bueno, me dejé llevar por la emoción, jeje.
Resulta que se mantienen los datos pero solo cuando los has pulsado; si no, siguen apareciendo los mensajes de error. Y es que ya había probado con in_array también, pero he pensado que habría puesto mal las comillas o algo.
A parte de la solución que das que parece estupenda se me ha ocurrido otra:
poner @ precediendo a la función in_array, y así no se muestran los mensajes de error(yo ya pongo el mío deciendo que faltan datos).

Ciao!:)

Etiquetas: checkbox, mantener, formulario
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 15:14.