Outils pour utilisateurs

Outils du site


clubinfo:php2

Ceci est une ancienne révision du document !


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).

formulaire.html
<!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 -->

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)].

Page de la réponse

Elle précisera au visiteur les informations transmises et sera composé de HTML et de PHP.

reponse.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["prenom"]));
    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 connaissez pas votre sexe.</li>\n";
    }
    echo "\t\t</ul>\n";
  }
  echo "\t</p>\n";
?>
  </body>
</html>
clubinfo/php2.1723975180.txt.gz · Dernière modification: 2024/08/18 11:59 de mrcjl