Ceci est une ancienne révision du document !
Nous avons vu qu'il était possible à une page HTML de demander des informations aux visiteurs grâce aux formulaires. Les pages HTML étant statiques, il a fallu découvrir le langage PHP pour pouvoir utiliser les informations transmises et générer une page web personnalisée.
Nous allons donc reprendre le formulaire précédent et générer une réponse à celui-ci.
Elle reprend le code vu précédemment et demande le nom, prénom, age et sexe du visiteur (le sexe est demandé par 2 méthodes différentes).
<!DOCTYPE html> <!--Déclaration de la page HTML --> <html lang="fr"> <!-- Début de page écrite en français --> <head> <!-- Début entête --> <meta charset="UTF-8"> <!-- Codage des caractères (important mais sera vu plus tard) --> <title>Connaitre le visiteur</title> <!--link href="style.css" rel="stylesheet" type="text/css" /> <!-- Autre fichier (ici mise en forme) utile à la page --> </head> <!-- Fin de entête --> <body> <!-- Début du corps --> <h1>Une page pour faire connaissance</h1> <p>Bonjour, <br />j'aimerai vous connaître</p> <FORM action="reponse.php" method="POST"> <FIELDSET> <LEGEND>Identité</LEGEND> <LABEL for='n'>Votre nom ? </LABEL><INPUT type="text" name="nom" id='n' size="30" /><BR/> <LABEL for='p'>Votre prénom ? <INPUT type="text" name="prenom" id='p' size="20" /> </FIELDSET> <FIELDSET> <LEGEND>Informations</LEGEND> <LABEL for='a'>Votre age ? </LABEL><INPUT type="text" name="age" id='a' size="3" /><BR/> votre sexe méthode 1 ? <INPUT type="radio" name="sexe1" value="M" id='m' /> <LABEL for='m'>Masculin</LABEL> <INPUT type="radio" name="sexe1" value="F" id='f' /> <LABEL for='f'>Féminin</LABEL> <INPUT type="radio" name="sexe1" value="?" id='i' checked /> <LABEL for='f'>indeterminé</LABEL> <BR/>votre sexe méthode 2 ? <SELECT name="sexe2"> <OPTION value="?" selected>Choisir</OPTION> <OPTION value="M">Masculin</OPTION> <OPTION value="F">Féminin</OPTION> </SELECT> </FIELDSET> <INPUT type="submit" value="Envoyer" name="ok" /> <INPUT type="reset" value="Effacer" /> </FORM> </body> <!-- Fin du corps --> </html> <!-- Fin de la page -->
Les données du formulaire sont transmises dans un tableau $_POST. Il correspond à l'attribut “method” et il contient une liste de variables et leurs valeurs : $_POST[“nom”], $_POST[“prenom”], $_POST[“age”], $_POST[“sexe1”], $_POST[“sexe2”], $_POST[“ok”]. Le nom des variables correspond à la valeur de l'attribut “name” des champs du formulaire.
La validation du formulaire le transmet son contenu à la page indiquée dans son attribut “action” soit “reponse.php” (validation = clic sur “Envoyer”). Si “action='#”“, il sera transmis à la page qui a demandé les informations (même page).
L’existence d'une variable peut être testée par la fonction isset(variable);. Le caractère '!' utilisé en début de condition inverse celle-ci [if (!vrai) = if (faux)].
Elle précisera au visiteur les informations transmises et sera composé de HTML et de PHP.
<!DOCTYPE html> <!--Déclaration de la page HTML -->
<html lang="fr"> <!-- Début de page écrite en français -->
<head> <!-- Début entête -->
<meta charset="UTF-8"> <!-- Codage des caractères (important mais sera vu plus tard) -->
<title>Connaitre le visiteur</title>
<!--link href="style.css" rel="stylesheet" type="text/css" /> <!-- Autre fichier (ici mise en forme) utile à la page -->
</head> <!-- Fin de entête -->
<body> <!-- Début du corps -->
<h1>Une page pour faire connaissance</h1>
<?php
if (! isset ($_POST]["ok"]) {
echo "\t<p>Vous n'avez pas répondu à mes questions et appelé la page directement.</p>\n";
} else {
echo "\t<p>Merci d'avoir répondu à mes questions.</p>\n";
echo "\t<p>Si j'ai bien compris :<br />\n";
echo "\t\t<ul>\n";
printf ("\t\t\t<li>Vous vous appelez : %s %s</li>\n", strtoupper($_POST]["nom"]), ucwords($_POST]["nom"]));
if ($_POST]["nom"] == "") echo "\t\t\t<li> - en fait vous n'avez pas de nom</li>\n";
if ($_POST]["prenom"] == "") echo "\t\t\t<li> - en fait vous n'avez pas de prenom</li>\n";
printf ("\t\t\t<li>Vous avez : %d ans<li>\n", $_POST]["age"]);
if ($_POST]["age"] < 10) echo "\t\t\t<li> - vous me paressez très jeune ?</li>\n";
if ($_POST]["age"] > 90) echo "\t\t\t<li> - vous me paressez très vieux ?</li>\n";
if ($_POST]["sexe1"] != $_POST]["sexe2"]) echo "\t\t\t<li> - vous ne semblez pas sur de votre sexe ?</li>\n";
else switch ($_POST]["sexe1"]) {
case "M": echo "\t\t\t<li>Vous êtes un homme.</li>\n"; break;
case "F": echo "\t\t\t<li>Vous êtes une femme.</li>\n"; break;
default: echo "\t\t\t<li>Vous ne le connaissez pas.</li>\n";
}
echo "\t\t</ul>\n";
}
echo "\t</p>\n";
?>
</body>
</html>