Hola de nuevo vgonga, la verdad es que he probado tal cual te puse poniendo inComPLeTo y me va bien, hasta ahora lo dejo como dos únicas opciones la de no estar vacío y no dejar el aviso automático "Incompleto". Esa opción de que nadie tampoco lo envée como inComPLeTo no la he tenido en cuenta por ahora, es como si alguien escribe inConVenio o algo asi y es aceptado por el cliente como envio del usuario, aun asi lo comentaré.
Gracias de nuevo
Buenas New.
En realidad este fragmento lo he sacado de otro formulario real que es mucho más grande y tiene dentro esos dos campos condicionados y que a la vez existe la posibilidad de no ser marcados... por eso todas estas pruebas.
Este mismo ejemplo lo tengo con más casillas pero solo me estoy basando como prueba en estos dos checkbox condicionados, este es el código:
Para enviar todo al correo:
Código PHP:
Ver original<?php
if(isset($_POST['enviar']))//Si pulso enviar {
if( isset($_POST['check2']) && isset($_POST['check3']) && !empty($_POST['importe_diario']) || $_POST['importe_diario'] !="Incompleto" && !empty($_POST['importe_diario3']) || $_POST['importe_diario3'] != "Incompleto" ) $caso = 1; // Si check2 y check3 están marcados e importe diario e importe diario3 no están vacios o Incompleto.
else if( isset($_POST['check2']) && !empty($_POST['importe_diario']) || $_POST['importe_diario'] != "Incompleto") $caso = 2; // Si check2 está marcado e importe diario no está vacio o "Incompleto"
else if ( isset($_POST['check3']) && !empty($_POST['importe_diario3']) || $_POST['importe_diario3'] != "Incompleto" ) $caso = 3;// Si check3 está marcado e importe diario3 no está vacio o "Incompleto"
else if( empty($_POST['check2']) && empty($_POST['check3'] )) $caso = 4;// Si check2 y check 3 están vacios
switch($caso){
case 1://código primer condicion
echo "Código primera condición";
break;
case 2://codigo segunda condicion
echo "Código segunda condición";
break;
case 3://código tercera condicion
echo "Código tercera condición";
break;
case 4://codigo cuarta condicion
echo "Código cuarta condición";
break;
}
// Cierro el envio total
}
?>
Html del body y formulario:
Código HTML:
<h2>Su presupuesto</h2>
<?php
function incompleto($valor_input)
{
if(isset($valor_input) && $valor_input == "" || $valor_input == "Incompleto")
{echo "value=\"Incompleto\"";
echo ' class="aviso-formulario"';}
else {echo "value=\"$valor_input\"";}
}
?>
<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=""';}
}
?>
/><br />
<input type="checkbox" value="Asistencia 3" name="check3" <?php
if (isset($_POST['check3']) && $_POST['check3'] =="Asistencia 3") { echo " checked='checked'"; }?> />
Asistencia 3. introducir importe 3
<input type="text" id="importe-diario3" name="importe-diario3"<?php
if($_POST['enviar'])// Preparo para hacer el envio
{
// marcado
if (isset($_POST['check3'])) // Si existe check2
{
// Si existe importe diario y el campo está vacio o indica Incompleto
if (isset($_POST['importe-diario3']) && $_POST['importe-diario3'] == "" || $_POST['importe-diario3'] == "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-diario3']) && $_POST['importe-diario3'] != "" && $_POST['importe-diario3'] != "Incompleto")
// Muestro o mantengo el valor actual de prestación diaria
{echo "value=".$_POST['importe-diario3']."";}// 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['check3']) == "" && $_POST['importe-diario3'] != "")
{echo 'value=""';}
}
?>
/>
</fieldset>
<input type="hidden" name="cantidad" value="3">
<input type="submit" value="Enviar" name="enviar" />
</form>
y luego la validación antes de enviar:
Código PHP:
Ver original<?php
if(isset($_POST['enviar'])) {
if($_POST['nombre'] == "" or $_POST['nombre'] == "Incompleto")
{echo "<p class=\"aviso-formulario\">Faltan campos por completar</p>";}
if($_POST['check1'] == "" && $_POST['check2'] == "")
{echo "<p class=\"aviso-formulario\">Indique alguna cobertura</p>";}
if ($_POST['check2'] != "")
//if (isset($_POST['check4']) && $_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
{
// Si existe prestacion diaria y el campo está vacio o indica Incompleto
if ($_POST['importe-diario'] == "" || $_POST['importe-diario'] == "Incompleto")
//if (isset($_POST['importe-diario']) && $_POST['importe-diario'] != "" || $_POST['importe-diario'] != "Incompleto")
{
{echo "<p class=\"aviso-formulario\">Indique el importe diario</p>";}
}
}
if ($_POST['check3'] != "")
//if (isset($_POST['check4']) && $_POST['importe-diario'] != "" && $_POST['importe-diario'] != "Incompleto")
{
// Si existe prestacion diaria y el campo está vacio o indica Incompleto
if ($_POST['importe-diario3'] == "" || $_POST['importe-diario3'] == "Incompleto")
//if (isset($_POST['importe-diario']) && $_POST['importe-diario'] != "" || $_POST['importe-diario'] != "Incompleto")
{
{echo "<p class=\"aviso-formulario\">Indique el importe diario 3</p>";}
}
}
}
?>
Saludos.