======Traitement d'un formulaire en PHP======
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.
=====Page du formulaire=====
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).
Connaitre le visiteur
Une page pour faire connaissance
Bonjour,
j'aimerai vous connaître
=====Variables et instructions utiles en PHP=====
**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)].
L'instruction **strtoupper(texte)** transforme le texte entièrement en majuscule et **ucwords(texte)** le transforme entièrement en minuscule sauf la 1ere lettre de chaque mot en majuscule.
=====Page de la réponse=====
Elle précisera au visiteur les informations transmises et sera composé de HTML et de PHP.
Connaitre le visiteur
Une page pour faire connaissance
Vous n'avez pas répondu à mes questions et appelé la page directement.
\n";
} else {
echo "\tMerci d'avoir répondu à mes questions.
\n";
echo "\tSi j'ai bien compris :
\n";
echo "\t\t
\n";
printf ("\t\t\t- Vous vous appelez : %s %s
\n", strtoupper($_POST["nom"]), ucwords($_POST["prenom"]));
if ($_POST["nom"] == "") echo "\t\t\t- - en fait vous n'avez pas de nom
\n";
if ($_POST["prenom"] == "") echo "\t\t\t- - en fait vous n'avez pas de prenom
\n";
printf ("\t\t\t- Vous avez : %d ans
\n", $_POST["age"]);
if ($_POST["age"] < 10) echo "\t\t\t- - vous me paressez très jeune ?
\n";
if ($_POST["age"] > 90) echo "\t\t\t- - vous me paressez très vieux ?
\n";
if ($_POST["sexe1"] != $_POST["sexe2"]) echo "\t\t\t- - vous ne semblez pas sur de votre sexe ?
\n";
else switch ($_POST["sexe1"]) {
case "M": echo "\t\t\t- Vous êtes un homme.
\n"; break;
case "F": echo "\t\t\t- Vous êtes une femme.
\n"; break;
default: echo "\t\t\t- Vous ne connaissez pas votre sexe.
\n";
}
echo "\t\t
\n";
}
echo "\t\n";
?>
=====Améliorations=====
Faite calculer l'année de naissance ?
* l'instruction date("j/m/Y") retourne la date sous la forme "JJ/MM/AAAA", date("Y") ne renvoi que l'année. Voir la documentation de l'instruction pour obtenir plus d'information sur les dates et heures.