Hola.
Si tengo este formulario donde tengo un checkbox (en este caso checkbox2 por ejemplo) y a su vez tiene un campo de texto que hay que completar si el checbox se marca, ¿como puedo evitar que no se haga el envio?
El formulario ejemplo es este:
Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<fieldset>
<legend>Datos personales</legend>
<!-- TEXT -->
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" <?php incompleto($_POST['nombre']);?> /><br />
<label for="coberturas">Coberturas (Seleccione al menos una):</label><br />
<br />
<input type="checkbox" value="Asistencia complementaria familiar con Asistencia dental" name="check1" <?php
if (isset($_POST['check1']) && $_POST['check1'] =="Asistencia complementaria familiar con Asistencia dental") { echo " checked='checked'"; }?> />
Asistencia complementaria familiar con Asistencia dental.<br />
<input type="checkbox" value="Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente" name="check2" <?php
if (isset($_POST['check2']) && $_POST['check2'] =="Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente") { echo " checked='checked'"; }?> />
Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente. Introducir importe diario : 6- 60 eur
<input type="text" id="importe-diario" name="importe-diario"<?php
if($_POST['enviar'])// Preparo para hacer el envio
{
// marcado
if (isset($_POST['check2'])) // Si existe check2
{
// Si existe importe diario y el campo está vacio o indica Incompleto
if (isset($_POST['importe-diario']) && $_POST['importe-diario'] == "" || $_POST['importe-diario'] == "Incompleto" )
// Aviso de Incompleto
{echo "value=\"Incompleto\""; echo ' class="aviso-formulario"'; }
// Si existe importe diario y el campo no está vacio y es distinto a Incompleto
elseif (isset($_POST['importe-diario']) && $_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
// Muestro o mantengo el valor actual de prestación diaria
{echo "value=".$_POST['importe-diario']."";}// Corrección de comillas dobles y variable post para imprimir directo
}
// Si no está marcado el check box dejar el campo importe diario como vacio
elseif (isset($_POST['check2']) == "" && $_POST['importe-diario'] != "")
{echo 'value=""';}
}
?>
/>
</fieldset>
<input type="hidden" name="cantidad" value="2">
<input type="submit" value="Enviar" name="enviar" />
</form>
Y aquí intento hacer el envío al correo:
Código PHP:
Ver original<?php
if(isset($_POST['enviar']))//Si pulso enviar {
// Si check 2 no está vacio
// Si check 1 o check 2 no están vacios
if( $_POST['check1'] != "" or $_POST['check2'] != "" && $_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto")
//{echo "Está vacio";}
// Si nombre no están vacio
//if($_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto")
// Se envia
{
//------------------ Aquí preparo el envio
$para = 'emailcualquiera@...' . ',';
$para .= 'emailcualquiera@...' . ',';
// asunto
$asunto = 'Formulario de contacto - Salud';
// mensaje
$mensaje = "Nombre: " .$_POST['nombre']. "\n";
//$mensaje .= "Coberturas: ";
for($i=1; $i<=$_POST['cantidad']; $i++)
{
$key= "check".$i;
//echo $_POST[$key]."\n";
{$mensaje .= "Coberturas: $_POST[$key]. \n";}
}
// Si check2 existe
if (isset($_POST['check2'])) {
// Si existe importe diario y el campo no está vacio o indica Incompleto
if ($_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
{
$mensaje .= "Importe diario de Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente. : " .$_POST['importe-diario']. "\n";
}
}
//----------------------------
$enviando_datos=mail($para, $asunto, $mensaje, $cabeceras); if($enviando_datos==true)
{
header("Location: http://www.webcualquiera.es/respuesta.php"); }
else
{
//El Mensaje no se pudo enviar
}
//------------------ Aquí cierro el envio de email
}
if($_POST['check2'] != "" && $_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto" && $_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
//{echo "Está vacio";}
// Si nombre no están vacio
//if($_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto")
// Se envia
{
//------------------ Aquí preparo el envio
$para = 'emailcualquiera@...' . ',';
$para .= 'emailcualquiera@...' . ',';
// asunto
$asunto = 'Formulario de contacto - Salud';
// mensaje
$mensaje = "Nombre: " .$_POST['nombre']. "\n";
//$mensaje .= "Coberturas: ";
for($i=1; $i<=$_POST['cantidad']; $i++)
{
$key= "check".$i;
//echo $_POST[$key]."\n";
{$mensaje .= "Coberturas: $_POST[$key]. \n";}
}
// Si check2 existe
if (isset($_POST['check2'])) {
// Si existe importe diario y el campo no está vacio o indica Incompleto
if ($_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
{
$mensaje .= "Importe diario de Asistencia complementaria familiar con Hospitalización diaria por enfermedad o accidente. : " .$_POST['importe-diario']. "\n";
}
}
//----------------------------
$enviando_datos=mail($para, $asunto, $mensaje, $cabeceras); if($enviando_datos==true)
{
header("Location: http://webcualquiera.es/respuesta.php"); }
else
{
//El Mensaje no se pudo enviar
}
//------------------ Aquí cierro el envio de email
}
// Cierro el envio total
}
?>
¿Como puedo evitar que se envíe teniendo marcado checkbox2 y vacio el campo $_POST['importe-diario'] o como "Incompleto"? Esta es la condición que le pongo pero no me frena el envio.
Código PHP:
Ver originalif($_POST['check2'] != "" && $_POST['nombre'] != "" && $_POST['nombre'] != "Incompleto" && $_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
Saludos.