Hola amigo, verifica si esto ya te funciona un saludo
Código PHP:
Ver original<?php
/* Creamos un metodo que se realiza en caso de que se cumpla las condiciones:
* Puede ser el envio del formulario, por ejemplo.
*/
$cond1 = FALSE;
$cond2 = FALSE;
$cond3 = FALSE;
$cond4 = FALSE;
$contCondiciones=0;
$contCheckBox=0;
function enviarForm() {
echo "Se ha mandado el formulario";
}
//Primero verifico si se ha precionado el boton enviar
if (isset($_POST['submit'])) {
if (!empty($_POST['importe-rotura']) && $_POST['importe-rotura'] != "Incompleto") { $cond1 = TRUE;
}
if (!empty($_POST['importe-daños']) && $_POST['importe-daños'] != "Incompleto") { $cond2 = TRUE;
}
if (!empty($_POST['importe-derrumbe']) && $_POST['importe-derrumbe'] != "Incompleto") { $cond3 = TRUE;
}
if (!empty($_POST['importe-todo-riesgo']) && $_POST['importe-todo-riesgo'] != "Incompleto") { $cond4 = TRUE;
}
//Verifico la primer condicion (check1 - check4)
for ($i = 1; $i <= 4; $i++) {
if (isset($_POST['check' . $i])) $contCheckBox++;
}
if ($cond1) {
$contCondiciones++;
}
if ($cond2) {
$contCondiciones++;
}
if ($cond3) {
$contCondiciones++;
}
if ($cond4) {
$contCondiciones++;
}
//Validamos todo
if ($contCheckBox >= 1 && $contCondiciones == 4) {
//Si se cumple la condicion envio el form
enviarForm();
} else {
/* Si alguno de los checkbox no esta marcado, paso a validar cual es y mostrar
* cierto mensaje de error.
* hay muchas formas que se me ocurre, por ejemplo:
*/
for ($i = 1; $i <= 4; $i++) {
//Valido los checkbox
if (!isset($_POST['check' . $i])) echo "<p> El checkBox " . $i . " no se selecciono </p>";
}
if (!$cond1) {
echo "<p> Error en la condicion1</p>";
}
if (!$cond2) {
echo "<p> Error en la condicion2</p>";
}
if (!$cond3) {
echo "<p> Error en la condicion3</p>";
}
if (!$cond4) {
echo "<p> Error en la condicion4</p>";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
// put your code here
?>
<form action="" method="post">
<p><input type="checkbox" name="check1" value="" /> check1
<input type="text" name="importe-rotura" value="Incompleto"/></p>
<p><input type="checkbox" name="check2" value="" /> check2
<input type="text" name="importe-daños" value="Incompleto"/></p>
<p><input type="checkbox" name="check3" value="" /> check3
<input type="text" name="importe-derrumbe" value="Incompleto"/></p>
<p><input type="checkbox" name="check4" value="" /> check4
<input type="text" name="importe-todo-riesgo" value="Incompleto"/></p>
<input type="submit" name="submit">
</form>
</body>
</html>
P.d: Ando un poco a prisas no me da tiempo de explicarte el codigo en este momento, al ratito nos vemos. Saludos.
___________________________-
Bueno entonces aqui estoy xD.
De la linea 19 a la 30, se válida las condiciones de que los textfield no esten vacios y el valor interno sea diferente de "Incompleto"
>>>
Yo te recomiendo hacer un !strcasecmp($_POST['campo'], "Incompleto"); para no hacer distincion entre mayusculas y minusculas
De las lineas 32 a la 36 vemos un ciclo for, con esto nos ahorramos un pedazo de código.
En el caso de la 38 a la 49, no se puede hacer un ciclo para asignar el valor del indice concatenado al nombre de variable ($cond.$i), asi que las condicionales deben ser de ésta forma.
En la linea 52 se cumple la condicion
Si check 1, check 2, check3 y check4 estan marcados y a la vez se cumple si check1 o check2 o check3 o check4, esto porque si alguno de los checks estan marcados el contador tendrá un valor de 1. Y si todos los contadores es igual a 4, tambien se cumple está condición.
bueno es todo un saludo.