Formulaires PHP - Champs obligatoires
Ce chapitre montre comment rendre les champs de saisie obligatoires et créer des messages d'erreur si nécessaire.
PHP - Champs obligatoires
Dans le tableau des règles de validation de la page précédente, nous voyons que les champs "Nom", "E-mail" et "Sexe" sont obligatoires. Ces champs ne peuvent pas être vides et doivent être renseignés dans le formulaire HTML.
Field | Validation Rules |
---|---|
Name | Required. + Must only contain letters and whitespace |
Required. + Must contain a valid email address (with @ and .) | |
Website | Optional. If present, it must contain a valid URL |
Comment | Optional. Multi-line input field (textarea) |
Gender | Required. Must select one |
Dans le chapitre précédent, tous les champs de saisie étaient facultatifs.
Dans le code suivant, nous avons ajouté de nouvelles variables : $nameErr, $emailErr, $genderErr et $websiteErr. Ces variables d'erreur contiendront des messages d'erreur pour les champs obligatoires. Nous avons également ajouté une if else
instruction pour chaque variable $_POST. Ceci vérifie si la variable $_POST est vide (avec la empty()
fonction PHP). S'il est vide, un message d'erreur est stocké dans les différentes variables d'erreur, et s'il n'est pas vide, il envoie les données d'entrée utilisateur via la test_input()
fonction :
<?php
// define variables and set to empty values
$nameErr = $emailErr
= $genderErr = $websiteErr = "";
$name = $email = $gender = $comment =
$website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["email"]))
{
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}
if (empty($_POST["website"]))
{
$website = "";
} else {
$website = test_input($_POST["website"]);
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if
(empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else
{
$gender = test_input($_POST["gender"]);
}
}
?>
PHP - Afficher les messages d'erreur
Ensuite dans le formulaire HTML, on ajoute un petit script après chaque champ obligatoire, qui génère le bon message d'erreur si besoin (c'est-à-dire si l'utilisateur essaie de soumettre le formulaire sans remplir les champs obligatoires) :
Exemple
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
L'étape suivante consiste à valider les données d'entrée, c'est-à-dire « Le champ Nom contient-il uniquement des lettres et des espaces ? » et « Le champ E-mail contient-il une syntaxe d'adresse e-mail valide ? », et s'il est rempli, " Le champ Site Web contient-il une URL valide ?".