PHP Formulaires et saisie utilisateur


Les variables $_GET et $_POST en PHP sont utilisées pour récupérer des informations à partir de formulaires, telles que la saisie de l'utilisateur.


Traitement des formulaires PHP

Une chose importante à noter est que, lors du traitement des formulaires HTML, PHP peut automatiquement rendre les éléments de formulaire d'une page HTML disponibles pour les scripts PHP.

Exemple

L'exemple suivant contient un formulaire HTML avec deux champs de saisie et un bouton de soumission.

Code du fichier form.html :

<html> <head> <meta charset="utf-8"> <title>Tutoriel d'exemple (example.com)</title> </head> <body> <form action="welcome.php" method="post">Nom :<input type="text" name="fname">Âge :<input type="text" name="age"> <input type="submit" value="Submit"> </form> </body> </html>

Lorsque l'utilisateur remplit le formulaire ci-dessus et clique sur le bouton de soumission, les données du formulaire seront envoyées au fichier PHP nommé "welcome.php" :

Code du fichier welcome.php :

Bienvenue<?php echo $_POST["fname"]; ?>!<br>Votre âge est<?php echo $_POST["age"]; ?>ans.

La démo consultée via un navigateur est la suivante :

Nous expliquerons les variables $_GET et $_POST en PHP dans le chapitre suivant.


Récupération des données d'un menu déroulant en PHP

Menu déroulant PHP (sélection unique)

Dans l'exemple suivant, nous définissons trois options pour le menu déroulant. Le formulaire utilise la méthode GET pour obtenir des données. Une valeur vide de l'attribut action signifie l'envoi vers le script actuel. Nous pouvons obtenir la valeur du menu déroulant via l'attribut name de l'élément select :

Code du fichier php_form_select.php :

<?php $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : ''; if($q) { if($q =='EXAMPLE') { echo 'Tutoriel d'exemple<br>http://www.example.com'; } else if($q =='GOOGLE') { echo 'Recherche Google<br>http://www.google.com'; } else if($q =='TAOBAO') { echo 'Taobao<br>http://www.taobao.com'; } } else { ?>
<form action="" method="get"> <select name="q"> <option value="">Choisissez un site :</option> <option value="EXAMPLE">Exemple</option> <option value="GOOGLE">Google</option> <option value="TAOBAO">Taobao</option> </select> <input type="submit" value="Envoyer"> </le formulaire>
<?php } ?>

Menu déroulant PHP (sélection multiple)

Si le menu déroulant est à sélection multiple (multiple="multiple"), nous pouvons définir le selectname="q[]"pour obtenir les valeurs sous forme de tableau. Ce qui suit utilise la méthode POST pour soumettre, et le code est le suivant :

php_form_select_mul.php :

<?php $q = isset($_POST['q'])? $_POST['q'] : ''; if(is_array($q)) { $sites = array( 'EXAMPLE' => 'Tutoriel d'exemple : http://www.example.com', 'GOOGLE' => 'Recherche Google : http://www.google.com', 'TAOBAO' => 'Taobao : http://www.taobao.com', ); foreach($q as $val) { //PHP_EOL est une constante utilisée pour les sauts de ligne echo $sites[$val] . PHP_EOL; } } else { ?>
<form action="" method="post"> <select multiple="multiple" name="q[]"> <option value="">Choisissez un site :</option> <option value="EXAMPLE">Exemple</option> <option value="GOOGLE">Google</option> <option value="TAOBAO">Taobao</option> </select> <input type="submit" value="Submit"> </form>
<?php } ?>

Formulaire de boutons radio

Dans les formulaires à boutons radio PHP, les valeurs de l'attribut name sont identiques, tandis que les attributs value sont différents. Le code est le suivant :

Code du fichier php_form_radio.php :

<?php $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : ''; if($q) { if($q =='EXAMPLE') { echo 'Tutoriel d'exemple<br>http://www.example.com'; } else if($q =='GOOGLE') { echo 'Recherche Google<br>http://www.google.com'; } else if($q =='TAOBAO') { echo 'Taobao<br>http://www.taobao.com'; } } else {
?><form action="" method="get"> <input type="radio" name="q" value="EXAMPLE" />Example <input type="radio" name="q" value="GOOGLE" />Google <input type="radio" name="q" value="TAOBAO" />Taobao <input type="submit" value="Envoyer"> </form>
<?php } ?>

Case à cocher

Les cases à cocher PHP permettent de sélectionner plusieurs valeurs :

Code du fichier php_form_select_checkbox.php :

<?php $q = isset($_POST['q'])? $_POST['q'] : ''; if(is_array($q)) { $sites = array( 'EXAMPLE' => 'Tutoriel d'exemple : http://www.example.com', 'GOOGLE' => 'Recherche Google : http://www.google.com', 'TAOBAO' => 'Taobao : http://www.taobao.com', ); foreach($q as $val) { //PHP_EOL est une constante utilisée pour les sauts de ligne echo $sites[$val] . PHP_EOL; } } else {
?><form action="" method="post"> <input type="checkbox" name="q[]" value="EXAMPLE"> Exemple<br> <input type="checkbox" name="q[]" value="GOOGLE"> Google<br> <input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br> <input type="submit" value="Envoyer"> </le formulaire>
<?php } ?>

Validation de formulaire

Nous devons valider autant que possible les saisies utilisateur (au moyen de scripts côté client). La validation côté navigateur est plus rapide et peut réduire la charge sur le serveur.

Si les saisies utilisateur doivent être insérées dans la base de données, vous devriez envisager d'utiliser une validation côté serveur. Une bonne façon de valider les formulaires sur le serveur consiste à envoyer les données du formulaire vers la page actuelle (une soumission asynchrone est encore mieux) plutôt que de rediriger vers une page différente. Ainsi, les utilisateurs peuvent obtenir les messages d'erreur sur la même page de formulaire, ce qui leur permet de repérer plus facilement les erreurs.

Autres extensions