Vous êtes sur la page 1sur 4

APTP14PHP:SGBDRMySQLLocationsdevhicules

TP14PHP:SGBDRMySQL
Locationsdevhicules(Vhicules,ModlesetConstructeurs)
1Modlisation
Question1.1RechercherlemodleEntitAssociationassocilagestiondeslocationsdevhicules.
Question1.2RechercherlemodleRelationnelassocilagestiondeslocationsdesvhicules.

2Miseenplace
Question2.1Crerledossierlocationsdanslerpertoirepublic_html.
Question2.2InstallerleSGBDRMySQL.
aptgetinstallmysqlserver5.0

Question2.3InstallerlemoduleMySQLdePHP.
aptgetinstallphp5mysql

Question 2.4 Rechercher le code duscript SQL(fichier locations.sql) de cration de la base de


donneslocations(crationdelabasededonnesetdestables).
Question2.5Peuplerlabasededonneslocationsl'aideduscriptSQLdonnparleprofesseur(fichier
peupler_locations.sql).

3Pagesd'accslabasededonnes

Constructeurs

Question3.1Listedesconstructeurs
SaisirlescriptPHP(fichierconstructeurs.php)donncidessous.
<!doctypehtml>
<html>
<head>
<metacharset="UTF8">
<title>Locations</title>
</head>
<body>
<h1>Constructeurs:</h1>
<ul>
<?php
$connexion=mysql_connect("localhost","root","azerty");
mysql_select_db("locations",$connexion);
$requete="select*fromCONSTRUCTEUR";
$reponse=mysql_query($requete,$connexion);
while($tuple=mysql_fetch_row($reponse)){
echo"<li>$tuple[1](<em>$tuple[0]</em>)</li>";
}
mysql_close($connexion);
?>
</ul>
</body>
</html>

Question3.2Listedroulantedesconstructeurs
RechercherlescriptPHP(fichierlister_constructeurs.php)dontlerleestd'affichersouslaforme
d'unelistedroulante(balise<select>),lesnomsdesconstructeursdevhiculesrecenssdanslabasede
donnes.Lechamp value dechaqueitemdelalistedroulante(balise <option>)doitsevoirattribuer
l'identifiantduconstructeur.
Page1

APTP14PHP:SGBDRMySQLLocationsdevhicules

Question3.3Nouveauconstructeur
SaisirlecodeHTML(fichiernouveau_constructeur.html)donncidessous.
<!doctypehtml>
<html>
<head>
<metacharset="UTF8">
<title>Locations</title>
</head>
<body>
<h1>NouveauConstructeur:</h1>
<formaction="~nom/locations/inserer_constructeur.php"method="GET">
Nom:<inputtype="text"name="nom"/>
<hr/>
<inputtype="submit"value="Ins&eacute;rer"/>
<inputtype="reset"value="Annuler"
</form>
</body>
</html>

SaisirlescriptPHP(fichierinserer_constructeurs.php)donncidessous.
<!doctypehtml>
<html>
<head>
<metacharset="UTF8">
<title>Locations</title>
</head>
<body>
<h1>Constructeurs:</h1>
<ul>
<?php
if(array_key_exists("nom",$_REQUEST)){
$nom=strtoupper($_REQUEST["nom"]);
$connexion=mysql_connect("localhost","root","azerty");
mysql_select_db("locations",$connexion);
$requete="select*fromCONSTRUCTEURwherenom='$nom'";
$reponse=mysql_query($requete,$connexion);
if(mysql_num_rows($reponse)!=0){
echo"Leconstructeurestd&eacute;j&agrave;recens&eacute;.";
}
else{
$requete="insertintoCONSTRUCTEURvalues(NULL,'$nom')";
mysql_query($requete,$connexion);
echo"Constructeurenregistr&eacute;."
}
mysql_close($connexion);
}
else{
echo"Champnonrenseign&eacute;.";
}
?>
</ul>
</body>
</html>

Question3.4Suppressiond'unouplusieursconstructeurs
SaisirlescriptPHP(fichierlistsupp_constructeurs.php)donncidessous.
<!doctypehtml>
<html>
<head>
<metacharset="UTF8">
<title>Locations</title>
</head>

Page2

APTP14PHP:SGBDRMySQLLocationsdevhicules
<body>
<h1>Constructeurs:</h1>
<formaction="supprimer_constructeurs.php"method="GET">
<table>
<tbody>
<?php
$connexion=mysql_connect("localhost","root","azerty");
mysql_select_db("locations",$connexion);
$requete="select*fromCONSTRUCTEUR";
$reponse=mysql_query($requete);
while($tuple=mysql_fetch_row($reponse)){
echo"<tr><td><inputtype=\"checkbox\"name=\"constructeur[]\"";
echo"value=\"$tuple[0]\"/></td>";
echo"<td>$tuple[1]</td></tr>";
}
mysql_close($connexion);
?>
</tbody>
</table>
<hr/>
<inputtype="submit"value="Supprimer"/>
<inputtype="reset"value="Annuler"/>
</form>
</body>
</html>

SaisirlescriptPHP(fichiersupprimer_constructeurs.php)donncidessous.
<!doctypehtml>
<html>
<head>
<metacharset="UTF8">
<title>Locations</title>
</head>
<body>
<h1>Constructeurs:</h1>
<?php
if(array_key_exists("constructeur",$_REQUEST)){
$constructeurs=$_REQUEST["constructeur"];
$connexion=mysql_connect("localhost","root","azerty");
mysql_select_db("locations",$connexion);
$nb_suppressions=0;
foreach($constructeursas$constructeur){
$requete="deletefromCONSTRUCTEURwhereid_constructeur=$constructeur";
mysql_query($requete,$connexion);
$nb_suppressions+=1;
}
mysql_close($connexion);
echo"$nb_suppressionsconstructeur(s)supprim&eacute;(s).";
}
else{
echo"Aucunconstructeurs&eacute;lectionn&eacute;.";
}
?>
</body>
</html>

Modles

Question3.5Listedesmodlesdevhicules
Rechercher le script PHP (fichier modeles.php) dont le rle est d'afficher la liste (balise <ul>) des
modlesdevhiculesrecenssdanslabasededonnes.Pourchaquemodle,sonnomsuividunomdu
constructeurentreparenthses,doittreaffich.
Exemple:TWINGO(RENAULT)
Page3

APTP14PHP:SGBDRMySQLLocationsdevhicules

Question3.6Listedroulantedesmodlesdevhicules
RechercherlescriptPHP(fichierlister_modeles.php)dontlerleestd'affichersouslaformed'uneliste
droulante(balise<select>),lesmodles(ainsiquelesconstructeurscommedanslaquestionprcdente)
devhiculesrecenssdanslabasededonnes.Lechampvaluedechaqueitemdelalistedroulante(balise
<option>)doitsevoirattribuerl'identifiantdumodle.
Question3.7Nouveaumodle
Rechercher le code HTML (fichier nouveau_modele.php) dont le rle est de proposer un formulaire
permettantdesaisirlenomd'unmodleetdeslectionnerunconstructeur,puisd'envoyercesinformations
auserveur(scriptinserer_modele.php).RechercherlescriptPHP(fichierinserer_modele.php)dont
lerleestd'enregistrerdanslabasededonnes,lenouveaumodledevhiculedontlesdonnesontt
saisiesl'aideduformulaire(lenomdumodleenregistrestenlettresmajuscules).Silemodleestdj
recens,l'utilisateurdoittreprvenu.
Question3.8Suppressiond'unouplusieursmodles
RechercherlecodePHP(fichierlistsupp_modeles.php)dontlerleestdepermettrel'utilisateurde
slectionnerleoulesmodlessupprimer.Lalistedesmodlesestprsentesouslaformed'untableau.Le
constructeurdechaquemodledoittreaffich(dansunecolonneddie).RechercherlecodePHP(fichier
supprimer_modeles.php)dontlerleestdesupprimerdelabasededonnes,lesmodlesslectionns
dansleformulaire.

Vhicules

Question3.9Listedesvhicules
Rechercher le code PHP (fichier lister_vehicules.php) dont le rle est de prsenter la liste des
vhiculeslalocationsousuneformetabulaire(Touteslesinformationsassocieschaquevhiculedoivent
treaffichesdansdescolonnesdiffrentes).
Question3.10Nouveauvhicule
RechercherlecodePHP(fichiernouveau_vehicule.php)dontlerleestdepermettrel'utilisateurde
saisirl'ensembledesinformationsrelativesunnouveauvhicule.Lechoixdumodlesefaitl'aided'une
listedroulante.L'tatduvhiculeestslectionnl'aidedeboutonsradio.RechercherlecodePHP(fichier
inserer_vehicule.php)dontlerleestdemmoriserdanslabasededonnes,levhiculedontles
informationsonttsaisiesl'aideduformulaire.
Question3.11Suppressiond'unouplusieursvhicules
RechercherlecodePHP(fichierlistsupp_vehicules.php)dontlerleestdepermettrel'utilisateurde
slectionnerleoulesvhiculessupprimer.Lalistedesvhiculesestprsentesouslaformed'untableau.
RechercherlecodePHP(fichiersupprimer_vehicules.php)dontlerleestdesupprimerdelabasede
donnes,lesvhiculesslectionnsdansleformulaire.
Question3.12Modificationd'unouplusieursvhicules
RechercherlecodePHP(fichierlistmod_vehicules.php)dontlerleestdeprsentersousuneforme
tabulaire, l'tat de chaque vhicule (l'tat courant est prsent sous la forme d'une liste droulante).
L'utilisateurpeutslectionnerunnouveltatpourunouplusieursvhicules.RechercherlecodePHP(fichier
modifier_vehicules.php)dontlerleestd'appliquerlesmodificationschoisiesparl'utilisateur.

Eviterlesincohrences!

Question3.13Suppressiondeconstructeursetdemodles

S'ilexistedanslabasededonnes,aumoinsunmodleproposparunconstructeur,ceconstructeur
nepeutpastresupprim.Proposerunemodificationduscriptsupplist_constructeurs.php.
S'ilexistedanslabasededonnes,aumoinsunvhiculed'unmodleparticulier,cemodlenepeut
pastresupprim.Proposerunemodificationduscriptsupplist_modeles.php.
Page4