AP04 Les formulaires et la récupération des données en PHP

Transcription

AP04 Les formulaires et la récupération des données en PHP
AP04 ­ Les formulaires et la récupération des données en PHP
Lorsqu’un visiteur entre des informations dans un formulaire, celles­ci sont récupérées en PHP sous forme de variables.
Pour commencer, comment faire un formulaire ? Par exemple, comme ceci (fichier form.php):
<form action="verif.php" method="post">
Login : <input type="text" name="nom" size="20" /><br />
Mot de passe : <input type="text" name="mdp" size="20" /> <br />
<input type="submit" name="submit" value="Valider">
</form>
Ce qui affichera à l'écran :
Login : Mot de passe : Valider
Et la page pour récupérer les valeurs sera donc "verif.php"... Mais avant de vous expliquer comment les récupérer, je vais vous expliquer 2 méthodes pour les récupérer.
La première méthode est la méthode "post" (<form action="verif.php" method="post">). Mais il en existe une autre, la méthode "get" (<form action="verif.php" method="get">).
La différence entre ces deux méthodes est le fait que la méthode GET passe les valeurs dans l'url tandis que le POST passe de façon invisible.
Par exemple, reprenons le premier exemple. Avec la méthode POST, l'url serait : www.monsite.com/verif.php et les données passeraient de façon invisible sur cette page. Tandis qu'avec la méthode GET, l'url serait : www.monsite.com/verif.php?login=monlogin&mdp=motdepasse&submit=Valider ou les valeurs du formulaire seraient : monlogin et motdepasse.
Revenons au début pour récupérer nos valeurs... Pour ce fait, cela dépendra de la méthode que l'on utilise... Pour la méthode GET, la page verif.php sera :
<?php
//On récupère les valeurs et on les place dans les variables $nom et $mdp
$nom = $_GET['login'];
$mdp = $_GET['mdp'];
//Ensuite on affiche
echo 'Votre login est '.$nom.' et votre mot de passe : '.$mdp;
?> On utilise donc $_GET['le_nom_du_champ'] pour récupérer la valeur du champ.
Et pour la méthode POST, cela revient au même sauf que l'on change GET en POST...
<?php
//On récupère les valeurs et on les place dans les variables $nom et $mdp
$nom = $_POST['login'];
$mdp = $_POST['mdp'];
//Ensuite on affiche
echo 'Votre login est '.$nom.' et votre mot de passe : '.$mdp;
?> On utilise donc $_POST['le_nom_du_champ'] pour récupérer la valeur du champ.
Vous venez de constater qu'au niveau du traitement PHP, il n'y a aucune différence majeure entre l'utilisation de la méthode GET et de la méthode POST. Mais alors, comment choisir ?
La différence la plus visible entre la méthode GET et la méthode POST vient du fait qu'avec la méthode GET les paramètres sont passés (et visibles) dans l'URL alors qu'avec la méthode POST les paramètres sont passés en complément de l'URL (et non visibles).
Si vous souhaitez appeler directement une page (un script) en passant des paramètres (il ne s'agit alors pas d'un formulaire) vous serez contraint d'utiliser un lien du style monscript.php?param1=valeur1&param2=valeur2. Dans ce cas, vous n'aurez donc aucune autre solution que d'utiliser (implicitement) la méthode GET. Déterminer si une variable est affectée :
isset()Détermine si une variable est affectée
bool isset ( mixed var , mixed var , ... ) isset renvoie TRUE si la variable var est définie, FALSE sinon. <?php
//on teste si les variables login et mdp sont affectées
if(isset($_POST['login']) & isset($_POST['mdp'])){
//On récupère les valeurs et on les place dans les variables $nom et $mdp
$nom = $_POST['login'];
$mdp = $_POST['mdp'];
//Ensuite on affiche
echo 'Votre login est '.$nom.' et votre mot de passe : '.$mdp;
}
else{
echo 'Votre login ou votre mot de passe ne sont pas renseignés';
?> Déterminer si une variable contient une valeur non nulle :
empty()Détermine si une variable contient une valeur non nulle
bool empty ( mixed var ) empty() renvoie TRUE si la variable est nulle, False sinon
<?php
//on teste si la variable login contient une valeur non nulle
if(empty($_POST['login']))
echo 'votre login n'est pas renseigné';
....
COMPLÉMENTS SUR LES FORMULAIRES
Liste déroulante
La balise <SELECT></SELECT> indique au navigateur l'usage d'une liste déroulante. Les éléments de la liste sont introduits par la balise <OPTION></OPTION>.
<FORM>
<SELECT name="nom" size="1">
<OPTION>lundi
<OPTION>mardi
<OPTION>mercredi
<OPTION>jeudi
<OPTION>vendredi
</SELECT>
</FORM>
L'attribut name="nom" définit le nom de la liste déroulante. L'attribut size="x" détermine le nombre d'éléments de liste affiché dans la boite d'entrée. En fait, size="1" est optionnel car "1" est la valeur par défaut.
Les boutons radio (choix unique)
La variable PHP construite avec name reçoit la valeur (value) associée au bouton sélectionné. Code <form action="php-formulaire.php" method="post">
<h4>Quel est votre niveau en programmation ?</h4>
<input type="radio" name="niveau"
value="débutant">débutant
<input type="radio" name="niveau" value="moyen"
checked>moyen
<input type="radio" name="niveau" value="expert">expert
<P>
<input type="submit" value="Valider">
</form>
<?php
echo "Etes vous sûr(e) d'avoir le niveau $_POST['niveau']
?"
?>
Exécution
Quel est votre niveau en programmation ?
débutant moyen expert Etes vous sûr(e) d'avoir le niveau ?
Le principe est identique pour les listes déroulantes à choix unique.
Les cases à cocher (choix multiple)
PHP considère les checkbox ainsi que les listes déroulantes à choix multiple comme un tableau. C'est pour cette raison qu'il est nécessaire de déclarer un nom de variable suivi de crochets dans l'attribut name d'un champ input type="checkbox" :
code <form action="formulaire.php" method="get">
<h2>Vous programmez en :</h2>
<input type="checkbox" name="site[]" value="HTML"> HTML
<input type="checkbox" name="site[]" value="PHP"> PHP
<input type="checkbox" name="site[]" value="Java"> JAVA
<input type="submit" value="valider" >
</form>
<?php
foreach ($_GET['site'] as $choix) {
echo "<p>Choix utilisateur : ".$choix."</p>";
}
?>
Il faut savoir que la variable $site est un tableau et qu'elle contient uniquement les valeurs que l'utilisateur à cocher. Il existe plusieurs solutions pour traiter les données d'un tableau :
1 – la solution classique
$site=$_GET['site'];
for ($i=0; $i<count($site); $i++) {
echo "<p>".$site[$i]."</p>";
}
On fait une boucle permettant de parcourir la totalité du tableau, et on affiche les éléments trouvés .
2 – la commande foreach
foreach ($_GET['site'] as $choix) {
echo "<p>Choix utilisateur : ".$choix."</p>";
}
PHP 4 introduit une commande foreach, comme en Perl ou d'autres langages. C'est un moyen simple de passer en revue un tableau. A chaque itération, la valeur de l'élément courant est assignée à $choix et le pointeur interne de tableau est avancé d'un élément (ce qui fait qu'à la prochaine itération, on accédera à l'élément suivant).
TRAVAIL A FAIRE :
Partie 1 :
1 – Présenter le formulaire inscription.php . Les données saisies dans le formulaire devront s'inscrire dans le cadre « fiche de renseignements ».
2 – Pour la date de naissance utiliser une boucle pour initialiser les jours et les années, déclarer un tableau contenant tous les mois de l'année pour initialiser les mois.
3 – Pour les départements, la liste déroulante va contenir tous les départements d'île de France.
4 – Utiliser les méthodes GET et POST pour transmettre les données.
5 – Consulter la documentation PHP, pour vérifier que la date saisie par l'utilisateur est valide, par exemple la saisie du 30 février 1975 devra afficher un message d'erreur.
Partie 2 :
La tendance actuelle en matière web pousse à séparer les données, la programmation et l’apparence. Les styles CSS par exemple, contribuent à développer selon ce modèle.
A notre niveau, voyons comment appeler une fonction PHP qui sera utilisée dans une ou plusieurs pages. Le principe
Afin de simplifier la maintenance et optimiser le chargement du code, les fonctions ou les classes sont sorties de la page concernée et intégrée dans une page PHP pure. Cette dernière est appelée par chaque page web qui en a besoin.
Dans la pratique, on crée un répertoire à la racine de notre site qui contiendra toutes nos classes et nos différentes fonctions à inclure. Nommons­le /conf par exemple.
Dans ce répertoire, créons un fichier appelé function.php qui contiendra toutes nos fonctions.
Ce fichier sera de la forme:
<?php
function FONCTION1 {
Code1 ici …
…
}
?>
A présent, il suffit d’insérer le code suivant dans nos pages PHP ­ en principe au début de la page:
<?php include("conf/function.php"); ?> ­ Ecrire les fonctions permettant de présenter une liste déroulante pour la date de naissance ( afficheDate() ) et pour les départements d'Ile de France ( afficheDepartement() ). Utiliser ces 2 fonctions dans votre formulaire.
Partie 3 : Présenter le formulaire en CSS
A rendre compte rendu avec le code HTML­PHP­CSS des parties 1,2 et 3.

Documents pareils