Les formulaires en PHP
Dans le cours précédent, nous avons vu les fondamentaux du langage PHP : les variables, les types, les structures de contrôle et l'affichage. Il y avait pas mal de similitudes avec le C que vous connaissiez déjà. Dans ce cours, nous allons une notion très spécifique au PHP : la gestion des formulaires.
Transmettre les infos d'une page à une autre
Les formulaires en PHP ont principalement un but : pouvoir envoyer des informations d'une page à une autre. En effet, pour que nos pages soient dynamiques, nous avons parfois besoin de demander des informations à l'utilisateur ou bien de guider ses choix.
Deux méthodes sont à notre disposition pour transmettre des informations :
les formulaires HTML
les URLs
Les formulaires HTML
Petit rappel de HTML
En HTML, un formulaire ressemble à ceci :
Une balise <form> avec des attributs method et action qui contient une série de <label> et d' <input> ainsi qu'un bouton de soumission du formulaire.
L'attribut method
Nous allons d'abord nous intéresser à l'attribut method du formulaire :
Il peut prendre deux valeurs différentes : "get" ou "post".
La différence principale entre les deux est la façon dont elles font circuler les données.
La méthode get
Lorsqu'un formulaire qui a la méthode get est soumis, il envoie les informations des champs du formulaire directement dans l'URL :

Vous pouvez tester par vous-même avec le formulaire de recherche du site education.gouv.fr.
La méthode post
La méthode post, elle n'expose pas les données : vous ne les verrez pas apparaitre dans l'URL de la page :

Vous pouvez tester en vous connectant sur NetYparéo.
L'attribut action
Nous allons maintenant regarder de plus près l'attribut action du formulaire HTML :
action comme son nom l'indique plutôt bien permet de préciser ce que va faire le formulaire et donc à quelle URL il va envoyer ses informations.
L'URL indiquée peut être le chemin d'un fichier :
ou
ou bien une URL classique :
ou relative
Comment le PHP reçoit les informations des formulaires
Lorsque vous envoyez un formulaire vers un fichier PHP le serveur va automatiquement remplir des variables que l'on appelle des superglobales. Selon la méthode que vous avez choisie pour votre formulaire, il va soit remplir la superglobale $_GET soit remplir la superglobale $_POST.
Ces variables sont des tableaux associatifs qui contiennent tous les champs de vos formulaires.
Le serveur va utiliser l'attribut name de votre input pour créer la clé du tableau associatif et l'attribut value pour générer sa valeur.
Par exemple le formulaire suivant :
sera utilisable par le fichier search.php de la façon suivante :
alors qu'un formulaire en post comme l'exemple qui suit :
sera utilisable par le fichier login.php de la façon suivante :
Passer des informations directement dans l'URL
Nous avons vu plus haut qu'en utilisant un formulaire avec la méthode get, les informations étaient envoyées directement dans l'URL. Mais nous ne sommes pas obligés d'utiliser un formulaire pour ça. Toute information passée directement dans les paramètres d'URL sera disponible en PHP dans la superglobale $_GET.
Il faut simplement respecter le format des paramètres d'URL.
Le format des paramètres d'URL
Anatomie d'une URL
Prenons l'URL générée sur le Gif de démonstration de la méthode get:
notre navigateur nous cache des choses et la vraie URL serait :
Cette URL comporte plusieurs éléments :
https://c'est le protocole d'accès à la page, ici le protocole HTTP sécuriséeducation.gouv.frc'est le nom de domainegouv.fret le sous-domaineeducationrecherchec'est l'adresse dans le site?indique le début de la liste des paramètreskeywords=lycéec'est un paramètre oukeywordsest la clé etlycéela valeur
Quand on veut construite une URL avec des paramètres on respectera toujours ce format :
ce qui pourrait donner quelque chose comme :
Comment pourriez-vous modifier cette url pour chercher des informations sur la spécialité dev-web?