En este capítulo presentaremos cómo configurar los campos de formulario requeridos y los mensajes de error.
En el capítulo anterior introdujimos las reglas de validación para la tabla. Podemos ver que los campos "Nombre", "Correo electrónico" y "Sexo" son obligatorios y cada campo no puede estar vacío.
Campo | Reglas de validación |
---|---|
nombre | Requerido. + solo puede contener letras y espacios |
Correo electrónico | Requerido. + Debe contener una dirección de correo electrónico válida (contiene "@" y ".") |
URL | Opcional. Si está presente, debe contener una URL válida. |
Observación | Opcional. Campos multilínea (campos de texto). |
género | Requerido. Requerido para seleccionar uno. |
Como en capítulos anteriores, todos los campos de entrada son opcionales.
En el siguiente código hemos agregado algunas variables nuevas: $nameErr, $emailErr, $genderErr y $websiteErr. Estas variables de error se mostrarán en los campos obligatorios. También agregamos una declaración if else para cada variable $_POST. Estas declaraciones verificarán si la variable $_POST está vacía (usando la función vacía() de PHP). Si está vacío se mostrará el mensaje de error correspondiente. Si no está vacío, los datos se pasarán a la función test_input():
<?php// Defina variables y configúrelas con valores vacíos de forma predeterminada $nameErr = $emailErr = $genderErr = $websiteErr = "";$name = $email = $gender = $comment = $website = ""; if ($_SERVER ["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "El nombre es obligatorio."; } else { $nombre = test_input($_POST["nombre"]); } if (empty($_POST["email"])) { $emailErr = "Se requiere correo electrónico." } else { $email = test_input ( $_POST["correo electrónico"]); } if (empty($_POST["sitio web"])) { $sitio web = ""; else { $sitio web = test_input($_POST["sitio web"]); } if (empty($_POST["comentario"])) { $comentario = "" } else { $comentario = test_input($_POST["comentario"]); if (empty($_POST["género"])) { $genderErr = "Se requiere género."; else { $género = test_input($_POST["género"]); }}?>
En el siguiente formulario de ejemplo HTML, hemos agregado algunos scripts a cada campo. Cada script mostrará un mensaje de error cuando la información se ingrese incorrectamente. (Si el usuario envía el formulario sin completar la información, se generará un mensaje de error):
<form método="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> Nombre: <input type="text" name="nombre"> <span>* <? php echo $nameErr;?></span> <br><br> Correo electrónico: <input type="text" name="email"> <span>* <?php echo $emailErr;?></span > <br><br> Sitio web: <input type="text" name="sitio web"> <span><?php echo $websiteErr;?></span> <br><br> Observaciones: <textarea name=" comentario" filas="5" cols="40"></textarea> <br><br> Género: <input type="radio" name="gender" value="female">Mujer<input type="radio "nombre="género" value="male">Hombre<span>* <?php echo $genderErr;?></span> <br><br> <input type="enviar" nombre="enviar" valor="Enviar"> </ formulario>