Ver Mensaje Individual
  #11 (permalink)  
Antiguo 27/07/2011, 20:05
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 vgonga1986.

He seguido tu ejemplo y creo que lo he entendido, he cambiado algunas cosas y con esto me sale perfectamente para seguir con lo demás:

Código PHP:
Ver original
  1. <?php              
  2.             if(isset($_POST['enviar']))//Si pulso enviar
  3.             {
  4.             //Primero hacemos un pequeño cambio para que los ifs de después no queden tan largos:
  5. $cond1 = false;
  6. $cond2 = false;
  7. /*if (!empty($_POST['importe-diario'])) AND (strtolower($_POST['importe-diario'] != "incompleto"))) {
  8.    $cond1 = true;
  9. }*/
  10. if (!empty ($_POST['importe-diario']) && ($_POST['importe-diario'] != "Incompleto"))
  11. {
  12.     $cond1 = true;
  13.     }
  14. if (!empty ($_POST['importe-diario3']) && ($_POST['importe-diario3'] != "Incompleto"))
  15. {
  16.     $cond2 = true;
  17.     }
  18. // cond1 quedará true si importe-diario se rellenó con algún valor diferente de Incompleto y lo mismo con cond2 e importe-diario3.
  19.  
  20. if (isset($_POST['check2'])) {
  21.    if (isset($_POST['check3'])) {
  22.       // check2 y check3
  23.       if ($cond1 && $cond2) {
  24.          echo "CORRECTO: check2 marcado e importe-diario relleno. check3 marcado e importe-diario3 relleno.";
  25.       } else {
  26.          echo "ERROR: se marcó algún check y no se rellenó su campo.";
  27.       }
  28.    } else {
  29.       // check2 y no check3
  30.       if ($cond1) {
  31.          echo "CORRECTO: check2 marcado e importe-diario relleno.";
  32.       } else {
  33.          echo "ERROR: check2 marcado e importe-diario NO relleno.";
  34.       }
  35.    }
  36. } else {
  37.    if (isset($_POST['check3'])) {
  38.       // no check2 y check3
  39.       if ($cond2) {
  40.          echo "CORRECTO: check3 marcado e importe-diario3 relleno.";
  41.       } else {
  42.          echo "ERROR: check3 marcado e importe-diario3 NO relleno.";
  43.       }
  44.    } else {
  45.       // no check2 y no check3
  46.       echo "CORRECTO: check2 y check3 no marcados.";
  47.    }
  48. }  
  49.             }          
  50. ?>

Muchas gracias




Hola de nuevo New, esa opción con un switch la intenté hace varios días pero no de la misma manera y me daba error, ahora he seguido la tuya, la entiendo perfectamente ( o eso creo) sin embargo algo me falla.

He probado asi:

Código PHP:
Ver original
  1. <?php
  2. $caso = 1; // Si check2 y check3 están marcados e importe diario e importe diario3 no están vacios o Incompleto.
  3. if( isset($_POST['check2']) && isset($_POST['check3']) && !empty($_POST['importe_diario']) || $_POST['importe_diario'] !=           "Incompleto" && !empty($_POST['importe_diario3']) || $_POST['importe_diario3'] != "Incompleto" )
  4. $caso = 2; // Si check2 está marcado e importe diario no está vacio o "Incompleto"
  5. else if( isset($_POST['check2']) && !empty($_POST['importe_diario']) || $_POST['importe_diario'] != "Incompleto")
  6. $caso = 3;// Si check3 está marcado e importe diario3 no está vacio o "Incompleto"   
  7. else if ( isset($_POST['check3']) && !empty($_POST['importe_diario3']) || $_POST['importe_diario3'] != "Incompleto" )
  8. $caso = 4;// Si check2 y check 3 están vacios        
  9. else if( empty($_POST['check2']) && empty($_POST['check3'] ))
  10.     if(isset($_POST['enviar']))//Si pulso enviar
  11.             {              
  12.             switch($caso){
  13.             case 1://código primer condicion
  14.             echo "Código primera condición";
  15.             break;
  16.             case 2://codigo segunda condicion
  17.             echo "Código segunda condición";
  18.             break;
  19.             case 3://código tercera condicion
  20.             echo "Código tercera condición";
  21.             break;
  22.             case 4://codigo cuarta condicion
  23.             echo "Código cuarta condición";
  24.             break;     
  25.             }      
  26.             // Cierro el envio total
  27.     }      
  28. ?>

Pero no lo reconoce, también he probado introduciendo los cacos y variables después de pulsar el botón enviar y tampoco da resultado.

¿Me falta algún paso siguiendo tu ejemplo?

Gracias a los dos por vuestra ayuda y explicaciones.

Última edición por kahlito; 05/08/2011 a las 19:21