Exercices
Questions à choix multiple

Leçon N° 07 : Formulaires

Notes de page

Passage de parametre par l'url

On peut passer des informations lors de la construction du lien d'une page vers une autre; la syntaxe est la suivante :
<?php
echo "<a href=file.php?var_a='$var_1'&var_b='$var_2'>Passer les variables</a>";
?>
Les variables passées de la page actuelle vers la suivante sont $var_1 et $var_2
Dans la page suivante les valeurs seront à récupérer dans $_GET['var_a'] et $_GET['var_b']
A noter le & pour séparer les paramètres à passer
Exercice sur le passage de paramètres par URL
Nom du fichier : exercises_07/lesson_07_url.php

Zones de saisie standard POST

C'est la methode à utiliser par défaut.
Les données sont transmises de façon non visibles du navigateur au serveur. La syntaxe au niveau du formulaire est :
<form action="newFile.php" method="post">
La syntaxe au niveau du contrôle de formulaire est :
<input type="text" name="nom_de_variable"
Dans le fichier newFile.php, les données sont récupérées dans le tableau $_POST : $_POST["nom_de_variable"]
Exercice sur la zone de saisie POST
Nom du fichier : exercises_07/lesson_07_post.php

Zones de saisie standard GET

Cette methode est à proscrire pour les passages des mots de passe et autres informations 'sensibles', par contre elle est pratique pour la mise au point puisque l'on voit dans l'URL les valeurs envoyées au serveur. La syntaxe au niveau du formulaire est :
<form action="newFile.php" method="get">
La syntaxe au niveau du contrôle est, comme précédemment :
<input type="text" name="nom_de_variable"
Les formulaires GET s'apparentent, au niveau du fonctionnement interne de HTML, au passage de parametre par URL, car c'est par l'URL que sont transmises les informations du formulaire. Comme dans le passage par l'URL, les données sont à récupérer dans le fichier newfile.php dans le tableau $_GET : $_GET['var_a'] et $_GET['var_b']
Exercice sur la zone de saisie GET
Nom du fichier : exercises_07/lesson_07_get.php

Boutons radio

Ce type de controle est à utiliser lorsque l'on veut que l'internaute ne puisse choisir qu'une option parmi plusieurs
La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou POST)
<input type='radio' name=monBoutonRadio value='valeur_a'>Label_a
<input type='radio' name=monBoutonRadio value='valeur_b'>Label_b
..............................................................
Autant de lignes que de boutons, à chaque bouton correspondant une valeur 'valeur_x' et un label, mais tous les boutons doivent porter le même nom pour un ensemble de boutons donné La valeur choisie va se retrouver dans la variable $_POST['monBoutonRadio'], qui va contenir la valeur "valeur_x" suivant le bouton qui est coché
Exercice sur les boutons radio
Nom du fichier : exercises_07/lesson_07_radio.php

Case à cocher multiple

Ce type de controle est à utiliser lorsque l'on veut que l'internaute puisse choisir plusieurs cases à cocher à la fois La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou POST)
<input type='checkbox' name=$nom_a > label_a
<input type='checkbox' name=$nom_b > label_b
...........................................
Autant de lignes que de boutons, à chaque bouton correspondant non plus une valeur mais un nom et un label; pas de valeur à affecter dans ce cas. Pour récupérer la variable : if (isset($_POST['nom_x']))... Comme dans l'exertcice ci-après il sera souvent plus pratique de mettre les noms des variables dans un tableau de façon a pouvoir explorer les valeurs à l'aide d'une boucle (for, while...)
NB: On ne récupère pas des valeurs (comme on l'a vu ci-dessus la propriété 'value' est absente du formulaire dans ce cas) mais des états logiques.
Cases à cocher multiples de base
Nom du fichier : exercises_07/lesson_07_checkbox.php
Exercice sur les cases à cocher multiples
Nom du fichier : exercises_07/lesson_07_checkbox_mult.php

Liste de choix

Liste déroulante à choix unique. On ne peut sélectionner qu'un seul élément de la liste La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou POST)
<SELECT NAME=maListe>
<OPTION value=nom_a>label_a</OPTION>
<OPTION value=nom_b>label_b</OPTION>
...........................................
Autant de lignes que d'éléments dans la liste. On voit que l'on a un seul nom On récupère la valeur (nom_x) dans $_POST['maListe']
Exercice sur les listes de choix
Nom du fichier : exercises_07/lesson_07_list.php

Liste à choix multiple

Liste déroulante à choix multiple : l'internaute peut sélectionner plusieurs options dans la liste La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou POST)
<SELECT NAME=maListe[] size=7 multiple>
<OPTION value=valeur_a>label_a</OPTION>
<OPTION value=valeur_b>label_b</OPTION>
..............................................
Autant de lignes que d'éléments dans la liste. On récupère la valeur dans le tableau $_POST['maListe'] Attention : bien mettre les crochets [] à la suite du nom dans la déclaration HTML. On ne récupére pas une valeur mais directement un tableau de valeurs.
Exercice sur les listes à choix multiple
Nom du fichier : exercises_07/lesson_07_list_mult.php

Boite de dialogue

La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou POST)
<textarea name='monTexte' cols=20 rows=5>Racontez ici
On récupère la valeur dans $_POST['montexte']
Exercice sur les boîtes de dialogue
Nom du fichier : exercises_07/lesson_07_textarea.php

Eviter la multiplication des pages

La syntaxe au niveau du formulaire est donc:
<form action=<?php echo $_SERVER[PHP_SELF] ; ?> >
Ceci permet donc de réactiver la page en cours lorsque l'on a cliqué sur le bouton de soumission du formulaire, c'est encore cette page qui va être chargée, il faut réaliser un test en début de page, si les variables du formulaire sont chargées, il ne faut plus afficher le formulaire mais la page suivante. Voir l'exemple pour la marche à suivre
Une seule page pour le formulaire et son traitement
Nom du fichier : exercises_07/lesson_07_php_self.php

Pour conserver le format d'une boite dialogue

La fonction nl2br() permet de conserver les retour à la ligne Ex : nl2br($_POST['myLife'])
Conserver le format d'une boite de dialogue
Nom du fichier : exercises_07/lesson_07_textarea_format.php

Envoi d'un fichier du client vers le serveur

Attention, failles de sécurité, à éviter sur les systèmes critiques
Note 1: Si l'on veut juste récupérer un nom de fichier, il suffit d'enlever l'attribut "enctype"
Note 2: Pour récupérer le fichier sur le serveur, il faut aussitôt le transférer dans
répertoire , exemple de routine (voir chapitre 20 troisième exercice ):
if($size > 0)
{
$up_dir = "./upload/"; $temp=$_FILES["toUpload"]["tmp_name"];//récupération du nom temporaire global $up_dir
$new_name = time() . "-" . $name;
$new_name = str_replace(" ","_",$new_name);
@move_uploaded_file($temp, $up_dir . $new_name);
}
Envoi d'un fichier sur le serveur
Nom du fichier : exercises_07/lesson_07_get_file.php

Rendre la saisie d'un champ obligatoire

Formulaire avec champs obligatoires
Nom du fichier : exercises_07/lesson_07_application.php

Utilisation d'une classe pour vérifier les données du formulaire

Ce paragraphe est ici pour référence seulement, les classes feront l'ojet du chapitre suivant, le fonctionnement de cet exemple y est expliqué en détail
Utilisation d'une classe
Nom du fichier : exercises_08/lesson_08_form_1.php

Tous droits réservés. 2005-2020