Validar Textos

Cuando un Usuario envia un formulario con datos es probable que omita
llenar alguno de los campos de texto.
Para avisarle de esta situación hay varias maneras, una es con Java Script, (ver ejemplos en tabla), la otra es con PHP.
Los Scripts de PHP no se pueden colocar en cualquier parte del documento HTML
pues aunque esten escritos correctamente , pueden no seguir una secuencia lógica con el resto de los elementos del HTML

Código de Validación incorrecto - Ejemplo 1

<!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=utf-8" /> <title>Formulario 1</title> </head> <?php $nombre = $_POST['nombre']; $apellido1 = $_POST['apellido1']; $apellido2 =$_POST['apellido2']; $x =$_POST['numero']; if (($nombre != NULL) and ($apellido1 != NULL) and ($apellido2 != NULL)) {//Estamos validando que los tres textos esten con informacion echo "<br>".$nombre. " ".$apellido1. "</br>";//arreglo para aparecer separado y abajo de la linea anterior $nombreCompleto = $nombre." ".$apellido1; $nombreCompleto .= " ".$apellido2; echo "<p>Nombre: ".$nombreCompleto."</p>"; // Usamos el operador ternario '?'. Devuelve: "El número es menor de 86" echo "<p>El número es ".(($x >= 86) ? "mayor o igual de 86" : "menor de 86" )."</p>"; } else if(($nombre == "") or ($apellido1 == "") or ($apellido2 == "")) {//estamos diciendo que cualquiera de ellos que este vacio echo "<CENTER>"; echo "<br>";echo "<br/><h2>Por favor colocá tu nombre o tu Apellido 1° o tu Apellido 2°<h2> <br/><h2>No se puedeseguir sin esos datos.<h2>"; echo "</CENTER>"; exit; } else if (($nombre == "") and ($apellido1 == "") and ($apellido2 == "")) { echo "<CENTER>"; echo "<br>";echo "<br/><h2>Por favor colocá tu Nombre y tu tu Apellido 1° y tu Apellido 2°<h2> <br/><h2>No se puede seguir sin esos datos<h2>"; echo "</CENTER>"; exit; } /*En este caso el código PHP está antes del body */ ?> <body> <form method="post" action="validartextos.php"> Escriba Nombre completo: <input type="text" name="nombre" value="" size=10> <br> Escriba Apellido de Padre:<input type="text" name="apellido1" value="" size=10> <br> Escriba Apellido de Madre:<input type="text" name="apellido2" value="" size=10> <br> Escriba un número: <input type="text" name="numero" value="" size=10> <br /><br /> <input type="submit" name="sub" value="Enviar!"> </form> </body> </html>
Aquí termina el código de Ejemplo 1

Bajar este código y ver como NO funciona !!


Por qué incorrecto?:
Porque el Script PHP pone un condicional, (} else if(($nombre == "") or ($apellido1 == "") or ($apellido2 == "")) {))
que si los textos tienen valor vacio (++ "") la página no se inicie (exit)
y cuando la página se carga , por lógica los textos estan vacios.

Código de Validación con inconvenientes - Ejemplo 2

<!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=utf-8" /> <title>Formulario 1</title> </head> <body> <form method="post" action="validartextosuno.php"> Escriba Nombre completo: <input type="text" name="nombre" value="" size=10> <br> Escriba Apellido de Padre:<input type="text" name="apellido1" value="" size=10> <br> Escriba Apellido de Madre:<input type="text" name="apellido2" value="" size=10> <br> Escriba un número: <input type="text" name="numero" value="" size=10> <br /><br /> <input type="submit" name="sub" value="Enviar!"> </form> <?php $nombre = $_POST['nombre']; $apellido1 = $_POST['apellido1']; $apellido2 =$_POST['apellido2']; $x =$_POST['numero']; if (($nombre != NULL) and ($apellido1 != NULL) and ($apellido2 != NULL)) {//Estamos validando que los tres textos esten con informacion echo "<br>".$nombre. " ".$apellido1. "</br>";//arreglo para aparecer separado y abajo de la linea anterior $nombreCompleto = $nombre." ".$apellido1; $nombreCompleto .= " ".$apellido2; echo "<p>Nombre: ".$nombreCompleto."</p>"; // Usamos el operador ternario '?'. Devuelve: "El número es menor de 86" echo "<p>El número es ".(($x >= 86) ? "mayor o igual de 86" : "menor de 86" )."</p>"; } else if(($nombre == "") or ($apellido1 == "") or ($apellido2 == "")) {//estamos diciendo que cualquiera de ellos que este vacio echo "<CENTER>"; echo "<br>";echo "<br/><h2>Por favor colocá tu nombre o tu Apellido 1° o tu Apellido 2°<h2> <br/><h2>No se puedeseguir sin esos datos.<h2>"; echo "</CENTER>"; exit; } else if (($nombre == "") and ($apellido1 == "") and ($apellido2 == "")) { echo "<CENTER>"; echo "<br>";echo "<br/><h2>Por favor colocá tu Nombre y tu tu Apellido 1° y tu Apellido 2°<h2> <br/><h2>No se puede seguir sin esos datos<h2>"; echo "</CENTER>"; exit; } /*En este caso el código PHP está despues del formulario. */ ?></body></html>
Aquí termina el código de Ejemplo 2

Bajar este código y ver como funciona !!


Por qué inconveniente nuevamente?:
Porque al arrancar la página aparece el cartel de "Por favor colocá tu nombre o tu Apellido......", es poco estetico, imperativo y estamos 'abriendo el paragua antes que llueva..'

Y la solución..?

Volver y ver el próximo Link de la tabla

33