Formulaires et PHP
L'objectif de ce travail est de comprendre le principe des formulaires HTML et de leur traitement côté serveur via le langage PHP.
Un formulaire HTML!¶
Les formulaires HTML sont des structures classiques du WEB dès lors qu'il s'agit de saisir des informations personnelles à la création d'un compte par exemple:
Les balises HTML qui définissent ce formulaire sont données ci-après.
Premier formulaire
- Créer un dossier
site_web - Recopier le code suivant dans
notepad++et l'enregistrer sous le nomindex.htmldans le dossier précédent - Ouvrez ensuite ce fichier avec votre navigateur favori.
Code HTML pour les formulaires
<!DOCTYPE html>
<html>
<body>
<h2>Compléter les informations suivantes</h2>
<div>
<form>
<label for="fname">Nom:</label><br>
<input type="text" id="fname" name="fname" value="John"><br>
<label for="lname">Prénom:</label><br>
<input type="text" id="lname" name="lname" value="Doe"><br>
<label for="age">Âge:</label><br>
<input type="number" id="age" name="age_saisi" ><br>
<input type="radio" id="html" name="sexe" value="H">
<label for="html">Masculin</label><br>
<input type="radio" id="css" name="sexe" value="F">
<label for="css">Féminin</label><br>
</form>
</div>
</body>
</html>
Vous remarquerez que les zones de saisies (balises input) ont plusieurs types: du texte à saisir, des boutons radios à cocher ou encore des nombres... mais il en existe bien d'autres (password, email, ...).
Les balises input ont des attributs: type pour le ... type, id pour les identifier et agir sur eux via du CSS ou du JS, puis name et value que nous évoquerons plus tard.
Notre formulaire est très archaïque: ajoutons un peu de CSS!
Second formulaire plus stylé
- Recopier le code
CSSci-après dansnotepad++et l'enregistrez-le sous le nommon_style_formulaire.cssdans le dossiersite_web. -
Modifier le fichier
index.htmlen ajoutant l'instruction:🌍 Code HTMLau bon endroit<HEAD> <link href="mon_style_formulaire.css" rel="stylesheet" type="text/css"> </HEAD> -
Pensez à enregistrez puis rafraîchir la page du navigateur pour oberver les effets de style.
Code CSS pour les formulaires
input[type=text]{
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #FF0000;
border-radius: 4px;
box-sizing: border-box;
}
input[type=number]{
width: 50%;
padding: 12px 20px;
margin: 8px 0;
display: inline-flex;
border: 1px solid #0000FF;
border-radius: 4px;
box-sizing: border-box;
}
input[type=radio]{
width: 50%;
padding: 12px 20px;
margin: 8px 0;
display: inline-flex;
border: 1px solid #0000FF;
border-radius: 4px;
box-sizing: border-box;
}
input[type=submit] {
width: 100%;
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
input[type=submit]:hover {
background-color: #45a049;
}
div {
border-radius: 5px;
background-color: #f2f2f2;
padding: 20px;
}
h2{
color:Tomato;
}
Vous devrier obtenir quelque chose qui ressemble à cela:
On fait quoi maintenant?¶
Une fois les données saisies, il faut les envoyer au serveur qui va certainement les stocker dans une base de données, concept que nous ne développerons pas ici (compétences d'un élève de terminale).
Il peut aussi traiter ces informations saisies en vous envoyant une page HTML formatée: c'est en particulier le rôle du langage PHP que de proposer un affichage dynamique en fonction des données que vous lui avez transmis!
Le langage PHP
Le langage PHP est un langage de programmation principalement utilisé pour produire des pages Web dynamiques via un serveur web.
Nous allons donc faire un peu de PHP, ce qui vous permettra d'agrandir la liste des langages de programmation rencontrés cette année. Mais nous nous contenterons des routines les plus simples...
Installer un serveur PHP¶
Nous pourrions installer un serveur Python qui traitera alors des scripts écrits dans ce langage, nous l'avons déjà fait ici.
Mais nous allons utiliser une architecture très classique: WAMP
Wamp
WAMP est un acronyme informatique: Windows, Apache, MySQL, PHP
Si vous connaissez bien Windows, Apache est le serveur WEB qui répond aux requêtes des clients, le langage de script PHP sert la logique et MySQL gère les base de données.
Nous allons utiliser UWAMP un version légère installée sur vos machines. Il n'y a rien à faire à part démarrer le serveur... Nous y reviendrons plus tard.
Définir les pages PHP¶
pages PHP
Si les fichiers HTML utilisent le langage PHP, ils doivent alors porter l'extension php
Ainsi le fichier index.html doit-il s'appeler dorénavant index.php même s'il ne contient pas encore du code php.
Changer l'extension
Changer l'extension du fichier index.html en index.php
Envoyer les données du formulaires¶
Vous effectuez une requête sur le serveur WEB pour obtenir la ressource d'accueil index.php qui contient le formulaire.
Les données saisies dans le formulaire vont être envoyées à une page traitement.php qui va traiter ces informations et construire une page HTML personnalisée que le serveur va vous renvoyer:

Pour indiquer que c'est le fichier traitement.php qui va traiter les demandes, il faut modifier le code HTML du fichier index.php.
Modifier le code du fichier index.php
Modifier les balises du formulaires comme indiqué ci-dessous.
Code à modifier
<form action="traitement.php" method="get">
<label for="fname">Nom:</label><br>
<input type="text" id="fname" name="fname" value="John"><br>
<label for="lname">Prénom:</label><br>
<input type="text" id="lname" name="lname" value="Doe"><br>
<label for="age">Âge:</label><br>
<input type="number" id="age" name="age_saisi" ><br>
<input type="radio" id="html" name="sexe" value="H">
<label for="html">Masculin</label><br>
<input type="radio" id="css" name="sexe" value="F">
<label for="css">Féminin</label><br>
<input type="submit" value="Envoyer les données">
</form>
À l'appui de la touche Envoyer des données, les valeurs saisies sont communiquées au fichier traitement.php qui va alors construire une nouvelle page en fonction de ces valeurs.
Quelle méthode?
Deux méthodes sont disponibles pour envoyer des données:
- la méthode
GETqui permet d'envoyer les données dans l'URL - la méthode
POSTqui permet d'envoyer les données dans le corps de la requête
Vous pourrez tester les deux méthodes un peu plus tard pour saisir la différence.
Mon premier fichier php
- Avec
notepad++, créer un fichierPHPet enregistrez-le dans le dossiersite_websous le nomtraitement.php. - Copiez-y le contenu du code
PHPproposé ci-après.
Code à modifier
<HTML>
<HEAD>
<!-- ************************NOM de la Page *************************************-->
<TITLE> Site de bienvenu </TITLE>
<!-- ************************Utilisation d'une feuille de style *************************************-->
<link href="mon_style_formulaire.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY >
<center>
<div>
<?php
$nom = $_GET['fname'];
$prenom = $_GET['lname'];
$age = $_GET['age_saisi'];
$civ = $_GET['sexe']
?>
<h1>
<?php
if($civ == 'F'){
echo 'Bonjour Madame, ';
}
else{
echo 'Bonjour Monsieur, ';
}
?></h1>
<h1> <?php echo $nom." ".$prenom ; ?> </h1>
<h2>Ton âge est: <?php echo $age." ans";?> </h2>
</center>
</div>
</BODY>
</HTML>
Dans un premier temps, le PHP récupère les valeurs de tous les champs du formulaire envoyées par la méthode GET pour les stocker dans des variables PHP qui commençent par le symbole $.
Puis la méthode echo largement utilisée, retourne des éléments HTML personnalisés.
Warning
Toutes les commandes php se terminent par un ;. Leur oubli est source d'erreur.
Testez!¶
À ce stade vous devriez avoir dans le dossier site_web, trois fichiers:
- le fichier
index.php - le fichier
traitement.php - le fichier
mon_style_formulaire.css
Respectez bien les étapes suivantes pour utiliser la technologie php.
Étape n°1: Lancer le serveur
Lancer le serveur UWAMP, vous devriez obtenir après quelques secondes, un truc qui ressemble à cela:

Étape n°2: Déposer votre site dynamique
Appuyer sur le bouton dossier www et pas un autre!

Dans la fenêtre qui s'ouvre, copier dans le dossier www, le dossier site_web que vous avez créé.
Étape n°3: Consulter votre site
Appuyer sur le bouton Navigateur www et pas un autre!
Un navigateur s'ouvre avec l'url localhost. Il faut comprendre que votre machine héberge à la fois le client qui effectue la requête vers un site web via le navigateur et aussi le serveur dont l'adresse IP est 127.0.0.1. Son nom DNS est alors localhost.

Cliquez sur le seul dossier site_webet votre page d'index devrait apparaître. Complétez alors les champs du formulaire et soumettez-le au php( en appuyant sur le bouton vert...)
Vous remarquerez alors que les valeurs saisies ont été ajoutées à l'URL:

Méthode GET
Avec la méthode GET, les valeurs saisies apparaissent en clair dans l'URL
On peut utiliser la méthode POST. Pour cela, il faut remplacer:
- dans le fichier
index.php, l'attributmethodde la balise<form>parPOSTau lieu deGET - dans le fichier
traitement.php, toutes les instructions$_GETpar$_POST.
Méthode POST
Avec la méthode POST, les données saisies sont envoyées dans le corps de la requête et sont alors moins visibles.
Voilà pour la découverte de PHP...
Le coin des exercices¶
Pour savoir si vous avez compris les manipulations précédentes, vous pouvez réaliser les exercices suivants.
Calcul de périmètre
Écrire un formulaire qui permet de saisir la longueur et la largeur d'un rectangle et qui retourne à l'envoi des valeurs, le périmètre et l'aire de ce rectangle.
Calcul de moyenne
Écrire un formulaire qui permet de saisir les notes obtenues en maths, H.G, français puis technologie et qui retourne à l'envoi des valeurs, la moyenne obtenue.