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 : </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 : </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> </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 : </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>
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> </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> </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>
Aucun commentaire:
Enregistrer un commentaire