Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/07/2011, 20:27
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Problema con checkbox e input unidos y condicionados

Cita:
Iniciado por GatorV Ver Mensaje
Porque cuando no marcas el checkbox el valor no es enviado al browser, por lo que más bien tienes que preguntar si no esta seteado:
Código PHP:
Ver original
  1. if (isset($_POST['check1'])) {
  2.        // marcado
  3. } else {
  4.        // no marcado
  5. }

Cuando tengas dudas, siempre es bueno inspeccionar tu variable $_POST para que veas que valores te llegan a tu formulario.

Saludos.
Hola GatorV

Siguiendo tu explicación en este caso (añadiendo el botón enviar para que no salga al cargar la página y solo cuando se pulse enviar) me sale perfectamente:

Código PHP:
Ver original
  1. <input type="checkbox" value="Hospitalización y convalecencia" name="check11" <?php
  2. if (isset($_POST['check11']) && $_POST['check11'] =="Hospitalización y convalecencia") { echo " checked='checked'"; }?>  />
  3. Hospitalización y convalecencia (indicar prestación diaria: elegir de un importe 6 a 60 eur /dia)
  4. <input type="text" id="prestacion-diaria" name="prestacion-diaria" <?php if($_POST['enviar'])
  5. if (isset($_POST['check11'])) {
  6.            // marcado
  7.            {echo "value=\"Incompleto\""; echo ' class="aviso-formulario"'; }
  8.     } else {
  9.            // no marcado
  10.            {echo 'value=""';}
  11.     }
  12. ?>

Sin embargo ahora intento que si está marcado el checkbox e indica "Incompleto" o cualquier otro nombre nuevo que mantenga ese valor en el campo input ($_POST['prestacion-diaria']) y no termina de mantener dicho valor. Lo he intentado así suponiendo un valor "Algo".

Código PHP:
Ver original
  1. <input type="text" id="prestacion-diaria" name="prestacion-diaria"
  2. <?php if($_POST['enviar'])
  3. if (isset($_POST['check11'])) {
  4.            // marcado
  5.            if (isset($_POST['prestacion-diaria']) && $_POST['prestacion-diaria'] == "")
  6.            {echo "value=\"Incompleto\""; echo ' class="aviso-formulario"'; }
  7.            elseif (isset($_POST['prestacion-diaria']) && $_POST['prestacion-diaria'] != "" && $_POST['prestacion-diaria'] != "Incompleto")
  8.            {echo "value=\"Algo\"";// Aquí entra el valor del input $_POST['prestacion-diaria']}
  9.     } elseif (isset($_POST['check11']) == "") {
  10.            // no marcado
  11.            {echo 'value=""';}
  12.     }
  13. ?>

Como decía antes no me sale de la manera correcta.

Cita:
Iniciado por abimaelrc Ver Mensaje
Una forma de enviar siempre un valor no importando si esta seleccionado o no es colocando un campo tipo hidden antes del campo tipo checkbox y con el mismo nombre del checkbox pero con diferente valor algo como
Código PHP:
Ver original
  1. <input type='hidden' name='foo' value='0' />
  2. <input type='chekbox' name='foo' value='1' />
Si el checkbox no es seleccionado te va a dar el valor del hidden pero si es seleccionado te va a dar el valor del checkbox.
Hola abimaelrc, aun no he probado esa opción, voy a ver si la saco

Gracias a ambos por la ayuda