Traitement de formulaire dans un seul fichier PHP
Dans la leçon précédente, notre formulaire était placé
sur une page et envoyé vers une autre.
En réalité, ce n'est pas obligatoire. Si on laisse
l'attribut action vide ou si on le supprime
complètement, le formulaire sera envoyé sur cette
même page.
Comment cela fonctionnera : lors de la première visite sur la page, nous remplirons le formulaire avec des données et cliquerons sur le bouton. Après cela, la page sera actualisée et son code sera exécuté à nouveau, mais cette fois avec les données du formulaire.
Regardons un exemple. Supposons que nous ayons dans un seul fichier un formulaire et son traitement :
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Lors de la première visite sur la page, la fonction var_dump
affichera un tableau vide. Et après l'envoi du formulaire,
elle affichera les données du formulaire. C'est-à-dire la première
fois $_GET sera vide, et la deuxième fois
- contiendra les données du formulaire.
Cela peut entraîner des problèmes. Supposons, par exemple, que nous entrions des nombres dans le formulaire et souhaitions afficher la somme de ces nombres à l'écran :
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Dans ce cas, lors de la première visite sur la page,
nous verrons des erreurs PHP, liées au fait que
le tableau $_GET est vide, et que nous accédons
à ses éléments.
Il convient de dire ici que vous n'aurez peut-être pas d'erreurs dans le navigateur. Dans ce cas, vérifiez que l'affichage des erreurs PHP est activé, et assurez-vous également que c'est votre première visite sur la page et qu'il n'y a pas de données de formulaire dans la barre d'adresse.
Corrigeons le problème. Pour cela, ajoutons une condition dans laquelle nous vérifierons si le formulaire a été envoyé.
Par exemple, on peut vérifier si $_GET est
non vide. Si $_GET n'est pas vide -
alors le formulaire a été envoyé et on peut effectuer
la sommation. Sinon, nous sommes encore
au premier accès à la page et la sommation ne sera pas
effectuée. Voici donc le code corrigé :
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Demandez à l'utilisateur son nom, prénom et patronyme. Après l'envoi du formulaire, affichez à l'écran les données entrées.