Examen principal- php - correction
Transcript of Examen principal- php - correction
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
1
1 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H
Examen principal : Programmation Web PHP
PROBLEME : Service 2000
Considérant une base de données
VEHICULE_CIRCULATION qui
enregistre les certificats
d’immatriculation des véhicules
en circulation (carte grise). La
base contient 3 tables Modèle,
Voiture et Propriétaire. Elle est
présentée comme l’image ci-
contre.
1) Essayez de créer la base avec les tables nécessaires. La table propriétaire contient
une clé secondaire qui se réfère à la table voiture. La table voiture contient elle-
même une clé secondaire qui est en relation aussi avec la table modèle.
-- ----------------------------
-- Table structure for modele
-- ----------------------------
CREATE TABLE `modele` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`modele` varchar(15) NOT NULL,
`marque` varchar(15) NOT NULL,
`puissance` varchar(15) NOT NULL,
`carburant` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for proprietaire
-- ----------------------------
CREATE TABLE `proprietaire` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NOM` varchar(15) NOT NULL,
`PRENOM` varchar(15) NOT NULL,
`ADRESSE` varchar(50) NOT NULL,
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
2
2 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H `CODE_POSTAL` int(5) NOT NULL,
`VILLE` varchar(15) NOT NULL,
`TEL` int(8) NOT NULL,
`ID_VOITURE` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `fk_id_voiture` (`ID_VOITURE`),
CONSTRAINT `fk_id_voiture` FOREIGN KEY (`ID_VOITURE`) REFERENCES `voiture`
(`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Table structure for voiture
-- ----------------------------
CREATE TABLE `voiture` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`immatriculation` varchar(20) NOT NULL,
`couleur` varchar(15) NOT NULL,
`kilometrage` int(11) NOT NULL,
`id_modele` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_modele` (`id_modele`),
CONSTRAINT `fk_modele` FOREIGN KEY (`id_modele`) REFERENCES `modele` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
2) Essayez de remplir la table Modèle avec les données suivantes :
INSERT INTO `modele` VALUES ('1', '108', 'peugeot', '4CV', 'Essence'); INSERT INTO `modele` VALUES ('2', '508', 'peugeot', '7CV', 'Essence'); INSERT INTO `modele` VALUES ('3', '308', 'peugeot', '4CV', 'Essence'); INSERT INTO `modele` VALUES ('4', 'Megane Coupe', 'renault', '5CV', 'Diesel'); INSERT INTO `modele` VALUES ('5', 'Laguna', 'renault', '6CV', 'Diesel'); INSERT INTO `modele` VALUES ('6', 'Clio', 'renault', '4CV', 'Essence'); INSERT INTO `modele` VALUES ('7', 'Rio', 'Kia', '5CV', 'Essence'); INSERT INTO `modele` VALUES ('8', 'Sorento', 'Kia', '12CV', 'Diesel');
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
3
3 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H 3) Créer un script permettant d’afficher le
contenu de la table modèle dans un
tableau HTML dans une page nommée
liste_modele.php. Les résultats doivent
être triés par marque.
La requête va être sous la forme
« SELECT * FROM modele ORDER BY
marque ».
<html>
<head>
<title>Modèle de Véhicules</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php
// connexion au serveur et à la base scoop
mysql_connect('localhost','root','') or die('Imposible de connecter au serveur');
mysql_select_db('vehicule_circulation') or die('Impossible de connecter à la base
vehicule');
//requete de selection
$sql="select * from modele order by marque";
$resultat=mysql_query($sql);
?>
<body>
<br>
<br>
<br>
<hr width="50%">
<center><h3>Liste des modèles</h3>
<hr width="50%">
</center>
<center><table border="1" >
<th bgcolor="#A5DDFD">Modèle</th><th bgcolor="#A5DDFD">Marque</th><th
bgcolor="#A5DDFD">Puissance</th><th bgcolor="#A5DDFD">Carburant</th>
<?php
//traitement de resultat
while($enreg=mysql_fetch_array($resultat))
{
echo
'<tr><td>'.$enreg['modele'].'</td><td>'.$enreg['marque'].'</td><td>'.$enreg['puissa
nce'].'</td><td>'.$enreg['carburant'].'</td></tr>';
}
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
4
4 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H ?>
</table></center>
</body>
</html>
4) Créer un formulaire permettant
l’insertion de nouvelles données dans
la table modèle et enregistrer là dans
une nouvelle page new_modele.php.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Nouveau Modèle</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
fieldset
{
background-color:#CCC;
max-width:500px;
padding:16px;
border:2px solid blue;
-moz-border-radius:8px;
-webkit-border-radius:8px;
border-radius:8px;
}
</style>
</head>
<body>
<br>
<br>
<br>
<hr width="50%">
<center><h3>Ajout Nouveau Modèle</h3>
<hr width="50%">
</center>
<center>
<fieldset>
<legend> Nouveau Modele </legend>
<form name="" method="post" action="">
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
5
5 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H Modèle : <input name="modele" type="text"/></br>
Marque : <input name="marque" type="text"/></br>
Puissance : <input name="puissance" type="text"/></br>
Carburant : <input name="carburant" type="text"/></br>
<input type="submit" value="Ajouter" name="ok"/>
<input type="reset" value="Annuler" />
</form>
</fieldset>
</center>
<?php
if (isset($_POST['ok'])){
// connexion au serveur et à la base scoop
mysql_connect('localhost','root','') or die('Imposible de connecter au serveur');
mysql_select_db('vehicule_circulation') or die('Impossible de connecter à la base
vehicule');
//requete d'insertion
$sql='insert into modele
values("","'.$_POST['modele'].'","'.$_POST['marque'].'","'.$_POST['puissance'].'","'.$_
POST['carburant'].'")';
$inserts=mysql_query($sql);
if(!$inserts)
{
$message = 'INVALId query:' .mysql_error().'\n';
$message .= 'whole query' .$sql;
die($message);
}else{
header('location:modele.php');
}
mysql_close();
}
?>
</body>
</html>
5) Essayez de remplir la table voiture avec
des insertions simultanées saisies
manuellement. Créer après un
formulaire permettant l’insertion
simultanée des coordonnées d’une
personne dans la table propriétaire
dans la page new_proprietaire.php. Il
doit contenir les zones de saisie des coordonnées de la personne et une liste
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
6
6 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H déroulante remplies dynamiquement à partir de la base de données contenant la
liste des matricules des voitures existants dans la table voiture.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Nouveau Modèle</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
fieldset
{
background-color:#CCC;
max-width:500px;
padding:16px;
border:2px solid blue;
-moz-border-radius:8px;
-webkit-border-radius:8px;
border-radius:8px;
text-align: left;
}
</style>
</head>
<?php
function alerte($ch)
{
$code="<script type=\"text/javascript\">";
$code.="alert('$ch');";
$code.="</script>";
echo $code;
}
// connexion au serveur et à la base scoop
mysql_connect('localhost','root','') or die('Imposible de connecter au serveur');
mysql_select_db('vehicule_circulation') or die('Impossible de connecter à la base
vehicule');
//requete de selection
$sql="select * from voiture";
$resultat=mysql_query($sql);
?>
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
7
7 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H <body>
<br>
<br>
<br>
<hr width="50%">
<center><h3>Ajout Nouveau Propriétaire</h3>
<hr width="50%">
</center>
<center>
<fieldset >
<legend> Nouveau propriétaire </legend>
<form name="" method="post" action="" >
<table>
<tr>
<td>Nom :</td><td><input name="nom" type="text"/></td>
</tr>
<tr>
<td>Prénom :</td><td><input name="prenom" type="text"/></td>
</tr>
<tr>
<td>Adrese :</td><td><input name="adresse" type="text"/></td>
</tr>
<tr>
<td>Code Postal :</td><td><input name="cdp" type="number"/></td>
</tr>
<tr>
<td>Ville :</td><td><input name="ville" type="text"/></td>
</tr>
<tr>
<td>Téléphone :</td><td><input name="tel" type="number"/></td>
</tr>
<tr>
<td>Immatriculation :</td>
<td>
<select name="matricule">
<?php
//traitement de resultat
while($enreg=mysql_fetch_array($resultat))
{
echo '<option value="'.$enreg['id'].'">'.$enreg['immatriculation'].'</option>';
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
8
8 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H }
?>
</select>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Ajouter" name="ok"/><input type="reset"
value="Annuler" /></td>
</tr>
</table>
</form>
</fieldset>
</center>
<?php
if (isset($_POST['ok'])){
//requete d'insertion
$sql_insert='insert into proprietaire
values("","'.$_POST['nom'].'","'.$_POST['prenom'].'","'.$_POST['adresse'].'","'.$_POST
['cdp'].'","'.$_POST['ville'].'"
,"'.$_POST['tel'].'","'.$_POST['matricule'].'")';
$inserts=mysql_query($sql_insert);
if(!$inserts)
{
$message = 'INVALId query:' .mysql_error().'\n';
$message .= 'whole query' .$sql_insert;
die($message);
} else{
alerte("Le propriétaire ".$_POST['nom']." ".$_POST['prenom']." est ajouté avec
succés");
}
mysql_close();
}
?>
</body>
</html>
6) Créer un formulaire de
recherche recherche.php
permettant de retrouver
tous les véhicules possédés
par une personne donnée.
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
9
9 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H Afficher les résultats sous forme de tableau HTML en précisant les détails suivants :
couleur, kilométrage, marque, modèle, puissance et carburant. Il va y avoir une
jointure entre les trois tables propriétaire, voiture et modèle et la requête va être
sous la forme suivante :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Recherche Véhicule</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style> fieldset { background-color:#CCC; max-width:500px; padding:16px; border:2px solid blue; -moz-border-radius:8px; -webkit-border-radius:8px; border-radius:8px; text-align: left; } </style> </head> <body> <br> <br> <br> <hr width="50%"> <center><h3>Recherche Voiture par Propriétaire</h3> <hr width="50%"> </center> <center> <fieldset > <legend> Recherche avancée </legend> <form name="recherche" method="post" action="recherche.php" > <table> <tr> <td>Nom :</td><td><input name="nom" type="text"/></td>
Enseignant : Mme Ouaz Ines
An
née
Sco
lair
e 20
14-2
015
10
10 Institut Des Hautes Etudes de Sousse
Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures :
2H </tr> <tr> <td>Prénom :</td><td><input name="prenom" type="text"/></td> </tr> <tr> <td></td> <td><input type="submit" value="Rechercher" name="recherche"/></td> </tr> </table> </form> <?php if (isset($_POST['recherche'])){ // connexion au serveur et à la base scoop mysql_connect('localhost','root','') or die('Imposible de connecter au serveur'); mysql_select_db('vehicule_circulation') or die('Impossible de connecter à la base vehicule'); //requete de selection $sql="SELECT * From proprietaire, modele, voiture WHERE proprietaire.id_voiture = voiture.id AND voiture.id_modele = modele.id AND proprietaire.nom='".$_POST['nom']."' AND proprietaire.prenom='".$_POST['prenom']."'"; $resultat=mysql_query($sql); ?> <br><br><hr width="50%"> <table border="1" > <th bgcolor="#A5DDFD">Couleur</th> <th bgcolor="#A5DDFD">Kilométrage</th> <th bgcolor="#A5DDFD">Modèle</th> <th bgcolor="#A5DDFD">Marque</th> <th bgcolor="#A5DDFD">Puissance</th> <th bgcolor="#A5DDFD">Carburant</th> <?php //traitement de resultat while($enreg=mysql_fetch_array($resultat)) { echo '<tr><td>'.$enreg['couleur'].'</td>'; echo '<td>'.$enreg['kilometrage'].'</td>'; echo '<td>'.$enreg['modele'].'</td>'; echo '<td>'.$enreg['marque'].'</td>'; echo '<td>'.$enreg['puissance'].'</td>'; echo '<td>'.$enreg['carburant'].'</td></tr>'; } } ?> </table></fieldset> </center></body> </html>
BON COURAGE