Labarde Géraldine

Transcription

Labarde Géraldine
Labarde Géraldine
Salamatian Leyli
Wilson Adjélé
Projet informatique
Création d’une base de données
Université de Versailles Saint Quentin en Yvelines
DESS IST
2002-2003
Table des matières
1 Première partie : Conception et création d’une base de données ........................................ 3
1.1
Schéma de la base .................................................................................................. 3
1.2
Texte SQL permettant de créer la base et les tables............................................... 4
La table JOUET.................................................................................................................. 4
La table FOURNISSEUR................................................................................................... 4
1.3
Texte SQL permettant de charger la base .............................................................. 4
Initialisation de la table JOUET ......................................................................................... 4
Initialisation de la table FOURNISSEUR.......................................................................... 6
1.4
Création de la base ALG ........................................................................................ 8
1.5
Texte SQL de requêtes d’interrogations................................................................. 8
2 Deuxième partie : Accès à la base au travers du réseau en utilisant PH ........................... 10
2.1 Maquette du formulaire de saisie ............................................................................... 11
2.2 Programme PHP correspondant au formulaire complet............................................. 12
2.3 Affichage du résultat sous forme tabulaire ................................................................ 12
Annexes.............................................................................................................................. 15
2
North pole Industries Supplier Services
North Pole Industries désire obtenir une base de données regroupant leurs
fournisseurs de jouets afin de constituer un catalogue unifié des jouets
disponibles et une page Web permettant une consultation simple de cette base
de données.
1 Première partie : Conception et création d’une base de données
1.1 Schéma de la base
La base de données décrivant les jouets est conçue en langage SQL. La base de
données est constituée de deux tables : la table des jouets et la table des
fournisseurs.
La table JOUET :
Cette table est constituée de 11 attributs :
- Numj (identifiant du jouet)
Clé primaire
- Nom du jouet (nomJ)
- Descriptif
- Photo (nom du fichier contenant la photo du jouet)
- Numf (identifiant du fournisseur)
- Catégorie (poupée, voiture, déguisement…)
- Type (éducatif, société…)
- Tranche d’âge (0-4 ans, 5-12 ans, adolescents, pour tous)
- Spécifications techniques (ST)
- Dimension
- Prix (en euros)
Clé étrangère
Le Numj est choisi comme clé, car il permet d’identifié un jouet de manière
unique. Le Numf est une clé étrangère, l’identifiant du fournisseur permet de
relier la table JOUET à la table FOURNISSEUR (liaisons de type simple-simple).
JOUET
Numj NomJ Descriptif Photo Numf Catégorie Type Age ST Dimension Prix
3
La table FOURNISSEUR :
Cette table est constituée de 6 attributs :
- Numf (identifiant du fournisseur)
- Nom du fournisseur (nom)
- Adresse
- Nom du contact (NC)
- Téléphone
- Site Internet (SI)
Clé primaire
Le Numf est la clé primaire de la table FOURNISSEUR.
FOURNISSEUR
Numf Nom
Adresse Contact Téléphone
Site Internet
1.2 Texte SQL permettant de créer la base et les tables
La table JOUET
CREATE TABLE jouet (NumJ varchar (3) primary key,Nom varchar(20),
Descriptif varchar(150),Photo varchar(20), NumF varchar(3) REFERENCES
fournisseur, Categorie varchar(30), Type varchar(30), Age varchar(20), ST
varchar (100), Dimension varchar(50), Prix real);
La table FOURNISSEUR
CREATE TABLE fournisseur (NumF varchar(3) primary key,Nom varchar(20),
logo varchar (20), Adresse varchar(150), NC varchar(20), Telephone varchar
(10), SI varchar(100));
1.3 Texte SQL permettant de charger la base
Initialisation de la table JOUET
insert into jouet values ('J1','mon bebe','corps souple et doux, yeux dormeurs',
'monbebe', 'F1', 'poupee','eveil des sens','0-4 ans','sans pile','42 cm',18.99);
4
insert into jouet values ('J2','ma souris verte','parle, chante et s’illumine',
masouris', 'F2','peluche','eveil des sens','0-4 ans','2 piles LR6 fournies','45
cm', 29.96);
insert into jouet values ('J3', 'tracteur electrique', 'tracteur electrique avec sa
remorque','tracteur', 'F3','voiture','maxi jouet','0-4 ans', 'batterie 6V,vitesse
4Km/h,autonomie 2h', '144*45*43 cm', 99.99);
insert into jouet values ('J4', 'les petits minous', 'cassette audio de 150
chansons et comptines traditionnelles', 'ptitminous', 'F4', 'musique et
sons','audio','0-4 ans', 'duree 1h20', 'neant',18.00);
insert into jouet values ('J5', 'diva starz', 'parle avec un look branche', 'starz',
'F5', 'poupee', 'j imite et j imagine', '5-12 ans', '4 piles LR6 non fournies', '40
cm', 44.99);
insert into jouet values ('J6', 'roller enfant', 'roues adaptables en position ligne
ou stabilise avec deux roues a l’arriere', 'roller', 'F6', 'sport', 'activite
physique', '5-12 ans', 'pointure 25-37, port de protections conseille', '20 cm',
22.71);
insert into jouet values ('J7', 'power academy', 'laboratoire de langue a domicile
avec plus de 100 activites', 'power', 'F7', 'multimedia', 'jeu educatif', '5-12
ans', 'une pile au lithium CR 2032 fournie,3 piles LR6 non fournies', '30*40 cm',
152.49);
insert into jouet values ('J8', 'deguisement harry potter', 'une baguette,une
paire de lunette et un manteau', 'harrypotter', 'F8', 'deguisement', 'j’imite et
j’imagine', '5-12 ans', 'neant', 'suivant la taille', 19.90);
insert into jouet values ('J9', 'e=m6', 'plus de 1700 questions avec 6 themes
issus de l’emission e=m6', 'm6', 'F9', 'jeu intelligent', 'jeu de societe',
'adolescent', 'neant', '40*30 cm', 28.94);
insert into jouet values ('J10', 'baby foot', 'un vrai baby de cafe', 'foot', 'F10',
'sport', 'maxi jouet', 'adolescent', '80 kg,livre avec 6 balles liege',
'150*100*95cm', 999);
insert into jouet values ('J11', 'BMX velo vtt', 'robuste,cadre et fourche Hiten', 'vtt', 'F11', 'sport', 'activite physique', 'adolescent', 'freins V-Brake
aluminium', 'neant', 200);
5
insert into jouet values ('J12', 'game boy', 'console de game boy advance',
'nintendo',
'F12',
'multimedia',
'divertissement',
'adolescent',
'lampe,adaptateur secteur', '15 cm', 94.38);
insert into jouet values ('J13', 'scrabble', 'le plus celebre des jeux de lettres',
'scrabble', 'F5', 'jeu intelligent', 'jeu de societe', 'jeux pour tous', '2 a 4
joueurs', '30*40 cm', 24.98);
insert into jouet values ('J14,'playstation 2','console de jeux video',
'playstation', 'F13', 'multimedia', 'divertissement', 'jeux pour tous', '1 a 2
joueurs, manette et carte memoire', 'neant', 259);
insert into jouet values ('J15', 'IL2 sturmovik', 'cd-rom,combats aeriens
germano sovietiques', 'IL2', 'F14', 'multimedia', 'divertissement', 'jeux pour
tous', '4 a 9 joueurs', 'neant', 29.90);
insert into jouet values ('J16', 'le barbare', 'bande dessinee de van hamme',
'barbare', 'F15', 'livre', 'bande dessinee et humour', 'jeux pour tous',
'couverture cartonnee', '21*27.5 cm', 8.98);
Initialisation de la table FOURNISSEUR
insert into fournisseur values ('F1', 'Berchet', '31 Cours de Verdun B.P. 2002
01102 OYONNAX CEDEX FRANCE', 'Mme Maillard', '0474731500',
'http://www.berchet.com');
insert into fournisseur values ('F2', 'Fagoe', '115, Boulevard de Stalingrad
69100
VILLEURBANNE',
'Mr
Rossignol',
'0472823466',
'http://www.fagoe.com');
insert into fournisseur values ('F3', 'smoby', 'BP 7, 39170 LAVANS-LESSAINT-CLAUDE', 'Mme Lemaire', '0384413800','http://www.smoby.com');
insert into fournisseur values ('F4', 'Akcs', '115, rue du monde 69100
VILLEURBANNE', 'Mr Marechal', '0472886544', 'http://www.akcs.com');
insert into fournisseur values ('F5', 'Mattel', '27/33 Rue d Antony Silic 145
94523 RUNGIS CEDEX', 'Mr Wilson', '0148922333', 'http://www.mattel.fr');
6
insert into fournisseur values ('F6', 'Riketrok', '45 rue d Antony Silic 145
94523
RUNGIS
CEDEX',
'Mr
Salamatian',
'0148954766',
'http://www.auchan.fr');
insert into fournisseur values ('F7', 'Lexibook', '28,rue du pressoir 75002
PARIS', 'Mr Labarde', '0149385712', 'http://www.lexibook.com');
insert into fournisseur values ('F8', 'TAGADA', '114, Avenue Louis Roche 92230
GENNEVILLIERS', 'Mme Fleurette', '0147988680','http://www.tagada.com');
insert into fournisseur values ('F9', 'RAVENSBURGER', '24, rue de Paris
Attenschwiller 68221 HEGENHEIM CEDEX, 'Mme Fey', '0389687800',
'http://www.ravensburger.com');
insert into fournisseur values ('F10', 'STELLA', '18, rue Jean Bart 59420
Mouvaux', 'Mr Viemont', '0320680938','http://www.stella.com');
insert into fournisseur values ('F11', 'JAKITOYS', '6 Rue de Saussure 75017
PARIS', 'Melle Quessette', '0140547811', 'http://www.jakitoys.com');
insert into fournisseur values ('F12', 'NINTENDO', '1, Rue de la Croix des
Maheux Immeuble "le Mercury"95031 CERGY PONTOISE CEDEX', 'Mr
Tamagoshi', '0134354600', 'http://www.nintendo.com');
insert into fournisseur values ('F13', 'SONY', '92, avenue de Wagram 75017
PARIS', 'Mr Hifi', '0144407097', 'http://www.sony.com');
insert into fournisseur values ('F14', 'EIDOS', '6 Boulevard du General Leclerc
92115 Clichy Cedex', 'Mme Rosca', '0141069670', 'http://www.eidos.com');
insert into fournisseur values ('F15', 'Hachette', '6 Boulevard du General de
Gaulle
75015
Cedex',
'Mr
Bourguignon',
'0147596475',
'http://www.hachette.fr');
7
1.4 Création de la base ALG
La base est créée sous le SGBD Postgress avec le langage postgresql. ALG est le
nom donné à la base.
Création de la base ALG :
$ creatdb ALG
Accès à la base ALG :
$ psql ALG
1.5 Texte SQL de requêtes d’interrogations
Requête 1 : Afficher tous les jouets (requête simple).
Alg=> select * FROM jouet;
Requête 2 : Afficher tous les fournisseurs (requête simple).
Alg=> select * FROM fournisseur;
Requête 3 : Afficher les jouets multimédia de type divertissement. (requête
complexe).
Alg=> select * FROM
type='divertissement';
jouet
WHERE
categorie='multimedia'
AND
Requête 4 : Afficher les catégories et les types des jouets en éliminant les
doublons (simple projection).
ALG=> select DISTINCT categorie,type FROM jouet ORDER BY categorie;
Requête 5 : Afficher les noms des fournisseurs associés aux jouets qu’ils
produisent : nom, catégorie, type et tranche d’âge (requête sur deux relations).
ALG=> select fournisseur.nom ,jouet.nomJ, jouet.categorie, jouet.type, jouet.age
FROM fournisseur,jouet WHERE fournisseur.numF = jouet.numF;
Requête 6 : Afficher les noms des fournisseurs qui produisent des jouets de la
catégorie sport (requête imbriquée).
ALG=> select nom FROM fournisseur WHERE numF IN (select numF FROM jouet
WHERE categorie='sport');
Requête 7 : Donner la moyenne des prix des jouets de la catégorie multimedia.
(fonction d’aggrégation).
ALG=> select AVG (prix) FROM jouet WHERE categorie = 'multimedia';
8
Requête 8 : Donner le nom et le prix du jouet le plus cher. (fonction
d’aggrégation).
ALG=> select nomJ,prix from jouet WHERE prix=(select max(prix) FROM jouet);
Requête 9 : Donner les noms et les prix des jouets dont le prix est inférieur à
100 Euros.
ALG=> select nomJ,max(prix) FROM jouet group by nomJ having max (prix) <100;
9
2 Deuxième partie : Accès à la base au travers du réseau en utilisant PH
La page Web utilisera PHP pour gérer un formulaire de saisie. PHP est un langage
de script qui s’exécute côté serveur, le code PHP étant inclus dans une page
HTML classique. Cette page est envoyé au serveur, qui exécutera le code pour
retourner le résultat au client. Le résultat de cette exécution est intégré dans la
page HTML qui est envoyé au navigateur. Ce dernier n’a aucune connaissance de
l’existence du traitement qui s’est déroulée sur le serveur. Cette technique
permet de réaliser des pages Web dynamiques dont le contenu peut être
complètement ou partiellement généré au moment de l’appel de la page, grâce aux
informations récupérées dans un formulaire ou extraite dans une base de
données. Pour North Pole Industries, l’utilisation du PHP permettra d'envoyer
des pages HTML qui correspondent aux demandes de l’utilisateur en puisant dans
la base de données sur les jouets.
Le schéma suivant explique comment est traité un fichier PHP.
Postgre
Postgresql
SQL
La base de données décrivant les jouets est créée sous le SGBD Postgress avec
le langage postgresql. La base de données est constituée de deux tables : la table
des jouets et la table des fournisseurs. ALG est le nom donné à la base.
10
2.1 Maquette du formulaire de saisie
Ce formulaire est un outil de base indispensable pour notre page Web dynamique
puisqu’il permet à l’utilisateur de spécifier l’équivalent d’une requête sql en
utilisant une liste de choix. Le nom du fournisseur du jouet, le type du jouet,
la catégorie du jouet et l’âge sont présentés comme une liste de choix établie,
à l’instant de la requête, à partir des données extraites de la base.
11
2.2 Programme PHP correspondant au formulaire complet
L’utilisation du PHP intervient à deux endroits par rapport au formulaire :
- Pour générer une partie du formulaire dynamiquement.
- Pour traiter le formulaire (c’est à dire les données saisies par l’utilisateur dans
le formulaire).
Le formulaire est défini entre les balises <FORM> et </FORM>.
Un code PHP en gras est utilisé pour générer une liste de choix (nom du
fournisseur du jouet, type du jouet, catégorie du jouet et âge) à partir de
données extraites de la base.
L’option ACTION de la balise <FORM> est une URL relative ou absolue qui va
traiter le formulaire en utilisant un autre script PHP (resultats.php).
Document PHP projet.php
Voir annexe 2
2.3 Affichage du résultat sous forme tabulaire
2.3.1 Programme PHP traitant le formulaire et affichant le résultat obtenu sous
forme tabulaire
L’utilisateur spécifie dans le formulaire l’équivalent d’une requête sql permettant
de lire le nom du fournisseur du jouet, l’identifiant, le nom du et le prix du
jouet en utilisant une liste de choix (nom du fournisseur du jouet, type du jouet,
catégorie du jouet et âge). Avec l’option ″Tous″ l’utilisateur spécifie l’équivalent
d’une requête sql permettant de lire toutes les lignes correspondant au nom du
fournisseur du jouet, à l’identifiant, au nom et au prix du jouet de la base de
données. Les valeurs saisies dans le formulaire par l’utilisateur sont récupérées
directement dans des variables PHP du script PHP resultats.php.
script PHP resultats.php
voir annexe 3
12
Résultat après traitement du formulaire
Le résultat du clic sur le bouton lancer la recherche du formulaire est une page
avec un tableau ci-dessous présentant le nom du fournisseur du jouet,
l’identifiant du jouet, le nom du jouet et le prix du jouet. Les données extraites
de la base correspondant au nom du fournisseur et à l’identifiant du jouet sont
respectivement des liens pour appeler la fiche descriptive du fournisseur et la
fiche descriptive du jouet.
Tableau 1 : Résultat après traitement du formulaire
Lien vers fiche
fournisseur
Lien vers fiche
jouet
Lien sur l’identifiant du
fournisseur vers fiche
fournisseur
2.3.2 Programme PHP affichant la fiche descriptive du jouet sous forme
tabulaire
Le lien sur l’identifiant du jouet spécifie l’équivalent d’une requête sql
permettant de lire une ligne de la table jouet de la base.
script PHP fichejouet.php
voir annexe 4
Résultat à l’écran
Le résultat du clic sur le lien identifiant du jouet est une page avec un tableau cidessous présentant une ligne de la table jouet de la base. Les données extraites
de la base correspondant à l’identifiant du fournisseur et à la photo sont
13
respectivement des liens pour appeler la fiche descriptive du fournisseur et la
photo du jouet.
Tableau 2 : fiche descriptive du jouet
Lien vers
photo du jouet
Lien vers fiche
fournisseur
2.3.3 Programme PHP affichant la fiche descriptive du fournisseur sous forme
tabulaire
Les liens sur l’identifiant du fournisseur et le nom du fournisseur spécifient
tous les deux l’équivalent d’une requête sql permettant de lire une ligne de la
table fournisseur de la base.
script PHP fichefournisseur.php
voir annexe 5
Résultat à l’écran
Le résultat du clic sur le lien identifiant du fournisseur du tableau 2 ou sur le
lien nom du fournisseur du tableau 1 est une page avec un tableau ci-dessous
présentant une ligne de la table fournisseur de la base. Les données extraites de
la base correspondant au site Internet sont des liens pour appeler le site du
fournisseur.
Tableau 3 : fiche descriptive du fournisseur
Lien vers le site Internet
du fournisseur
14
Annexes
Annexe 1 : Document PHP projet.php
Annexe 2 : script PHP resultats.php
Annexe 3 : script PHP fichejouet.php
Annexe 4 : script PHP fichefournisseur.php
15
Annexe 1 : Document PHP projet.php
<html>
<head><TITLE>North Pole Industrie Supplier Services<BR></TITLE></head>
<body bgcolor="white">
<a href="index.html"> <img alt="Accueil" src="Images/banquise.gif" align="left"
heigth="200"width="200"></a>
<img alt="RAS" src="Images/lutin.gif" align="right" heigth="100"width="100">
<BR><BR>
<CENTER><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H1>North Pole
Industries Supplier Services</H1></FONT></FONT></CENTER>
<BR>
<DIV ALIGN="left"><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H4>Retour
page d'accueil</H4></FONT></FONT></DIV>
<HR><BR>
<CENTER><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H3>Utilisez le
formulaire suivant pour interroger notre base de données</H3></FONT></FONT></CENTER>
<FORM ACTION="resultats.php">
<?php
function affiche_ligne_formulaire ($arr,$num_field)
{
//balayage horizontal de la base par le pointeur
for ($i=0 ; $i<$num_field ; $i++)
{
echo "<OPTION VALUE=\"$arr[$i]\">$arr[$i]";
}
}
function affiche_resultat_formulaire($database,$query_string)
{
//execution de la requete
$result = pg_exec($database,$query_string);
//lire le nombre de colonnes dans le résultat
$num_field = pg_numfields($result);
//lire le nombre de lignes dans le résultat
$num_row = pg_numrows($result);
//balayage vertical de la base le pointeur
for ($i=0 ; $i<$num_row ; $i++)
{
//extraction des lignes du résultat
$arr = pg_fetch_array($result,$i,PGSQL_BOTH);
affiche_ligne_formulaire($arr,$num_field);
}
pg_freeresult($result);
}
16
Fonction permettant
d’afficher une ligne dans
le menu déroulant
Fonction permettant
d’afficher le menu
déroulant
//connection a la base
$database = pg_connect("user=glabarde dbname=ALG");
if (!$database)
{
echo "Erreur de connexion.\n";
exit;
}
?>
<img alt="Il neige" src="Images/flocon.gif" align="right" heigth="100"width="100">
<img alt="Il neige" src="Images/flocon.gif" align="leftt" heigth="100"width="100">
<CENTER>
<FONT FACE="Arial,Helvetica,Geneva" SIZE="3" COLOR="darkgreen"><B>
Fournisseur:
<SELECT NAME="Fournisseur">
<OPTION VALUE="T">Tous
<?php
$requete_1 = "SELECT DISTINCT nom from fournisseur
ORDER BY nom;";
affiche_resultat_formulaire($database,$requete_1);
echo "<br><br>";
echo "\n";
?>
</SELECT>
</FONT></B>
Requête : affichage des
noms des fournisseurs
dans un menu déroulant
<BR><BR><BR>
<B><FONT FACE="Arial,Helvetica,Geneva" SIZE="3" COLOR="teal">
Type:
<SELECT NAME="Type">
<OPTION VALUE="T">Tous
<?php
$requete_2 = "SELECT DISTINCT type from jouet ORDER BY
type;";
affiche_resultat_formulaire($database,$requete_2);
echo "<br><br>";
echo "\n";
?>
</SELECT>
</FONT></B>
<br><br><br>
<B><FONT FACE="Arial,Helvetica,Geneva" SIZE="3" COLOR="chocolate">
Categorie:
<SELECT NAME="Categorie">
17
Requête : affichage du
type de jouet dans un
menu déroulant
<OPTION VALUE="T">Tous
<?php
$requete_3 = "SELECT DISTINCT categorie from jouet ORDER
BY categorie;";
affiche_resultat_formulaire($database,$requete_3);
echo "<br><br>";
echo "\n";
?>
</SELECT>
</FONT></B>
Requête : affichage de la
catégorie du jouet dans
un menu déroulant
<BR><BR><BR>
<B><FONT FACE="Arial,Helvetica,Geneva" SIZE="3"COLOR="##000099">
Age:
<SELECT NAME="Age">
<OPTION VALUE="T">Tous
<?php
$requete_3 = "SELECT DISTINCT age from jouet;";
affiche_resultat_formulaire($database,$requete_3);
echo "<br><br>";
echo "\n";
Requête : affichage de la
tranche d’âge dans un
menu déroulant
//fermuture de la base
pg_close($database);
?>
</SELECT>
</FONT></B>
</CENTER>
<br><br>
<DIV ALIGN=right> <B><FONT FACE="Arial,Helvetica,Geneva" SIZE="3" COLOR="tomato">
<!—action permettant de traiter le formulaireÆ
<INPUT TYPE="submit" NAME="Lancer la recherche" VALUE="Lancer la recherche"></FONT></B>
<BR>
</DIV>
</FORM>
</body>
</html>
18
Annexe 2 : script PHP resultats.php
<html>
<head><TITLE>North Pole Industrie Supplier Services<BR></TITLE></head>
<body bgcolor="white">
<a href="index.html"> <img alt="Accueil" src="Images/banquise.gif" align="left"
heigth="200"width="200"></a>
<img alt="RAS" src="Images/lutin.gif" align="right" heigth="100"width="100">
<BR><BR>
<CENTER><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H1>North Pole
Industries Supplier Services</H1></FONT></FONT>
</CENTER>
<BR>
<DIV ALIGN="left"><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H4>Retour
page d'accueil</H4></FONT></FONT></DIV>
<HR>
<CENTER>
<BR><BR>
<TABLE BORDER="4" WIDTH="90 %" CELLPADING="50" CELLSPACING="5"
bgcolor="papayaWhip"><TR ALIGN="CENTER" bgcolor="teal"><TH>Fournisseur</TH>
<TH>Identifiant </TH><TH>Nom du jouet </TH><TH> Prix en euros</TH></TR>
<?PHP
function affiche_ligne_tableau ($arr,$num_field,$req)
{
//affichage dans un ligne de tableau
echo "<tr>";
for ($i=0 ; $i<$num_field ; $i++)
{
//ajout d’un lien sur la premiere et la deuxieme colonne du tableau
if ($i == 0)
echo "<td><a href=\"fichefournisseur.php?Fo=$arr[0]\">$arr[$i]</a></td>";
if ($i == 1)
echo "<td><a href=\"fichejouet.php?Id=$arr[1]\">$arr[$i]</a></td>";
//affichage du reste du tableau
if ($i > 1)
echo " <td>$arr[$i]</td>";
}
echo "</tr>";
}
//code php pour le tableau de resultats
function affiche_resultat_tableau($database,$query_string)
{
$result = pg_exec($database,$query_string);
$num_field = pg_numfields($result);
19
$num_row = pg_numrows($result);
//condition d’affichage de resultat, preparer un message
if ($num_row == 0) echo "Il y a 0 reponse";
else {
echo "Il y a $num_row reponse";
if ($num_row > 1) echo "s";
echo "<br>";
echo "<br>";
echo "<br>";
}
for ($i=0 ; $i<$num_row ; $i++)
{
$arr = pg_fetch_array($result,$i,PGSQL_BOTH);
affiche_ligne_tableau($arr,$num_field,$query_string);
}
pg_freeresult($result);
}
$database = pg_connect("user=glabarde dbname=ALG");
if (!$database)
{
echo "Erreur de connexion.\n";
exit;
}
//construction de la requete par php
$req_1 ="select nom,numj,nomj,prix from jouet,fournisseur where fournisseur.numF=jouet.numF ";
//premier cas : au moins un choix différent de tous ajout de AND a req1
if (($Fournisseur != 'T') || ($Type != 'T') || ($Categorie != 'T') || ($Age != 'T'))
$req_1 = $req_1." AND";
//deuxieme cas : type différent de tous ajout de la valeur choisie a req1
if ($Type != 'T')
$req_1 = $req_1." type = '$Type'";
//troisieme cas : type et catégorie different de tous ajout de AND a req1
if (($Type != 'T') && ($Categorie != 'T'))
$req_1 = $req_1." AND";
//quatrieme cas : catégorie différent de tous ajout de la valeur choisie a req1
if ($Categorie != 'T')
$req_1 = $req_1." categorie = '$Categorie'";
//cinquieme cas : type ou catégorie et age different de tous ajout de AND a req1
if ((($Type != 'T') || ($Categorie != 'T')) && ($Age != 'T'))
$req_1 = $req_1." AND";
20
//sixième cas : age différent de tous ajout de la valeur choisie a req1
if ($Age != 'T')
$req_1 = $req_1." age = '$Age'";
//septieme cas : age ou type ou catégorie et fournisseur different de tous ajout de AND a
req1
if ((($Age != 'T') || ($Type != 'T') || ($Categorie != 'T')) && ($Fournisseur != 'T'))
$req_1 = $req_1." AND";
//huitieme cas : fournisseur différent de tous ajout de la valeur choisie a req1
if ($Fournisseur != 'T')
$req_1 = $req_1." nom = '$Fournisseur' ";
echo "<br>";
affiche_resultat_tableau($database,$req_1);
pg_close($database);
?>
</CENTER>
</table>
<CENTER><img alt="bonjour" src="Images/monstre.gif" heigth="200"width="200" hspace="90"
vspace="20"></CENTER>
<BR>
<DIV align = "left"><FONT FACE="Arial,Helvetica" SIZE="6" COLOR="teal"> <H3>
<a href="projet.php">Faire une nouvelle saisie </a> </H3></FONT></DIV>
</body>
</html>
21
Annexe 3 : script PHP fichejouet.php
<html>
<head><TITLE>North Pole Industrie Supplier Services<BR></TITLE></head>
<body bgcolor="white">
<a href="index.html"> <img alt="Accueil" src="Images/banquise.gif" align="left"
heigth="200"width="200"></a>
<img alt="RAS" src="Images/lutin.gif" align="right" heigth="100"width="100">
<BR><BR>
<CENTER><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H1>North Pole
Industries Supplier Services</H1></FONT></FONT></CENTER>
<BR>
<DIV ALIGN="left"><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H4>Retour
page d'accueil</H4></FONT></FONT></DIV>
<HR>
<CENTER>
<BR><BR>
<TABLE BORDER="4" WIDTH="90 %" CELLPADING="50" CELLSPACING="5"
bgcolor="papayaWhip"><TR ALIGN="CENTER" bgcolor="teal"><TH>Identifiant</TH><TH>Nom du
jouet</TH><TH>Descriptif</TH> <TH>Photo</TH>
<TH>Identifiant Fournisseur</TH><TH>Categorie</TH><TH>Type</TH><TH>Age</TH>
<TH>Caracteristiques</TH><TH>Dimensions</TH><TH>Prix en euros</TH></TR>
<?PHP
function affiche_ligne_tableau ($arr,$num_field,$req)
{
echo "<tr>";
for ($i=0 ; $i<$num_field ; $i++)
{
if ($i == 3)
echo "<td><ahref=\"photo/$arr[3]\">$arr[$i]</a></td>";
if ($i == 4)
echo "<td><ahref=\"fichefournisseur.php?Id=$arr[4]\">$arr[$i]</a></td>";
if ($i<3)
echo " <td>$arr[$i]</td>";
if ($i>4)
echo " <td>$arr[$i]</td>";
}
echo "</tr>";
}
22
function affiche_resultat_tableau($database,$query_string)
{
$result = pg_exec($database,$query_string);
$num_field = pg_numfields($result);
$num_row = pg_numrows($result);
for ($i=0 ; $i<$num_row ; $i++)
{
$arr = pg_fetch_array($result,$i,PGSQL_BOTH);
affiche_ligne_tableau($arr,$num_field,$query_string);
}
pg_freeresult($result);
}
$database = pg_connect("user=glabarde dbname=ALG");
if (!$database)
{
echo "Erreur de connexion.\n";
exit;
}
"Id = $Id";
//requete: affichage de la fiche descriptive du jouet selectionne
$req_1 ="select * from jouet WHERE numj='$Id';";
echo "<br>";
affiche_resultat_tableau($database,$req_1);
pg_close($database);
?>
</CENTER>
</table>
<DIV align = "left"><FONT FACE="Arial,Helvetica" SIZE="6" COLOR="teal"> <H3>
<a href="projet.php">Faire une nouvelle saisie </a> </H3></FONT></DIV>
</body>
</html>
23
Annexe 4 : script PHP fichefournisseur.php
<html>
<head><TITLE>North Pole Industrie Supplier Services<BR></TITLE></head>
<body bgcolor="white">
<a href="index.html"> <img alt="Accueil" src="Images/banquise.gif" align="left"
heigth="200"width="200"></a>
<img alt="RAS" src="Images/lutin.gif" align="right"
heigth="100"width="100">
<BR><BR>
<CENTER><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H1>North Pole
Industries Supplier Services</H1></FONT></FONT></CENTER>
<BR>
<DIV ALIGN="left"><FONT FACE="Arial,Helvetica"><FONT COLOR="##000099"><H4>Retour
page d'accueil</H4></FONT></FONT></DIV>
<HR>
<CENTER>
<BR>
<BR>
<TABLE BORDER="4" WIDTH="90 %" CELLPADING="50" CELLSPACING="5"
bgcolor="papayaWhip"><TR ALIGN="CENTER" bgcolor="teal"><TH>Identifiant Fournisseur</TH>
<TH>Nom du fournisseur</TH><TH>Adresse</TH> <TH>Nom du contact</TH><TH>Telephone</TH>
<TH>Siteinternet</TH></TR>
<?PHP
function affiche_ligne_tableau ($arr,$num_field,$req)
{
echo "<tr>";
for ($i=0 ; $i<$num_field ; $i++)
{
if ($i == 5)
echo "<td><a href=\"$arr[5]\">$arr[$i]</a></td>";
else echo " <td>$arr[$i]</td>";
}
echo "</tr>";
}
function affiche_resultat_tableau($database,$query_string)
{
$result = pg_exec($database,$query_string);
$num_field = pg_numfields($result);
$num_row = pg_numrows($result);
for ($i=0 ; $i<$num_row ; $i++)
{
$arr = pg_fetch_array($result,$i,PGSQL_BOTH);
affiche_ligne_tableau($arr,$num_field,$query_string);
24
}
pg_freeresult($result);
}
$database = pg_connect("user=glabarde dbname=ALG");
if (!$database)
{
echo "Erreur de connexion.\n";
exit;
}
//requete affichage de la fiche descriptive du fournisseur a partir de la fiche jouet
"Id = $Id";
$req_1 ="select * from fournisseur WHERE numF = '$Id';";
echo "<br>";
affiche_resultat_tableau($database,$req_1);
//requete affichage de la fiche descriptive du fournisseur a partir de la page des resultats
"Fo = $Fo";
$req_1 ="select * from fournisseur WHERE nom = '$Fo';";
echo "<br>";
affiche_resultat_tableau($database,$req_1);
pg_close($database);
?>
</CENTER>
</table>
<DIV align = "left"><FONT FACE="Arial,Helvetica" SIZE="6" COLOR="teal"> <H3>
<a href="projet.php">Faire une nouvelle saisie </a> </H3></FONT></DIV>
</body>
</html>
25