UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  2. Traitement de simple formulaires avec PHP

2. Traitement de simple formulaires avec PHP

2.1 Traitement de formulaires avec PHP I (Calcul)

Exemple 2-1: Un simple quiz et POST vers un autre fichier PHP

 

 

 

 

 

Le formulaire HTML (seulement une partie):
<form action="calcul.php"
 method=post>

Quelles sont vos connaissances de HTML ?
<input type="radio" name="choice" value="1"
 checked>faibles
<input type="radio" name="choice" value="2">moyennes
<input type="radio" name="choice" value="3">bonnes
<br>
Indiquez votre expertise en programmation:
<input type="radio" name="choice2" value="1"
 checked>absente
<input type="radio" name="choice2" value="2">moyenne
<input type="radio" name="choice2" value="3">bonne
<P>
<input type="submit" value="Voir le résultat!">
</form>

 

A. La récupération des variables d'un formulaire

Exemple:

B. Calcul et affichage des résultats

 

Voici le code:

<?
$score = $choice + $choice2;
echo("<h3>Votre score est de $score </h3>");
if ($score < 3) {
  echo ("<p>Vous &ecirc;tes un d&eacute;butant</p>");
} elseif ($score < 5) {
  echo ("<p>Vous avez un niveau moyen</p>");
} else {
  echo ("<p>Vous êtes un expert !</p>");
}
?>

A retenir:

Exercice 1: Prévoir l'accès direct à cette page PHP (sans données)

2.2 Traitement de formulaires avec PHP II

Exemple 2-2: Checkboxes avec PHP - arrays

Voici un extrait du formulaire html:
<form action="calcul4.php
" method=post>
Quels sont vos couleurs préféres?
<br>
<input type="checkbox
" name="choice[]
" value="Red">Red
<table bgcolor="red" width="50"><tr><td>&nbsp;</td></tr></table>
 
<input type="checkbox" name="choice[]
" value="Blue">Blue
<table bgcolor="blue" width="50"><tr><td>&nbsp;</td></tr></table>
 
<input type="checkbox" name="choice[]
" value="Green">Green
<table bgcolor="green" width="50"><tr><td>&nbsp;</td></tr></table>
.....
<input type="checkbox" name="choice[]
" value="Black">Black
<table bgcolor="black" width="50"><tr><td>&nbsp;</td></tr></table>
 
<input type="submit" value="Voir le résultat!">
</form>
  • Notez bien la syntaxe pour stocker les choix dans un array: "choice[]"
Voici le code php qui traite le formulaire:
 
<?
echo("<h3>Vos couleurs préférées sont </h3>");
 
for ($i=0;$i<sizeof($choice);$i++) {
    if (isset($choice[$i]
)) {
       echo("$choice[$i]
 - ");
    }
}
?>
 

Exemple 2-3: Checkboxes avec PHP - multiples variables

 

Voici un extrait du code HTML:
<form action="calcul3.php
" method=post>
Quels sont vos couleurs préféres?
<input type="checkbox" name="choice1
" value="Red">Red
<table bgcolor="red" width="50"><tr><td>&nbsp;</td></tr></table>
 
<input type="checkbox" name="choice2
" value="Blue">Blue
<table bgcolor="blue" width="50"><tr><td>&nbsp;</td></tr></table>
.....
<input type="checkbox" name="choice6
" value="Black">Black
<table bgcolor="black" width="50"><tr><td>&nbsp;</td></tr></table>
<input type="submit" value="Voir le résultat!">
</form>
Voici un extrait du code PHP:
<?
echo("<h3>Vos couleurs préférées sont </h3>");
 
if (isset($choice1)) {echo("$choice1
 - ");}
if (isset($choice2)) {echo("$choice2
 - ");}
if (isset($choice3)) {echo("$choice3 - ");}
if (isset($choice4)) {echo("$choice4 - ");}
if (isset($choice5)) {echo("$choice5 - ");}
if (isset($choice6)) {echo("$choice6
");}
?>

2.3 Traitement de formulaires avec PHP III

Exemple 2-4: Prix calcul d'une voiture avec le même fichier PHP

A. Le formulaire HTML (seulement une partie):

<FORM METHOD="POST" ACTION="<? echo $PHP_SELF ?>"
>
      ........
      <br>
      Entrez le cout de votre assurance/ Insurance<br>
      <input type="text" name=assurance size=8 value=0><br>

      Entrez le prix que vous ont coûté vos accidents / Accidents<br>
      <input type="text" size=8 name=accidents value=0><br>
........
      Entrez le coût de vos amendes ... / fines<br>
      <input type="text" size=8 name=amendes
 value=0><br>
      Votre Nom / Your name
      <input type="text" size=40 name=nom><br>
      <HR width=250><BR>
      <input type="submit" value="Alors / Let's see !?!" name="process"
>
  </FORM>
  </center>

B. A retenir (pour la suite)

C. Comment traiter la requête venant d'une page par la même page ?


<? 
if (!isset($process)) {
?>

//... ici on affiche le formulaire (directement en HTML)
//    uniquement si $process = FALSE.

  <FORM METHOD="POST" ACTION="<? echo $PHP_SELF ?>">
  .....
  </FORM>

<?

} else {

//... ici on effectue les calculs
}

?>

A retenir:

D. Calcul et affichage des résultats

Voici le code:

// calculate the cost per month

$cost = round(((((((($accidents + $assurance) + (((($consokilo / 100.0) * $kilomois) * $prixcarbu) * 12.0)) + $vignette) + $tcs) + $autoroutes) + $entretien) + $amendes) / 12.0);

echo "<h2>Resultat/Result</h2>";

// print the name if we got one
if ($nom) { echo "$nom, votre "; } else { echo "Votre ";}

// print the results
echo "bagnole vous coutera environ $cost francs par mois / Your car costs about $cost Swiss francs/month.<p>";

// give a short comment
  if ($cost < 10) {
   $evaluation = "Heh c'est pas sérieux / Mhh this doesn't look serious !";
   }
  elseif ($cost < 400.0) {
   $evaluation = "Vous en sortez bien / This is fine :)";
   }
  else {
   $evaluation = "Vous ne vous en sortez pas bien, pensez aux transports communs / You pay quite a lot!";
   }
echo "$evaluation <p>";

E. A retenir:

F. Si c'était trop compliqué:

Voir la version intégrée de l' See Un simple quiz et POST vers un autre fichier PHP:

Exemple 2-5: Un simple quiz et POST vers le même fichier PHP

2.4 Tester l'existence de variables et valeurs POST/GET

Dans PHP vous pouvez tester si une variable "POST/GET" existe ou si elle a une valeur non-zéro ou non-vide (string):

2 méthodes
  1. "isset" pour voir si une variable existe:
    • utiliser pour décider s'il faut afficher un formulaire ou traiter le formulaire
if (isset($traiter) ) { .... faire ....}
  1. "empty" pour tester si une variable est zéro, vide ou inexistante
    • utiliser pour décider si l'utilisateur a rempli un champs ou clické sur un bouton
if (empty ($input) ) { ... ne rien faire} else { ... faire ...}

UP PREVIOUS NEXT -- TIE