Langage PHP

Gestion de formulaires en PHP

I. Introduction

Les formulaires constituent le principal moyen pour vos visiteurs d'entrer des informations sur votre site. Les formulaires permettent de créer une interactivité.

Par exemple, sur un forum on doit insérer du texte puis cliquer sur un bouton pour envoyer son message. Sur un livre d'or, sur un mini-chat, on procède de la même façon. On a besoin des formulaires partout pour échanger des informations avec nos visiteurs.

Vous allez voir qu'il y a de nombreux rappels de HTML dans ce chapitre…. Le HTML permet de créer le formulaire, tandis que le PHP permet de traiter les informations que le visiteur a entrées dans le formulaire.

En HTML, pour insérer un formulaire, on se sert de la balise <form>. On l'utilise de la manière suivante par exemple :

<form method="GET" action="cible.php">
<p>
on insèrera ici les éléments de votre formulaire
</p>
</form>

La méthode

Il faut savoir qu'il existe plusieurs moyens d'envoyer les données du formulaire. Vous pouvez en employer deux :

  • GET : les données transiteront par l'URL. On pourra les récupérer grâce à l'array $_GET. Cette méthode est assez peu utilisée car on ne peut pas envoyer beaucoup d'informations dans.
  • POST : les données ne transiteront pas par l'URL, l'utilisateur ne les verra donc pas passer dans la barre d'adresse. On pourra les récupérer grâce à l'array $_POST. Cette méthode permet d'envoyer autant de données que l'on veut, ce qui fait qu'on la privilégie le plus souvent.

La cible

L'attribut action sert à définir la page appelée par le formulaire. C'est cette page qui recevra les données du formulaire et qui sera chargée de les traiter.

Imaginons le schéma de la figure suivante :

Dans cet exemple, le formulaire se trouve dans la page formulaire.php. Cette page ne fait aucun traitement particulier, mais une fois le formulaire envoyé (lorsqu'on a cliqué sur le bouton « Valider »), le visiteur est redirigé vers la page cible.php qui reçoit les données du formulaire, comme vous le montre la figure suivante.

Le nom de la page cible est défini grâce à l'attribut action.

La page cible ne doit pas forcément s'appeler cible.php. J'utilise ce nom dans mes exemples simplement pour que vous compreniez bien que c'est la page qui est appelée.

Remarquez qu'en théorie rien n'empêche le formulaire de s'appeler lui-même. Il suffirait d'écrire action="formulaire.php". Dans ce cas, la page du formulaire doit être capable aussi bien d'afficher le formulaire que de traiter les données. C'est tout à fait possible de le faire mais afin de ne pas compliquer les choses trop vite, on va éviter de faire comme ça ici.

II. Les éléments du formulaire :

Dans un formulaire,  on peut insérer beaucoup d'éléments différents : zones de texte, boutons, cases à cocher, etc.

1. Les petites zones de texte :

<form method="POST" action="cible.php">

<input type="text" name="prenom" value="" /><br />

<input type="password" name="password" /><br />

<input type="submit" value="Valider" />

<input type="reset" value="Effacer">

</form>

Remarques :

  • Pour les mots de passe, vous pouvez utiliser type="password", ce qui aura pour effet de cacher le texte entré par le visiteur. À part ce détail, le fonctionnement reste le même.
  • Le champ <input type="submit"/> permet de créer le bouton de validation du formulaire qui commande l'envoi des données, et donc la redirection du visiteur vers la page cible.
  • Le champ <input type="reset"/> permet de créer le bouton pour vider tous les champs du formulaire.

Pour tester ce script, sauvegarder le dans un fichier formulaire.php (ou formulaire.html car il ne contient pas de script PHP), ensuite créer un autre fichier cible.php comme suit :

<p>Bonjour !</p>
<p>
Tu t'appelles <?php echo $_POST['prenom']; ?>
</p>
<p>
Si tu veux changer le prenom , <a href="formulaire.php">cliquer ici</a>
</p>

2. Les grandes zones de texte :

<textarea name="message" rows="8" cols="45">
    votre message ici.
</textarea>

3. La liste  déroulante : 

On utilise le code HTML suivant pour construire une liste déroulante :

<select name="choix">
   <option value="choix1">Choix 1</option>
   <option value="choix2">Choix 2</option>
   <option value="choix3">Choix 3</option>
   <option value="choix4">Choix 4</option>
</select>

Vous pouvez aussi définir le choix par défaut de la liste. Normalement c'est le premier, mais si vous rajoutez l'attribut selected à une balise <option>, alors ce sera le choix par défaut. On pourrait par exemple écrire :

<option value="choix3" selected>Choix 3</option>

La valeur selectionné sera envoyée dans la variable choix.

4. Les cases à cocher: 

On utilise le code HTML suivant pour construire une case à cocher :

<input type="checkbox" name="case1" id="case1" value="1"/>
<label for="case1"> case 1</label> <br />
<input type="checkbox" name="case2" id="case2" value="2"/>
<label for="case2"> case 2</label> <br />

Si vous voulez que la case soit cochée par défaut, il faudra lui rajouter l'attribut checked. Par exemple :

<input type="checkbox" name="case" checked/>

Si la case1 est coché, un variable $_POST['case1'] sera créé, et contient la valeur qui est dans l'attribut value (dans notre exemple la valeur 1).

<?php
if(isset($_POST['case1'])){
   echo $_POST['case1'];
}
echo '<br />';

if(isset($_POST['case2'])){
   echo $_POST['case2'];
}
?>

5. Les boutons d'option :

Les boutons d'option fonctionnent par groupes de deux minimum. Vous trouverez un exemple sur la figure suivante.

Aimez-vous le langage PHP ?
<input type="radio" name="radio" value="oui" id="oui" checked="checked" />
<label for="oui">Oui</label>
<input type="radio" name="radio" value="non" id="non" />
<label for="non">Non</label>

6. Les champs cachés :

Les champs cachés constituent un type de champ à part. En quoi ça consiste ? C'est un code dans votre formulaire qui n'apparaîtra pas aux yeux du visiteur, mais qui va quand même créer une variable avec une valeur. On peut s'en servir pour transmettre des informations fixes.

supposons que vous ayez besoin de « retenir » que le pseudo du visiteur est « Stefano ». vous allez taper ce code :

<input type="hidden" name="pseudo" value="stefano">

À l'écran, sur la page web on ne verra rien. Mais dans la page cible, une variable $_POST['pseudo'] sera créée, et elle aura la valeur « Stefano » !

7. La reception des variables dans la page cible.php :

Comme vous avez voir dans un exemple précedent, on récupère les variables des formulaires par un des deux manières, selon la méthode utilisé :

  • Si method="GET" on utilise $_GET['var_name']
  • Si  method="POST" on utilise $_POST['var_name']

Pour savoir si le variable $_POST ou $_GET, (ou effectivement n'importe quel variable) est déclaré ou non, on utilise la fonction isset(), comme l’exemple suivant :

<?php
if(isset($_GET['prenom']) && isset($_GET['nom'])){
   //......
}
?>

Un variable $_POST déclaré veut dire qu'on accède à la page à travers d'un formulaire avec la méthode POST.

Pour savoir si le variable $_POST ou $_GET contient une valeur ou non, on utilise la fonction empty() qui renvoi la valeur TRUE si $_POST est vide.

<?php
if(empty($_POST['prenom'])){
   echo "vous n'avez pas saisie le prenom ";
}
?>



Partager ce cours avec tes amis :
Rédigé par Mostafa Sedoki
Computer science teacher and the founder of the e-learning platform "developpement-informatique.com", my mission is to provide high-quality courses for free to all computer science students and teachers

Cours Similaires :