Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/07/2011, 12:45
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 de nuevo, gracias por la ayuda.

Finalmente lo he resuelto utilizando las recomendaciones que me dais con empty y con isset:

Código PHP:
Ver original
  1. <?php              
  2.             if(isset($_POST['enviar']))//Si pulso enviar
  3.             {
  4.                 // Si importe diario no está vacio y existe check2                 
  5.                 if(!empty($_POST['importe-diario']) && isset($_POST['check2']))
  6.                     {
  7.                         // Si check1 o check2 no están vacios y nombre no está vacio o Incompleto
  8.                         if( $_POST['check1'] != "" or $_POST['check2'] != "" && $_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto")                
  9.                     // Se envia
  10.                     {      
  11.                     //------------------ Aquí preparo el envio
  12.                     $para  = '[email protected]' . ',';                  
  13.                     // asunto
  14.                     $asunto = 'Formulario de contacto - Salud';
  15.                     // mensaje
  16.                     $mensaje = "Nombre: " .$_POST['nombre']. "\n";                                                         
  17.                         //$mensaje .= "Coberturas: ";
  18.                         for($i=1; $i<=$_POST['cantidad']; $i++)
  19.                         {
  20.                         $key= "check".$i;
  21.                         if(!empty($_POST[$key]))
  22.                         //echo $_POST[$key]."\n";
  23.                         {$mensaje .= "Coberturas: $_POST[$key]. \n";}
  24.                         }
  25.                             // Si check2 existe
  26.                             if (isset($_POST['check2']))                           
  27.                             {    
  28.                                 // Si existe importe diario y el campo no está vacio o indica Incompleto
  29.                                 if ($_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")                            
  30.                                 {
  31.                                 $mensaje .= "Importe diario de Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente. : " .$_POST['importe-diario']. "\n";      
  32.                                 }
  33.                             }                              
  34.                                 //----------------------------
  35.                     $enviando_datos=mail($para, $asunto, $mensaje, $cabeceras);
  36.                     if($enviando_datos==true)
  37.                     {
  38.                     header("Location: http://web.es/respuesta.php");
  39.                     }
  40.                     else
  41.                     {
  42.                     //El Mensaje no se pudo enviar
  43.                     }      
  44.                     //------------------ Aquí cierro el envio de email                                     
  45.                 }}
  46.                     // Si check2 está vacio                                
  47.                     elseif(empty($_POST['check2']))
  48.                     {
  49.                         // Si check1 o check2 no están vacios y nombre no está vacio o Incompleto
  50.                         if( $_POST['check1'] != "" or $_POST['check2'] != "" && $_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto")                        
  51.                     // Se envia
  52.                     {      
  53.                     //------------------ Aquí preparo el envio
  54.                     $para  = '[email protected]' . ',';                  
  55.                     // asunto
  56.                     $asunto = 'Formulario de contacto - Salud';
  57.                     // mensaje
  58.                     $mensaje = "Nombre: " .$_POST['nombre']. "\n";                                                         
  59.                         //$mensaje .= "Coberturas: ";
  60.                         for($i=1; $i<=$_POST['cantidad']; $i++)
  61.                         {
  62.                         $key= "check".$i;
  63.                         if(!empty($_POST[$key]))
  64.                         //echo $_POST[$key]."\n";
  65.                         {$mensaje .= "Coberturas: $_POST[$key]. \n";}
  66.                         }
  67.                             // Si check2 existe
  68.                             if (isset($_POST['check2']))                           
  69.                             {    
  70.                                 // Si existe importe diario y el campo no está vacio o indica Incompleto
  71.                                 if ($_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")                            
  72.                                 {
  73.                                 $mensaje .= "Importe diario de Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente. : " .$_POST['importe-diario']. "\n";      
  74.                                 }
  75.                             }                              
  76.                                 //----------------------------
  77.                     $enviando_datos=mail($para, $asunto, $mensaje, $cabeceras);
  78.                     if($enviando_datos==true)
  79.                     {
  80.                     header("Location: http://web.es/respuesta.php");
  81.                     }
  82.                     else
  83.                     {
  84.                     //El Mensaje no se pudo enviar
  85.                     }      
  86.                     //------------------ Aquí cierro el envio de email                                     
  87.                 }}                                             
  88.             // Cierro el envio total
  89.             }          
  90. ?>

Resumiendo:

Código PHP:
Ver original
  1. // Si importe diario no está vacio y existe check2                 
  2. if(!empty($_POST['importe-diario']) && isset($_POST['check2']))
  3. {
  4. //acción
  5. }
  6. //o
  7. // Si check2 está vacio                                
  8. elseif(empty($_POST['check2']))
  9. {
  10. //acción
  11. }

Hasta ahí bien, ¿pero y si quiero añadir otro nuevo check con otro campo de texto condicionado?

He probado con este ejemplo pero no me sirve:

Código PHP:
Ver original
  1. // Si importe diario no está vacio y existe check2                 
  2. if(!empty($_POST['importe-diario']) && isset($_POST['check2']))
  3. if(!empty($_POST['importe-diari3o']) && isset($_POST['check3']))
  4. {
  5. //acción
  6. }
  7. //o
  8. // Si check2 está vacio                                
  9. if(empty($_POST['check2']))
  10. if(empty($_POST['check3']))
  11. {
  12. //acción
  13. }

¿Podría seguir la misma fórmula o tengo que cambiar también la anterior?