PHP et Formulaires

Pour récupérer des données de formulaires en PHP on utilisera des variables globales de type tableau, prédéfinies, indexées par le nom des objets du formulaires.
Ainsi, si le nom d’un champ texte du formulaire est ‘patronyme’ on récuperera sa valeur en PHP par nom_var_globale[‘patronyme’]

Il existe 3  variables pour récupérer ces données :

  • $_POST[] , si la méthode d’appel est ‘post’
  • $_GET[] , si la méthode d’appel est ‘get’
  • $_REQUEST , dans les 2 cas (et contient également les infos de $_COOKIE)

Récupération de paramètres simples d’un formulaire en PHP

coté HTML, un formulaire avec champs texte (text fields)

<html>
<body>
<form method= »POST » action= »recup1.php » name= »form1″>
Nom : <input type= »text » name= »nom » ></br>
prenom : <input type= »text » name= »prenom » >
<input type= »submit » value= »Envoi »>
</form>
</body>
</html>

coté PHP on utilise le tableau associatif superglobal $_POST

<?php
//recup1.php
$nom = $_POST[‘nom’];
$prenom = $_POST[‘prenom’];
print « nom : $nom </br> »;
print « prénom : $prénom »;
?>

Liste déroulante avec un seul choix

Comme dans le cas précédent la variable est une variable simple (scalaire).
On utilisera donc la même méthode.
Notez que les valeurs retournées par le formulaire peuvent être différentes des valeurs affichées dans la liste…

remarque : si on ne choisit aucune valeur dans la list, c’est la valeur affichée qui est retournée.

Voici un exemple de formulaire

<html>
<body>

<form name= »form0″ action= »form0.php » method= »post » >
<select name= »voitures » >
<option value= »vw »>Volkswagen</option>
<option value= »pijo »>Peugeot</option>
<option value= »audi »>Audi</option>
</select>
<input type= »submit »>
</form>
</body>
</html>

et le code PHP pour récuperer la valeur choisie :

<?php
$voiture = $_POST[‘voitures’];
print (« valeur : $voiture »);
?>

Récupération de variables composées multiples (cases à cocher et listes déroulantes)

Dans ces cas, nous pouvons avoir plusieurs valeur à récupérer. La variable utilisée dans le formulaire sera un tableau (notation avec []) et dans le programme PHP, on fera une boucle pour lire les valeurs renseignées dans le tableau résultat.

<html>
<body>
<form method= »POST » action= »recup2.php » name= »form1″>
Cochez un Pays…</br>
France <input type= »checkbox » name= »pays[] » value= »fr »></br>
Angleterre <input type= »checkbox » name= »pays[] » value= »gb »></br>
Costa rica <input type= »checkbox » name= »pays[] » value= »cr »></br>
et selectionnez un aeroport…<BR>
<select name= »aeroport[] » size= »4″ multiple>
<option value= »CDG »>Paris</option>
<option value= »LON »>Londres</option>
<option value= »SJO »>San Jose</option>
</select>
<br>
<input type= »submit » value= »Envoi »>
</form>
</body>
</html>

et coté PHP

<?php
// recup2.php
$t_pays = $_POST[‘pays’];
$t_aeroport= $_POST[‘aeroport’];
foreach ($t_pays as $pays) {
print (« pays : $pays »);
}
foreach ($t_aeroport as $aeroport) {
print (« Airport : $aeroport\n »);
}
?>

remarque : si aucune case n’est cochée ou aucun choix fait dans la liste, on aura une erreur d’exécution, du type ‘argument invalide pour la fonction foreach’. Ceci est du au fait que le tableau dans ce cas n’est pas renseigné et a une valeur indéfinie. Pour éviter ce désagrément, on pourra tester si l’utilisateur a bien fait un choix et le solliciter le cas échéant. On utilisera par exemple la fonction ‘isset’ qui est vraie lorsqu’une variable (simple ou composée) est renseignée !

<?php
if( isset($_POST[‘pays’])) {
$tab_pays= $_POST[‘pays’];
foreach($tab_pays as $valeur){
print (« valeur : $valeur <br> »);
}
}
else print (« Vous devez choisir au moins une valeur !! »);
?>