Validar Textos
Cuando un Usuario envía 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 estén 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))
{
echo "<br>".$nombre." ".$apellido1."</br>";
$nombreCompleto = $nombre." ".$apellido1;
$nombreCompleto .= " ".$apellido2;
echo "<p>Nombre: ".$nombreCompleto."</p>";
echo "<p>El número es ".($x >= 86) ? "mayor o igual de 86" : "menor de 86" )."</p>";
} else if(($nombre == "") or ($apellido1 == "") or ($apellido2 == "")) {
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;
}
?>
<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
¿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 están vacíos.
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))
{
echo "<br>".$nombre." ".$apellido1."</br>";
$nombreCompleto = $nombre." ".$apellido1;
$nombreCompleto .= " ".$apellido2;
echo "<p>Nombre: ".$nombreCompleto."</p>";
echo "<p>El número es ".($x >= 86) ? "mayor o igual de 86" : "menor de 86" )."</p>";
} else if(($nombre == "") or ($apellido1 == "") or ($apellido2 == "")) {
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;
}
?></body></html>
Aquí termina el código de Ejemplo 2
¿Por qué inconveniente nuevamente?
Porque al arrancar la página aparece el cartel de "Por favor colocá tu nombre o tu Apellido......", es poco estético, imperativo y estamos 'abriendo el paraguas antes que llueva...'
¿Y la solución...?