Transmission de données via un formulaire
Un formulaire HTML défini avec la balise <form> permet de transmettre des données au serveur. Elles pourront ensuite être traitées
pour être par exemple enregistrées dans une base de données ou un fichier. On retrouve des formulaires très fréquemment sur le web pour créer un compte, passer une commande,
envoyer un message de contact, etc.
Affichage du formulaire
Vous devez ajouter à la balise <form> 2 attributs importants :
- action
- L'attribut action permet de renseigner l'URL de la page vers laquelle on souhaite envoyer les données du formulaire, c'est-à-dire quel fichier PHP sera responsable du traitement des données du formulaire ? Cela peut être la même page que celle qui affiche le formulaire ou bien une tout autre page.
- method
-
L'attribut method renseigne sur la méthode Http que l'on souhaite utiliser pour transmettre les données. On en utilise principalement 2 différentes sur le web :
- GET : les données voyagent directement dans l'url, dans ce qu'on appelle la chaîne de requête.
- POST : les données voyagent dans le corps de la requête Http, de manière invisible pour l'internaute.
Vous devez ensuite ajouter les champs voulus à votre formulaire en n'oubliant surtout pas de leur donner un nom grâce à l'attribut name. C'est grâce au nom des champs (à la valeur de leur attribut name) que l'on pourra ensuite récupérer les données du formulaire.
Voici un formulaire très simple dans lequel l'internaute va renseigner son nom. Les données seront ici envoyées vers la même page, index.php, avec la méthode POST.
<form action="index.php" method="POST">
<label for="firstname">Votre prénom:</label>
<input type="text" name="firstname" id="firstname">
<input type="submit" value="Soumettre">
</form>
Remplissez le champ avec votre prénom et cliquez sur le bouton Soumettre
Traitement des données
PHP va recevoir les données du formulaire dans une variable dite super globale. C'est une variable créée et remplie par PHP avec les données transmises
dans la requête Http.
Si la méthode de la requête est GET, on récupère les données dans $_GET. Si la méthode utilisée est POST, on récupère les données dans $_POST.
$_POST et $_GET sont des tableaux associatifs dont les clés sont le nom des champs du formulaire. Ici par exemple je récupèrerai
le prénom dans la valeur du tableau $_POST associée
à la clé firstname : $_POST['firstname']
Le formulaire a-t-il été soumis ?
Si les données du formulaire sont envoyées vers la même page que celle qui affiche ce formulaire, le même fichier va donc devoir choisir entre 2 actions.
- Choix 1 : afficher le formulaire, s'il n'a pas encore été soumis par l'internaute.
- Choix 2 : traiter les données du formulaire, si celui-ci a bien été soumis par l'internaute.
Je peux voir si vous avez soumis le formulaire, si vous avez cliqué sur le bouton "Soumettre", en regardant si la variable super globale $_POST est vide ou non.
if(empty($_POST))
Si elle est vide, le formulaire n'a pas encore été soumis. Dans le cas contraire cela signifie que des données ont été envoyées, je peux les traiter !
Ici le test if(empty($_POST)) est true, $_POST est vide , je sais que vous n'avez pas encore soumis le formulaire !
Allez-y ne soyez pas timide !