Saludos.
Tengo un formulario en el cual valido que ninguno de los controles del mismo vayan a estar vacios cuando se le de al botón enviar.
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Nuevo Cliente</title> <style> input { width: 200px; font-family: Tahoma; font-size: 8pt; } .label { width:50px; } textarea { width: 200px; font-family: Tahoma; font-size: 8pt; } body { font-family: Tahoma; font-size: 8pt; } .error { font-family: Tahoma; font-size: 8pt; color: red; margin-left: 50px; display:none; } </style> <script> function checkForm() { name = document.getElementById("name").value; descripcion = document.getElementById("descripcion").value; comprador = document.getElementById("comprador").value; seccomprador = document.getElementById("seccomprador").value; tercomprador = document.getElementById("tercomprador").value; forcomprador = document.getElementById("forcomprador").value; priident = document.getElementById("priident").value; segident = document.getElementById("segident").value; terident = document.getElementById("terident").value; forident = document.getElementById("forident").value; if (name == "") { hideAllErrors(); document.getElementById("nameError").style.display = "inline"; document.getElementById("name").select(); document.getElementById("name").focus(); return false; } else if (descripcion == "") { hideAllErrors(); document.getElementById("descError").style.display = "inline"; document.getElementById("descripcion").select(); document.getElementById("descripcion").focus(); return false; } else if (comprador == "") { hideAllErrors(); document.getElementById("compError").style.display = "inline"; document.getElementById("comprador").select(); document.getElementById("comprador").focus(); return false; } else if (priident == "") { hideAllErrors(); document.getElementById("priidentError").style.display = "inline"; document.getElementById("priident").select(); document.getElementById("priident").focus(); return false; } else if (seccomprador == "") { hideAllErrors(); document.getElementById("seccompError").style.display = "inline"; document.getElementById("seccomprador").select(); document.getElementById("seccomprador").focus(); return false; } else if (segident == "") { hideAllErrors(); document.getElementById("segidentError").style.display = "inline"; document.getElementById("segident").select(); document.getElementById("segident").focus(); return false; } else if (tercomprador == "") { hideAllErrors(); document.getElementById("tercompError").style.display = "inline"; document.getElementById("tercomprador").select(); document.getElementById("tercomprador").focus(); return false; } else if (terident == "") { hideAllErrors(); document.getElementById("teridentError").style.display = "inline"; document.getElementById("terident").select(); document.getElementById("terident").focus(); return false; } else if (forcomprador == "") { hideAllErrors(); document.getElementById("forcompError").style.display = "inline"; document.getElementById("forcomprador").select(); document.getElementById("forcomprador").focus(); return false; } else if (forident == "") { hideAllErrors(); document.getElementById("foridentError").style.display = "inline"; document.getElementById("forident").select(); document.getElementById("forident").focus(); return false; } return true; document.datos.submit ('add_datos.php') } function hideAllErrors() { document.getElementById("nameError").style.display = "none" document.getElementById("descError").style.display = "none" document.getElementById("compError").style.display = "none" document.getElementById("seccompError").style.display = "none" document.getElementById("tercompError").style.display = "none" document.getElementById("forcompError").style.display = "none" document.getElementById("priidentError").style.display = "none" document.getElementById("segidentError").style.display = "none" document.getElementById("teridentError").style.display = "none" document.getElementById("foridentError").style.display = "none" } </script> </head> <body> <form name="datos" onSubmit="return checkForm();" method= "post" action="add_datos.php"> <span class=label>Código Cliente:</span><input type=text value="" id=name name="co_id"><br> <div class=error id=nameError>Requerido: Código del Cliente<br></div><br> <span class=label>Descripción del Cliente:</span><input type=text value="" id=descripcion name="co_nombre" /><br> <div class=error id=descError>Requerido: Descripción del Cliente<br></div><br> <span class=label>1<sup>er</sup>Comprador:</span><input type=text value="" id=comprador name="comprador1"><br> <div class=error id=compError>Requerido: Nombre del 1<sup>er</sup>Comprador<br></div><br> <span class=label>1<sup>er</sup>No. de Identidad:</span><input type=text value="" id=priident name="identidad1"><br> <div class=error id=priidentError>Requerido: No. de Identidad<br></div><br> <span class=label>2<sup>do</sup>Comprador:</span><input type=text value="" id=seccomprador name="comprador2"><br> <div class=error id=seccompError>Requerido: Nombre del Comprador<br></div><br> <span class=label>2<sup>do</sup>No. de Identidad:</span><input type=text value="" id=segident name="identidad2"><br> <div class=error id=segidentError>Requerido: No. de Identidad<br></div><br> <span class=label>3<sup>er</sup>Comprador:</span><input type=text value="" id=tercomprador name="comprador3"><br> <div class=error id=tercompError>Requerido: Nombre del Comprador<br></div><br> <span class=label>3<sup>er</sup>No. de Identidad:</span><input type=text value="" id=terident name="identidad3"><br> <div class=error id=teridentError>Requerido: 3<sup>er</sup>No. de Identidad<br></div><br> <span class=label>4<sup>to</sup>Comprador:</span><input type=text value="" id=forcomprador name="comprador4"><br> <div class=error id=forcompError>Requerido: 4<sup>to</sup>Nombre del Comprador<br></div><br> <span class=label>4<sup>to</sup>No. de Identidad:</span><input type=text value="" id=forident name="identidad4"><br> <div class=error id=foridentError>Requerido: 4<sup>to</sup>No. de Identidad<br></div><br> <input type=submit value=Enviar style="margin-left: 50px"> </form> </body> </html>
Esto funciona perfectamente bien. El problema está que cuando le doy al botón enviar, si se fijan tengo puesto en el atributo action una página php con el siguiente código:
Código PHP:
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar')
{
// comprobamos que el formulario no envie campos vacios
if(!empty($_POST['co_id']) && $_POST['co_nombre'] &&
$_POST['comprador1'] && $_POST['identidad1'] && $_POST['comprador2'] && $_POST['identidad2'] &&$_POST['comprador3'] && $_POST['identidad3'] && $_POST['comprador4'] && $_POST['identidad4'])
{
$busqueda = mysql_query("SELECT co_id FROM comercios WHERE co_id='$co_id'");
if(mysql_num_rows($busqueda)>0)
{ // ó " !=0 " como se quiera ver
// Inciso a:
echo "Está empresa ya existe. Por favor intente con otro cliente.<br>";
echo "<a href=\"javascript:history.back()\">Regresar</a>";
}
else
{
// Inciso b:
// creamos la variable y le asignamos el valor a insertar
// Paso 1: Recibimos el formulario:
$co_id = $_POST['co_id'];
$co_nombre = $_POST['co_nombre'];
$comprador1 = $_POST['comprador1'];
$identidad1 = $_POST['identidad1'];
$comprador2 = $_POST['comprador2'];
$identidad2 = $_POST['identidad2'];
$comprador3 = $_POST['comprador3'];
$identidad3 = $_POST['identidad3'];
$comprador4 = $_POST['comprador4'];
$identidad4 = $_POST['identidad4'];
// insertamos registros a la base de datos
$sqlInserDat = mysql_query("INSERT INTO comercios (co_id, co_nombre, comprador1, identidad1, comprador2, identidad2, comprador3, identidad3, comprador4, identidad4)
VALUES ('$co_id', '$co_nombre', '$comprador1', '$identidad1', '$comprador2', '$identidad2', '$comprador3', '$identidad3', '$comprador4', '$identidad4')", $db_link)
or die(mysql_error());
// enviamos un mensaje de exito
echo "Los datos fueron guardados correctamente";
}
}else{
// si el formulario viene vacio
//enviamos un mensaje de error
echo "El formulario tiene campos vacios, debe llenar el formulario.<br>";
echo "<a href=\"javascript:history.back()\">Regresar</a>";
}
}
?>
Realmente no sé porqué sucede eso. Si es que debo agregar algún código javascrip a la página php o si debo quitar la validacíon de la página php.
Si quito el código javascript del formulario html, es decir si quito la validación del lado del cliente, todo funciona perfectamente bien.
No sé por qué.
De veras agradecería cualquier ayuda o solución al tema.
Muchas Gracias.