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
Pour diminuer le nombre de fichiers sur le serveur (peut avoir un impact sur la rapidité :
si le nombre de fichiers augmente, le serveur est plus lent), on peut n'utiliser qu'un seul
fichier pour le formulaire et le traitement du formulaire;
pour réaliser cela il faut remplacer le nom du fichier dans la balise action
- Soit par le nom du fichier en cours, mais c'est dangereux, si l'on change le nom du fichier,
le formulaire ne fonctionnera plus.
- Soit par la variable $_SERVER[PHP_SELF] dans laquelle est stockée
en permanance le nom du fichier en cours d'execution.
La syntaxe au niveau du formulaire est donc:
<form action=<?php echo $_SERVER[PHP_SELF] ; ?> >
Note : la commande echo
peut aussi être en début de ligne, ce qui est important :
- L'extension du fichier doit être .php (ou php'x')
- L'appel du tableau $_SERVER doit être à
l'intérieur de code php et non html
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
|
|