Les formulaires en php – exercices corrigés formulaire php5

les formulaires en php – exercices corrigés formulaire php5

Exercice 1:

Créer un formulaire comprenant un groupe de champs ayant pour titre "Adresse client". Le groupe doit permettre la saisie du nom, du prénom, de l’adresse, de la ville et du code postal. Les
données sont ensuite traitées par un fichier PHP séparé récupérant les données et les affichant dans un tableau HTML.

Solution


Le formulaire est le fichier ch6exo1.htm qui ne contient que du code HTML.



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 1</title>
</head>
<body>
<form action="ch6exo1.php" method="post">
  <fieldset>
    <legend><b>Saisissez vos coordonnées </b></legend>
<table border="0" >
  <tr>
    <td>Nom : </td>
    <td><input type="text" name="nom" /></td>
  </tr>
  <tr>
    <td>Prénom : </td>
    <td> <input type="text" name="prenom" /></td>
  </tr>
  <tr>
    <td>Adresse : </td>
    <td><input type="text" name="adresse" /></td>
  </tr>
  <tr>
    <td>Ville :</td>
    <td><input type="text" name="ville" /></td>
  </tr>
  <tr>
    <td>Code postal :</td>
    <td><input type="text" name="code" maxlength="5"/></td>
  </tr>
  <tr>
    <td>CONFIRMER</td>
    <td><input type="submit" value="ENVOI" /></td>
  </tr>
</table>
  </fieldset>
  </form>
</body>
</html>



Le fichier ch6exo1.php de traitement des données est un fichier PHP.


<?php
echo "<table border=\"1\" >";
echo "<caption><b>Confirmation de vos coordonnées</b></caption>";
foreach($_POST as $cle=>$val)
{
echo "<tr> <td> $cle : &nbsp;</td> <td>".stripslashes($val)
."</td></tr>";
}
echo "</table>";
?>

La fonction stripslashes() permet de supprimer le caractère d’échappement \ qui est automatiquement ajouté dans les chaînes saisies. Si on ne l’utilise pas on obtient dans l’exemple suivant l’affichage « l\'Odéon » au lieu de « l'Odéon » . Le résultat obtenu est le suivant :



Exercice 2:



Améliorer le script précédent en vérifiant l’existence des données et en affichant une boîte d’alerte JavaScript si l’une des données est manquante.

Le fichier ch6exo2.htm est identique au fichier ch6exo1.htm mis à part la ligne :


Solution



<form action="ch6exo2.php" method="post">

qui désigne le fichier de traitement ch6exo2.php. 

Le fichier ch6exo2.php de traitement des données :

<?php
if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND
!empty($_POST['adresse']) AND !empty($_POST['ville']) AND
!empty($_POST['code']))
{
 echo "<table border=\"1\" >";
 echo "<caption><b>Confirmation de vos coordonnées
2</b></caption>";
 foreach($_POST as $cle=>$val)
{
 echo "<tr> <td> $cle : &nbsp;</td> <td>".stripslashes($val)
."</td></tr>";
}
 echo "</table>";
}
else
{
 echo "<script type=\"text/javascript\">alert('Le formulaire est
incomplet');document.location='ch6exo2.htm' </script>";
}
?>

Exercice 3:


Le fichier suivant peut-il être enregistré avec l’extension .php ou .htm ? Où se fait le traitement des données?


Solution

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 //EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title> Insertion des données </title>
</head>
<body>
<form method="post" action="ajout.php" >
//Suite du formulaire
</form>
</body>
</html>

Le fichier ne contient que du code HTML, il peut donc être enregistré avec l’extension .htm. Il peut cependant être enregistré avec l’extension .php mais cela est inutile. le traitement des données saisies est fait par le code PHP du fichier externe « ajout.php ». 

Exercice 4:


Comment faire pour que les données soient traitées par le même fichier que celui qui contient le formulaire ? Proposer deux solutions.

Solution

Première solution : l’attribut action de l’élément <form> doit contenir le nom du fichier qui crée le formulaire.

Deuxième solution : l’attribut action de l’élément <form> contient le code suivant :

action= "<?= $_SERVER["PHP_SELF"] ?>"


Exercice 5:


Créer un formulaire de saisie d’adresse e-mail contenant un champ caché destiné à récupérer le type du navigateur de l’utilisateur. Le code PHP affiche l’adresse mail et le nom du navigateur dans la même page après vérification de l’existence des données.

La page de saisie du mail et de traitement des données (fichier ch6exo5.php) :

Solution





<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 5</title>
</head>
<body>
<form action="ch6exo5.php" method="post">
  <fieldset>
   <legend><b>Saisissez votre e-mail </b></legend>
<table border="0" >
   <tr>
     <td>mail : </td>
     <td><input type="text" name="mail" /><input type="hidden"
name="navigateur" value="<?= $_SERVER['HTTP_USER_AGENT'] ?>"/></td>
   </tr>
   <tr>
      <td>&nbsp;</td>
      <td><input type="submit" value="ENVOI" /></td>
   </tr>
</table>
  </fieldset>
  </form>
  <?php
if(!empty($_POST['mail']) AND !empty($_POST['navigateur']) )
{
  echo "<table border=\"1\" >";
  echo "<caption><b>Votre mail et votre navigateur</b></caption>";
  foreach($_POST as $cle=>$val)
  {
  echo "<tr> <td> $cle : &nbsp;</td> <td>".stripslashes($val)
."</td></tr>";
}
  echo "</table>";
}
else
{
  echo "<script type=\"text/javascript\">alert('Le formulaire est incomplet');document.location='ch6exo5.php' </script>";
}
?>
</body>
</html>


Résultat obtenu :


Exercice 6 :




Créer un formulaire demandant la saisie d’un prix HT et d’un taux de TVA. Le script affiche le montant de la TVA et le prix TTC dans deux zones de texte créées dynamiquement. Le formulaire maintient les données saisies.


Solution




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 5</title>
</head>
<body>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
  <fieldset>
    <legend><b>Saisissez le prix HT et le taux de TVA </b></legend>
    <table border="0" >
     <tr>
       <td>Prix Hors Taxes : </td>
       <td><input type="text" name="prixht" value="<?=
$_POST['prixht']?>" /></td>
    </tr>
    <tr>
       <td>Taux de TVA (en %) : </td>
       <td><input type="text" name="tva" value="<?=
$_POST['tva']?>"/></td>
    </tr>
<?php
if(!empty($_POST['prixht']) AND !empty($_POST['tva']) )
{
  echo "<tr><td>Montant de la TVA : </td><td><input type=\"text\"
value=\"".round($_POST['prixht']*$_POST['tva']/100,2)
."\"/></td></tr>";
  echo "<tr><td>Prix TTC : </td><td><input type=\"text\"
value=\"".round($_POST['prixht']*(1+$_POST['tva']/100),2)
."\"/></td></tr>";
}
else
{
  echo "<b>Le formulaire est incomplet!</b>";
}
?>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" value="ENVOI" /></td>
    </tr>
   </table>
  </fieldset>
  </form>
</body>
</html>



Exercice 7:


Créer un formulaire n’effectuant que le transfert de fichiers ZIP et d’une taille limitée à 1 Mo. Le script affiche le nom du fichier du poste client ainsi que la taille du fichier transféré et la confirmation de réception.


 

Solution



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 7</title>
</head>
<body>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"
enctype="multipart/form-data">
  <fieldset>
    <legend><b>Transférez un fichier ZIP </b></legend>
<table border="0" >
  <tr>
      <td>Choisissez un fichier </td>
      <td><input type="file" name="fich" /></td>
      <td><input    type="hidden" name="MAX_FILE_SIZE"
accept="application/zip" value="1000000"/></td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input    type="submit" value="ENVOI" /></td>
    </tr>
</table>
  </fieldset>
  </form>
</body>
</html>

<?php
if(isset($_FILES['fich']))
{
  if($_POST["MAX_FILE_SIZE"] <$_FILES["fich"]["size"])
  {
   echo "<b>Taille trop grande </b><hr />";
echo "Taille maximale autorisée :",$_POST["MAX_FILE_SIZE"],"
octets<hr / >";
   echo "Taille du fichier transféré :",$_FILES["fich"]["size"],"
octets<hr / >";
  }
  else
  {
    //Enregistrement et renommage du fichier
$result=move_uploaded_file($_FILES["fich"]["tmp_name"],"monfichier.
zip");
if($result==TRUE)
{
  echo "<b>Vous avez bien transféré le fichier</b><hr />";
  echo "Le nom du fichier est : ",$_FILES["fich"]["name"],"<hr
/>";
     echo "Votre fichier a une taille de
",$_FILES["fich"]["size"],"<hr />";
}  
   else {echo "<hr /> Erreur de transfert
n°",$_FILES["fich"]["error"];}
  }
}
?>

Exercice 8:


Dans la perspective de création d’un site d’agence immobilière, créer un formulaire comprenant trois boutons Submit nommés « Vendre », « Acheter » et « Louer». En fonction du choix effectué par le visiteur, le rediriger vers une page spécialisée dont le contenu réponde au critère choisi.


Solution


La page qui crée le formulaire (fichier ch6exo8.php) 


<?php

switch($_POST["choix"])
{
  case "Vendre":
  header("location:pagevente.htm");
  break;
  case "Acheter":
  header("location:pageachat.htm");
  break;
  case "Louer":
  header("location:pagelocation.htm");
  break;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Exercice chapitre 6 n° 8</title>
</head>
<body>
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post" >
  <fieldset>
    <legend><b>Faites votre choix </b></legend>
    <table border="0" >
     <tr>
     <td><input type="submit" name="choix" value="Vendre" /></td>
     <td><input type="submit" name="choix" value="Acheter"
/></td>
     <td><input type="submit" name="choix" value="Louer" /></td>
   </tr>
  </table>
 </fieldset>
</form>
</body>
</html>


Un exemple de page cible d’un bouton d’envoi (fichier pagevente.htm). La méthode JavaScript window.history.back() permet de rediriger le visiteur vers la page précédente.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
    <title> Page des vendeurs immobiliers </title>
  </head>
  <body>
<h1>Vous voulez vendre</h1>
<a href="javascript:window.history.back()">RETOUR</a>
  </body>
</html>

Article plus récent Article plus ancien

Leave a Reply