Exemples formulaires
Pour chaque type d'entrée, nous allons découvrir comment récupérer les données, les traiter et conserver les états.
Astuce
Avant PHP 7, on retrouvait régulièrement cette syntaxe :
isset — Détermine si une variable est déclarée et est différente de null
Désormais, nous pouvons utiliser l'opérateur de coalescence.
L'opérateur de coalescence nulle (??) fonctionne ainsi :
- Si
$_POST["voyageType"]existe ET n'est pas null , alors$voyageTypeprend sa valeur - Sinon,
$voyageTypeprend la valeur '' (chaîne vide).
Input
Input de type text, email, number... En fonction du type, il faudra également ajouter d'autres validations.
Bouton radio
⚠ Warning: : Il est impératif de vérifier que les choix sont bien ceux attendus. En effet, le serveur pourrait recevoir des données via une autre source que le formulaire attendu.
Liste déroulante
⚠ Warning: : Il est impératif de vérifier que les choix sont bien ceux attendus. En effet, le serveur pourrait recevoir des données via une autre source que le formulaire attendu.
Cases à cocher
Warning: : Il est impératif de vérifier que les choix sont bien ceux attendus. En effet, le serveur pourrait recevoir des données via une autre source que le formulaire attendu.
Explication portion code
Référence officielle >>Comparaison directe de tableaux
array_intersect($array1, $array2)retourne un tableau contenant uniquement les valeurs communes entre $array1 et $array2- Ici, seules les options valides (
$validOptions = ['vol', 'hotel', 'visite']) seront conservées - Les valeurs invalides sont automatiquement supprimées
Exemple :
<?php
$_POST['options'] = ['vol', 'hotel', 'invalid', 'test'];
$validOptions = ['vol', 'hotel', 'visite'];
array_intersect() compare chaque élément de $_POST['options'] avec $validOptions et garde seulement les valeurs communes
Formulaire complet
A vous de jouer, en tenant compte des modèles, créez un formulaire complet. Attention, prévoyez un tableau pour contenir tous les messages d'erreurs.
Une fois votre formulaire fonctionnel,
- ajoutez un champ Prénom qui est obligatoire à l'encodage
- ajouter un champ Age qui est obligatoire à l 'encodage et qui ne peut contenir des nombres inférieur à 18
soluce
Cette solution proposée repose sur une série de conditions indépendantes pour chaque champ du formulaire. Chaque champ possède son propre bloc de validation, ce qui peut rendre le code très verbeux et difficile à maintenir lorsque le nombre de champs augmente.
A votre avis, comment pourriez-vous optimiser cette solution ?
Techniques filtres
L'exemple présenté repose sur des validations centralisées dans un tableau. Cette gestion des règles centralisée facilite l’ajout, la modification ou la suppression de règles sans duplication de code. Cette technique est intéressante lorsque le formulaire est complexe.
TODO: : séparer le code dans différents fichiers : 1 fichier pour les fonctions, 1 fichier pour le traitement de ce formulaire et 1 fichier pour la vue html. Lorsque vous aurez vu les class, il est également possible d'utiliser une logique comparable et des objets.