Examen principal- php - correction

10
Enseignant : Mme Ouaz Ines Année Scolaire 2014-2015 1 1 Institut Des Hautes Etudes de Sousse Niveau : 2ème année Informatique Matière : Programmation Web PHP Nombres d’heures : 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,

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