Cours ⇒ Cour PHP facebook twitter youtube

Les formulaires en php ⇒ & Récupération des données du formulaire



Récupération des données du formulaire

Tout d’abord, que se passe-t-il lorsque l’utilisateur clique sur le bouton d’envoi ? Une requête HTTP est envoyée au serveur à destination du script désigné par l’attribut action de l’élément <form>. La requête contient toutes les associations entre les noms des champs et leur valeur. Ces associations se trouvent dans l’en-tête HTTP si la méthode POST est utilisée et dans l’URL s’il s’agit de la méthode GET.


1-Valeurs uniques

Les valeurs uniques proviennent des champs de formulaire dans lesquels l’utilisateur ne
peut entrer qu’une valeur, un texte par exemple, ou ne peut faire qu’un seul choix (bouton
radio, liste de sélection à choix unique).
Depuis PHP 4.1, ces valeurs sont contenues sur le serveur dans des tableaux associatifs
dits superglobaux appelés $_POST et $_GET, selon la méthode choisie. Les clés de ces
tableaux sont les noms associés aux champs par l’attribut name.


La méthode POST

Dans le code de l’exemple 6, l’élément <form> est écrit de la façon suivante :


action= "<?= $_SERVER["PHP_SELF"] ?>


Cela désigne le script lui-même comme cible pour le traitement des données.
Le code PHP proprement dit est le suivant

<?php
if(isset($_POST["nom"]) && isset($_POST["niveau"]))
{
echo "<h2> Bonjour ". stripslashes($_POST["nom"]). " vous êtes ".$_POST["niveau"]. " en PHP</h2>";
}
?>

Il contrôle d’abord l’existence des variables $_POST["nom"] et $_POST["niveau"], qui représentent
respectivement le texte saisi et la valeur associée à la case cochée de façon à
n’afficher le message qu’après l’envoi des données

La fonction stripslashes()

est utilisée pour supprimer les caractères d’échappement
ajoutés automatiquement devant les caractères spéciaux éventuellement utilisés dans les
données saisies avant de les afficher dans la page.


La méthode GET

Avec la méthode GET, vous récupérez les données du formulaire dans les variables $_GET
["nom"] et $_GET["niveau"], comme ci-dessous :

 

<?php
if(isset($_GET["nom"]) && isset($_GET["niveau"]))
{
echo "<h2> Bonjour ". stripslashes ($_GET["nom"]). " vous êtes ".$_GET["niveau"]." en PHP</h2>";
}
?>

 

Contrairement à ce qui se passe avec la méthode POST, vous constatez que lors du clic sur le bouton d’envoi l’adresse de la page cible désignée par l’attribut action est suivie par le caractère ? puis par le nom de chaque champ et la valeur qui y est associée.

Par exemple, si le nom de l’utilisateur est « Jean-René d’Orléans » et que la case « débutant» soit cochée, le navigateur affiche l’adresse complète :
http://localhost/php5/C6form/form6.3_get.php?nom=Jean-Ren%E9+d%92Orl%E9ans&niveau=initi%E9
Les caractères accentués « é » et l’apostrophe sont codés en hexadécimal respectivement
par %E9 et %92. Les espaces sont remplacées par le signe +, et chaque paire nom=valeur est
séparée par le signe &.
Dans les versions antérieures à PHP 4.1, les données étaient récupérables dans les variables
$HTTP_POST_VARS ou $HTTP_GET_VARS ou encore directement dans des variables globales
portant le nom des champs du formulaire (la valeur de leur attribut name), soit ici $nom et
$niveau. Ces méthodes sont à considérer comme obsolètes.

Pour simplifier la manipulation des valeurs issues du formulaire, vous pouvez récupérer
chaque valeur dans des variables scalaires dès le début du script de traitement, comme
ci-dessous :


$sonnom= $_POST["nom"];
$sonniveau=$_POST["niveau"];

 


Maintien de l’état du formulaire

Lorsque le script contenant le formulaire est chargé du traitement des données, l’ensemble
de la page est réaffiché après traitement, de même que l’ensemble du formulaire. Le
formulaire se retrouve alors dans son état initial, et toutes les saisies effectuées sont effacées

En cas d’erreur de saisie sur un seul champ, l’utilisateur est obligé de recommencer
l’ensemble de la saisie. S’il s’agit d’un long questionnaire, il y a de quoi s’impatienter.
Pour éviter cela, il est utile de maintenir l’état du formulaire après traitement en réaffichant
l’ensemble des saisies. Vous allez effectuer cette opération à partir du code de l’exemple 6-2 :
• Pour la zone de saisie de texte dont l’attribut name a la valeur "nom", il suffit de définir
l’attribut value avec la variable $_POST["nom"], non sans avoir au préalable contrôlé
l’existence de cette variable. Lors du premier affichage de la page, la zone est donc
vide ou contient le dernier nom saisi . Le code PHP est donc :
<?php if(isset($_POST["nom"])) echo $_POST["nom"]?>
• Pour les boutons radio dont l’attribut name a la valeur "niveau" et qui permettent le
choix entre les valeurs "Débutant" et "Initié", il faut définir l’attribut checked du
bouton choisi à la valeur "checked" en fonction de la valeur de la variable $_POST
["niveau"] . Pour le premier bouton, le code PHP devient :

<?php if(isset($_POST["niveau"]) && $_POST["niveau"]=="débutant")
echo "checked=\"checked\"" ?>


Après une saisie identique à celle de la figure 6-2, vous obtenez un écran identique à
celui de la figure 6-3, dans lequel toutes les données saisies sont encore visibles après le
traitement du formulaire.


Exemple pratique

Il s’agit d’un
site d’annonces immobilières proposant un plan de financement aux visiteurs.
L’application est constituée de deux fichiers, form4.html et form4.php.
Le fichier form4.html affiche le formulaire de saisie des données nécessaires au calcul du
prêt (voir figure 6-4). Il ne contient aucun code PHP et peut donc être enregistré avec
l’extension .html. L’attribut action de l’élément <form> (repère ) désigne le fichier
form4.php, qui est chargé du traitement des données et de l’affichage des résultats.
Le fichier form4.php vérifie d’abord l’existence des variables $_POST["capital"], $_
POST["taux"] et $_POST["duree"], toutes nécessaires au calcul du prêt. La variable $_
POST["assur"] est nécessaire dans tous les cas. Elle a la valeur 1 puisque le bouton radio
« OUI » est coché par défaut. $capital correspond au capital emprunté ( ). $taux
désigne le taux mensuel sous forme décimale. Si l’utilisateur saisit 6 pour le taux annuel,
la variable $taux vaut 6/100/12, soit 0,005, ou 0,5 % par mois ( ). $duree est la
durée en mois . $assur renvoie au montant de l’assurance mensuelle, soit
0,035 % du capital emprunté. Cette variable prend la valeur 0 si $_POST["assur"] vaut 0
( ).
Vient ensuite le calcul de la mensualité selon la formule financière suivante :
$mens=($capital*$taux)/(1-pow((1+$taux),–$duree))
Le script affiche la mensualité hors assurance ainsi que le tableau d’amortissement
contenant, entre autres, le capital restant dû et les intérêts de chaque période
. La figure 6-5 donne un exemple de résultat.
Si le formulaire est incomplet, l’instruction header()affiche à nouveau la page de saisie
form4.html, obligeant l’utilisateur à effectuer une saisie complète

Exemple 6-4. Calcul de prêt bancaire
Page de saisie des données (fichier form4.html) :

Page de traitement des données et d’affichage des résultats

(fichier form4.php) :


Les valeurs multiples

Certains champs de formulaire peuvent permettre aux visiteurs de saisir plusieurs valeurs sous un même nom de composant.
Cela peut concerner un groupe de cases à cocher ayant le même attribut name, par exemple,dont il est possible de cocher une ou plusieurs cases simultanément. Ce peut également être le cas d’une liste de sélection ayant toujours un nom unique mais dans laquelle l’attribut multiple="multiple" est défini. Il est enfin possible de donner le même nom à des éléments de saisie de texte différents, mais cela présente moins d’intérêt.Dans tous les cas, ce n’est pas une valeur scalaire mais un tableau qui est récupéré côté serveur. Il faut pour cela faire suivre le nom du composant de crochets, comme pour créer une variable de type array. Dans l’exemple suivant :


Bleu:<input type="checkbox" name="choix[]" value="bleu" />
Blanc:<input type="checkbox" name="choix[]" value="blanc" />


l’utilisateur peut cocher les deux cases simultanément. Le programmeur récupère ces
valeurs dans les variables suivantes :


$_POST["choix"][0] qui contient la valeur "bleu"
$_POST["choix"][1] qui contient la valeur "blanc"

La variable $_POST est un tableau multidimensionnel, en l’occurrence à deux dimensions.
L’exemple 6-5 illustre la méthode de récupération des valeurs multiples. Le formulaire
créé par le fichier form5.html contient trois zones de saisie de texte portant le même nom,
une liste de sélection avec l’attribut multiple et quatre cases à cocher ayant le même nom.
Dans les listes de sélection, l’utilisateur doit maintenir la touche Ctrl enfoncée pour faire
plusieurs choix. Il peut être utile de lui rappeler cette fonctionnalité.
L’objet du formulaire est de faire saisir une fiche de renseignements par l’utilisateur puis
d’afficher l’ensemble de ces informations. Le script cible du formulaire contenu dans le
fichier form5.php récupère les données et réalise une fiche récapitulative des renseignements
personnels si les variables du tableau $_POST existent (repère ) ou, dans le cas
contraire, une boîte d’alerte, à l’aide de la fonction JavaScript alert() (repère ), et une
redirection vers la page de saisie, via la fonction JavaScript window.history.back()
(repère ).
 

 


Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces