MYSQL et PHP – driver – pilote – exercices corriges
Exercice
1:
Créer
un script permettant d’afficher le contenu de la table modele dans un tableau
HTML. Les résultats doivent être triés par marque.
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>Lecture
de la table modele</title>
<style type="text/css" >
table {border-style:double;border-width:
3px;border-color:
blue;background-color: #FFCCEE;}
</style>
</head>
<body>
<?php
include("connex.inc.php");
$idcom=connex("voitures","myparam");
$requete="SELECT * FROM modele ORDER
BY modele";
$result=@mysql_query($requete,$idcom);
if(!$result)
{
echo "Lecture impossible";
}
else
{
$nbcol=mysql_num_fields($result);
$nbmod=mysql_num_rows($result);
echo
"<h3> Tous les $nbmod modèles de voitures</h3>";
echo "<table border=\"1\">";
echo "<th>Type du modele</th>
<th>Marque et modèle</th>
<th>Carburant</th>";
while($ligne=mysql_fetch_array($result,MYSQL_NUM))
{
echo "<tr>";
foreach($ligne as $valeur)
{
echo "<td> $valeur </td>";
}
echo "</tr>";
}
echo
"</table>";
}
?>
</body>
</html>
Exercice 2:
Créer un formulaire permettant l’insertion de nouvelles données dans
la table modele.
Solution
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>Saisissez les caractéristiques du modèle</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-
8859-1">
</head>
<body>
<form action= "<?php echo
$_SERVER['PHP_SELF'];?>" method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Vos coordonnées</b></legend>
<table>
<tr><td>Code du type : </td><td><input
type="text" name="id_modele"
size="40"
maxlength="10"/></td></tr>
<tr><td>Marque et modèle :
</td><td><input type="text"
name="modele" size="40"
maxlength="30"/></td></tr>
<tr><td>Carburant : </td>
<td><select name="carburant">
<option value="essence">Essence</option>
<option value="diesel">Diesel</option>
<option
value="électrique">Electrique</option>
</select></td>
</tr>
<tr>
<td><input type="reset" value=" Effacer
"></td>
<td><input type="submit" value=" Envoyer
"></td>
</tr>
</table>
</fieldset>
</form>
<?php
include('connex.inc.php');
if(!empty($_POST['id_modele'])&&
!empty($_POST['modele'])&&
!empty($_POST['carburant']))
{
$id_modele=mysql_escape_string($_POST['id_modele']);
$modele=mysql_escape_string($_POST['modele']);
$carburant=mysql_escape_string($_POST['carburant']);
//Requète
SQL
$requete="INSERT
INTO modele
VALUES('$id_modele','$modele','$carburant')";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
if(!$result)
{
echo
mysql_errno();
echo
mysql_error();
echo
"<script type=\"text/javascript\">
alert('Erreur
: ".mysql_error()."')</script>";
}
else
{
echo
"<script type=\"text/javascript\">";
echo
"alert('Le modèle est enregistré ')</script>";
}
}
else
{echo "<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Exercice 3:
Créer un formulaire permettant l’insertion simultanée des coordonnées
d’une personne dans les tables propriétaire et carte grise. Il doit contenir
les zones de saisie des coordonnées de la personne et la liste des modèles d’une
marque créée dynamiquement à partir de la saisie de la marque.
Notez qu’il s’agit bien d’un exercice d’insertion de données dans plusieurs
tables, et que la gestion de la situation réelle serait plus complexe car il
faudrait s’assurer que la personne ne figure pas déjà dans la table « propriétaire
», donc parcourir toute cette table. L’insertion des données se fait également
dans la table « voiture »
Solution
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>Saisissez les caractéristiques du
modèle</title>
<meta
http-equiv="Content-Type" content="text/html; charset=ISO-
8859-1">
</head>
<body>
<form
action= "<?php echo $_SERVER['PHP_SELF'];?>" name="form1"
method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Enregistrement
d'un véhicule</legend>
<table>
<tr
colspan="2"><td><b>Propriétaire</td></tr>
<tr><td>Nom
: </td><td><input type="text" name="nom"
size="40"
maxlength="10"/></td></tr>
<tr><td>Prénom
: </td><td><input type="text" name="prenom"
size="40"
maxlength="30"/></td></tr>
<tr><td>Adresse
: </td><td><input type="text" name="adresse"
size="40"
maxlength="30"/></td></tr>
<tr><td>Ville
: </td><td><input type="text" name="ville"
size="40"
maxlength="30"/></td></tr>
<tr><td>Code
postal : </td><td><input type="text"
name="codepostal"
size="40"
maxlength="5"/></td></tr>
<tr
colspan="2"><td><b>Modèle</td></tr>
<tr><td>Marque
: </td><td><input type="text" name="marque"
size="40"
maxlength="30" />
<input
type="submit" name ="cherchemod" value=" Chercher les
modèles
" /></td>
</tr>
<?php
if(isset($_POST['cherchemod']))
{
include_once('connex.inc.php');
$marque=mysql_escape_string($_POST['marque']);
//Requète
SQL
$requete="SELECT
DISTINCT id_modele,modele FROM modele WHERE
modele
LIKE '%$marque%'";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
echo
"<tr><td>Les modèles</td> <td><select
name=\"id_modele\">";
while($ligne=mysql_fetch_array($result,MYSQL_NUM))
{
echo
" <option
value=\"$ligne[0]\">$ligne[1]</option>";
}
echo
"</select></td></tr>";
}
?>
<tr><td>Carburant
: </td>
<td><select
name="carburant">
<option
value="essence">Essence</option>
<option
value="diesel">Diesel</option>
<option
value="électrique">Electrique</option>
</select></td>
</tr>
<tr
colspan="2"><td><b>Voiture</td></tr>
<tr>
<td>Numéro
d'immatriculation</td>
<td><input
type="text" name="immat" /></td>
</tr>
<tr><td>Couleur
: </td>
<td><select
name="couleur">
<option
value="claire">Claire</option>
<option
value="moyenne">Moyenne</option>
<option
value="foncée">Foncée</option>
</select></td>
</tr>
<tr>
<td>Date
1ere immatriculation AAAA-MM-JJ</td>
<td><input
type="text" name="datevoiture" /></td>
</tr>
<td>Date
de la carte grise AAAA-MM-JJ</td>
<td><input
type="text" name="datecarte" /></td>
</tr>
<tr>
<td><input
type="reset" value=" Effacer " /></td>
<td><input
type="submit" value="ENREGISTRER" name="enreg"
/></td>
</tr>
</table>
</fieldset>
</form>
<?php
include_once('connex.inc.php');
if(isset($_POST['enreg']))
{
//Récupération
des valeurs du formulaire
$id_modele=mysql_escape_string($_POST['id_modele']);
$carburant=mysql_escape_string($_POST['carburant']);
$immat=mysql_escape_string($_POST['immat']);
$couleur=mysql_escape_string($_POST['couleur']);
$datevoiture=mysql_escape_string($_POST['datevoiture']);
$datecarte=mysql_escape_string($_POST['datecarte']);
$nom=mysql_escape_string($_POST['nom']);
$prenom=mysql_escape_string($_POST['prenom']);
$adresse=mysql_escape_string($_POST['adresse']);
$ville=mysql_escape_string($_POST['ville']);
$codepostal=mysql_escape_string($_POST['codepostal']);
//Connexion
$idcom=connex('voitures','myparam');
//Requète
SQL: insertions dans la table voiture
$requete="INSERT
INTO voiture
VALUES('$immat','$id_modele','$couleur','$datevoiture')";
$result1=mysql_query($requete,$idcom);
//Requète
SQL: insertions dans la table proprietaire
$requete="INSERT
INTO proprietaire
VALUES('','$nom','$prenom','$adresse','$ville','$codepostal')";
$result2=mysql_query($requete,$idcom);
$id_pers=mysql_insert_id($idcom);
//Requète
SQL: insertions dans la table cartegrise
$requete="INSERT
INTO cartegrise
VALUES('$id_pers','$immat','$datecarte')";
$result3=mysql_query($requete,$idcom);
//Requète
SQL: insertions dans la table
if(!$result1)
{
echo
mysql_errno();
echo
mysql_error();
echo
"<script type=\"text/javascript\">
alert('Erreur
: ".mysql_error()."')</script>";
}
else
{
echo
"<script type=\"text/javascript\">";
echo
"alert('La carte grise est enregistrée ')</script>";
}
}
else
{"<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Exercice 4:
Créer un formulaire de recherche permettant de retrouver tous les propriétaires
d’un type de véhicule de marque et de modèle donnés. Afficher les résultats
sous forme de tableau HTML.
Solution
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>Recherche des propriétaires d'un modèle</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-
8859-1">
</head>
<body>
<form action= "<?php echo
$_SERVER['PHP_SELF'];?>" name="form1"
method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Choisir le modèle</legend>
<table>
<tr><td>Marque et modèle</td><td><input
type="text" name="modele"
maxlength=" " /></td></tr>
<td><input type="submit"
value="Chercher" /></td>
</tr>
</table>
</fieldset>
</form>
<?php
if(isset($_POST['modele']))
{
include_once('connex.inc.php');
$modele=mysql_escape_string($_POST['modele']);
//Requète SQL
$requete="SELECT proprietaire.nom,proprietaire.prenom FROM
voiture,modele,proprietaire,cartegrise WHERE modele LIKE
'%$modele%' AND voiture.id_modele=modele.id_modele AND
cartegrise.immat=voiture.immat AND
proprietaire.id_pers=cartegrise.id_pers";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
echo "<table border=\"1\" >";
while($ligne=mysql_fetch_array($result,MYSQL_NUM))
{
echo " <tr><td>$ligne[0]</td><td>
$ligne[1]</td>";
}
echo "</table>";
}
else {"<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Exercice 5:
Créer un formulaire de recherche permettant de retrouver tous les véhicules
possédés par une personne donnée. Afficher les résultats sous forme de tableau
HTML.
Solution
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>Recherche des voitures d'une personne</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-
8859-1">
</head>
<body>
<form action= "<?php echo
$_SERVER['PHP_SELF'];?>" name="form1"
method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Coordonnées de la personne</legend>
<table>
<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>
<td><input type="submit"
value="Chercher" /></td>
</tr>
</table>
</fieldset>
</form>
<?php
if(isset($_POST['nom']) && isset($_POST['prenom']))
{
include_once('connex.inc.php');
$nom=mysql_escape_string($_POST['nom']);
$prenom=mysql_escape_string($_POST['prenom']);
//Requète SQL
$requete="SELECT voiture.immat,modele.modele FROM
voiture,modele,proprietaire,cartegrise WHERE
proprietaire.nom='$nom' AND proprietaire.prenom='$prenom' AND
proprietaire.id_pers=cartegrise.id_pers AND
voiture.id_modele=modele.id_modele AND
cartegrise.immat=voiture.immat";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
echo "<h3>Liste des véhicules de $prenom $nom
</h3>";
echo "<table border=\"1\" >";
while($ligne=mysql_fetch_array($result,MYSQL_NUM))
{
echo " <tr><td> ",$ligne[0],"
75 </td><td> ",
$ligne[1]," </td>";
}
echo "</table>";
}
else {"<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Le formulaire de recherche et un exemple de résultats obtenus :
Exercice 6:
Réécrire entièrement le code de l’exercice 5 en récupérant tous les
résultats dans des objets et en manipulant leurs propriétés.
Les seules modifications sont dans l’utilisation de la fonction mysql_fetch_object()
(repère 1)
et dans la lecture des résultats (repère 2)
Solution
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>Recherche des voitures d'une personne</title>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-
8859-1">
</head>
<body>
<form action= "<?php echo
$_SERVER['PHP_SELF'];?>" name="form1"
method="post"
enctype="application/x-www-form-urlencoded">
<fieldset>
<legend><b>Coordonnées
de la personne</legend>
<table>
<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>
<td><input
type="submit" value="Chercher" /></td>
</tr>
</table>
</fieldset>
</form>
<?php
if(isset($_POST['nom'])
&& isset($_POST['prenom']))
{
include_once('connex.inc.php');
$nom=mysql_escape_string($_POST['nom']);
$prenom=mysql_escape_string($_POST['prenom']);
//Requète
SQL
$requete="SELECT
voiture.immat,modele.modele FROM
voiture,modele,proprietaire,cartegrise
WHERE
proprietaire.nom='$nom'
AND proprietaire.prenom='$prenom' AND
proprietaire.id_pers=cartegrise.id_pers
AND
voiture.id_modele=modele.id_modele
AND
cartegrise.immat=voiture.immat";
$idcom=connex('voitures','myparam');
$result=mysql_query($requete,$idcom);
echo
"<h3>Liste des véhicules de $prenom $nom </h3>";
echo
"<table border=\"1\" >";
while($ligne=mysql_fetch_object($result))1
{
echo
" <tr><td> ",$ligne->immat," 75
</td><td> ",
$ligne->modele," </td>";2
}
echo
"</table>";
}
else
{"<h3>Formulaire à compléter!</h3>";}
?>
</body>
</html>
Aucun commentaire:
Enregistrer un commentaire