Ver Mensaje Individual
  #26 (permalink)  
Antiguo 05/08/2011, 19:38
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: Evitar envio de formulario con checkbox marcado con otro campo input vacio

Hola antes que nada muchas gracias de nuevo, excelentes explicaciones y tiempo para la ayuda. He editado post anteriores para que no se cargue tanto la página, y aquí cito solo esta parte (resumida).

Cita:
Iniciado por New Ver Mensaje
Sigues haciendo mal uso de las condicionales, mas preciso los elseif.

El elseif no funciona para este caso, por ello no hay que usarlo. Olvidate de el.

Verás te podre un ejemplo

Código PHP:
Ver original
  1. $condicion1 = 1;
  2. $condicion2= 2;
  3.  
  4.  
  5. if($condicion==1){
  6.  
  7.  
  8. }
  9.  
  10. elseif($condicion==2){
  11.  
  12.  
  13. }

Teniendo claro esto, vamos a ver que validaciones requerimos. En listarlas:

-> Si los X checkbox estan seleccionados
-> Si al menos un X checkbox esta seleccionado identificar cual es
--> y tienen que:
-> Si los X textfield no estan vacios y son diferentes de "Incompleto"
Cita:
Iniciado por vgonga1986 Ver Mensaje
Las condiciones de un if deben ser completas y excluyentes. Te pongo un ejemplo:
Código PHP:
Ver original
  1. if ($num < 4) {
  2.  
  3. } else if ($num >= 4 && $num < 20) {
  4.  
  5. } else { // se sobreentiende que $num >= 20
  6.  
  7. }
Este caso es completo y excluyente, porque para cualquier valor de $num entra por un if y, además, sólo por uno.
Siguiendo todo lo anterior y probando una tras otra, me quedo con esta parte de la explicación, sin embargo por más vueltas que he probado otra vez caigo en lo mismo

Primero empiezo creando condiciones con un if completas y excluyentes o eso creo ya que aquí todo entra bien:

Código PHP:
Ver original
  1. if ((isset($_POST['check11'])) && (isset($_POST['check12'])) && (isset($_POST['check20'])))
  2.     {
  3.         //echo "Está seleccionado el 11";
  4.         echo "Están todos seleccionados";
  5.     }
  6.     //Si está seleccionado el 12
  7.     else if ((isset($_POST['check11'])) || (isset($_POST['check12'])) || (isset($_POST['check20'])))
  8.     {
  9.      echo "Está seleccionado alguno";
  10.     }
  11.     // no está seleccionado ninguno
  12.     else
  13.     {
  14.      echo "Ningún checkbox marcado";
  15.     }

El problema llega cuando tengo que meter las 3 condiciones de los campos condicionados, ahí otra vez vuelvo a lo mismo:

Código PHP:
Ver original
  1. $cond1 = false;
  2.     $cond2 = false;
  3.     $cond3 = false;
  4.     if (!empty ($_POST['prestacion-diaria']) && ($_POST['prestacion-diaria'] != "Incompleto"))
  5.     {
  6.     $cond1 = true;
  7.     }
  8.     if (!empty ($_POST['cirugia-y-tratamientos']) && ($_POST['cirugia-y-tratamientos'] != "Incompleto"))
  9.     {
  10.     $cond2 = true;
  11.     }
  12.     if (!empty ($_POST['cirugia-y-tratamientos2']) && ($_POST['cirugia-y-tratamientos2'] != "Incompleto"))
  13.     {
  14.     $cond3 = true;
  15.     }  
  16.     if ((isset($_POST['check11'])) && (isset($_POST['check12'])) && (isset($_POST['check20'])))
  17.     {
  18.         if($cond1 && $cond2 && $cond3)
  19.         {
  20.             echo "Están todos los campos marcados y correctos";
  21.         }
  22.         else
  23.         {
  24.             echo "Algún campo marcado está incorrecto";
  25.         }
  26.         //echo "Está seleccionado el 11";
  27.         echo "Están todos seleccionados";
  28.     }
  29.     //Si solo alguno o algunos están marcados
  30.     else if ((isset($_POST['check11'])) || (isset($_POST['check12'])) || (isset($_POST['check20'])))
  31.     {
  32.         if($cond1 || $cond2 || $cond3)
  33.         {
  34.             echo "El campo o los campos señalados están correctos";
  35.         }
  36.         else
  37.         {
  38.             echo "El campo señalado o varios de los campos señalados están incorrectos";
  39.         }
  40.         echo "Está seleccionado alguno";
  41.     }
  42.     // no está seleccionado ninguno
  43.     else
  44.     {
  45.      echo "Ningún checkbox marcado";
  46.     }

¿que otra manera puedo usar? La verdad entiendo lo de completo y excluyentes como en el ejemplo de <4, sin embargo en este caso por más que lo intento no logro hacer algo parecido con esos campos condicionados.

Saludos.