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