Vous êtes sur la page 1sur 4

Bases de donnes relationnelles Ralisation dune application persistente en Mysql + PhP

Textes des Travaux pratiques Table des matires


1 Objectifs et organisation du TP---------------------------------------------------------2 1.1 Mise en uvre de mysql ----------------------------------------------------- 2

1.1.1 Sous windows----------------------------------------------------------------- 2 1.1.2 Sous Unix ---------------------------------------------------------------------- 2 1.2 2 Dcouverte de la base de donnes---------------------------------------- 2

Utilisation et modification dune application persistente ---------------------3 2.1 2.2 2.3 Matriel --------------------------------------------------------------------------- 3 Dcouverte de lapplication -------------------------------------------------- 3 Modification de lapplication ------------------------------------------------- 4

Cration dune nouvelle application --------------------------------------------------4 3.1 3.2 Afficher le schma dune table quelconque ------------------------------ 4 Afficher le contenu dune table quelconque------------------------------ 4

Merci de communiquer toute correction ou remarque sur ce document : Philippe.Picouet@enst-bretagne.fr.

Philippe Picouet LUSSI - ENST Bretagne

Objectifs et organisation du TP

Les objectifs de ce TP sont les suivants : vous faire dcouvrir une application manipulant des donnes persistantes vous faire crire une application persistante

Ces deux objectifs sont dclins respectivement dans les sections 2 et 3 de ce document. Ce TP est ralis sur le SGBD MySQL dont lutilisation est dcrite succinctement dans la suite de cette section. Les coordonnes du compte MySQL (login, password, serveur, base) utiliser dans ce TP vous seront communiques en dbut de sance.
1.1
1.1.1

Mise en uvre de mysql


Sous windows

Pour lancer le serveur mysql install sur votre machine, lancer une fentre de commande, puis dplacez vous dans le rpertoire bin de linstallation de Mysql et tapez la commande suivante : mysqld-nt --standalone Puis, dans une autre fentre de commande, lancez linterprteur SQL sur votre base avec votre login mysql mysql u LOGIN p Une fois sous linterprteur SQL, slectionnez la base de travail par la commande use BASE ; Vous pouvez alors crer le schma et les donnes en excutant les commandes incluses dans le fichier preparebase.sql disponible sous : http://perso.enst-bretagne.fr/~picouet/french/sgbd/mysql/preparebase.sql
1.1.2 Sous Unix

Un serveur Mysql est install sur la machine tp-web et accessible partir des machines unix de lcole. Une fois charg les variables denvironnement ncessaire lutilisation de Mysql (SETUP MYSQL), vous pouvez lancer linterprteur par la commande suivante : PROMPT> mysql u LOGIN p h SERVEUR BASE lance un interprteur SQL sur votre base.
1.2 Dcouverte de la base de donnes

Votre base de donnes contient les deux relations EMP et DEPT (attention, mysql est sensible aux majuscules/ minuscules). Pour vous en convaincre, vous pouvez interroger le dictionnaire des donnes ou mtabase laide des commandes et deviner la signification des attributs : SHOW COLUMNS FROM EMP ; SHOW COLUMNS FROM DEPT;
Philippe Picouet LUSSI - ENST Bretagne 2

2 2.1

Utilisation et modification dune application persistente Matriel

Pour cette application, un serveur mysql est accd par des programmes crits dans le langage PHP via un serveur web (serveur apache http://www.apache.org). Le lancement de ces programmes se fait laide dun navigateur quelconque (Internet explorer par exemple). NB : Dans la configuration Windows, le serveur MySQL et le serveur web sont locaux, mais, bien entendu, dans la pratique , cest rarement le cas Les sources de ces programmes sont disponibles sous : http://perso.enst-bretagne.fr/~picouet/french/sgbd/mysql/tpwebbdd.tar Vous devez tlcharger ces sources lendroit suivant : sous windows, sous le rpertoire htdocs dapache (C:\Program Files\Apache Group\Apache\htdocs) sous Unix, la racine de votre compte

Une fois dcompress, la hirarchie de rpertoires tpweb/bdd cr contient les fichiers suivants : Un script Connect.php qui contient les informations de connexion au serveur et la base de donnes MySQL. un script read_emp.php qui permet dafficher le contenu de la relation EMP un formulaire select_emp.html et le script select_emp.php laccompagnant qui permettent de slectionner les employs en fonction de leur nom ou de leur numro un formulaire update_emp.html et le script update_emp.php laccompagnant qui permettent dinsrer, de modifier ou de supprimer des employs en fonction de leur numro.

2.2

Dcouverte de lapplication

Dans un premier temps, on vous demande : de configurer votre connexion la base de donnes en mettant jour le fichier connect.php : base bdd, user bdd, password fourni en TP, server localhost (attention, pour le serveur web, le serveur mysql est sur la machine locale) dexcuter les diffrents scripts (certains scripts php ne peuvent tre lancs qu partir des formulaires html qui leurs passent les bons arguments). de vrifier leur bon fonctionnement via votre navigateur WEB prfr, en vrifiant les rsultats via linterprteur MySQL. Vous pourrez ensuite examiner le code des scripts et des formulaires dans le dtail, et en particulier le mode dinteraction entre le langage SQL et le langage PHP.

Pour excuter les scripts, faites prcder le nom du fichier par lurl du serveur, soit si votre login unix est monlogin :

Philippe Picouet LUSSI - ENST Bretagne

sous unix : http://tp-web.enst-bretagne.fr/~monlogin/bdd/read_emp.php (attention, on ncrit pas le rpertoire tpweb) sous windows : http://localhost/tpweb/bdd/read_emp.php (pour une installation locale dun serveur web)

Dans le script read_emp.php, vous constaterez le moyen par lequel le langage SQL, qui est ensembliste, est utilis travers un langage de programmation, PhP, qui ne lest pas (ensembliste). Le rsultat de la requte est parcouru ligne aprs ligne par un curseur qui va permettre dafficher le rsultat. Quelle importance peut avoir selon vous cette diffrence de modle dexcution entre le langage de programmation et le SGBD. Le deuxime script, appel par un formulaire de requte illustre la possibilit de poser au SGBD des requtes dont on ignore encore le contenu de la clause Where. Enfin, le troisime script, appel par un formulaire de mise jour, illustre la mise jour dune relation connue au moment de la cration du programme.
2.3 Modification de lapplication

Modifier le script select_emp.php pour afficher, non pas le numro du dpartement o travaille lemploy, mais le nom de ce dpartement. Pour ce faire, vous modifierez la requte excute dans le programme pour y intgrer une jointure entre EMP et DEPT. Vous veillerez tout particulirement la cohrence de la requte excute dans la situation o la combinaison logique des critre est OR .
3 Cration dune nouvelle application

Sil est vrai que de nombreuses applications sont ralises sur des schmas de base de donnes connus lavance, il y en a dautres qui sont plus gnriques et qui doivent permettre de dcouvrir le schma des relations dynamiquement. Dans cette section, vous allez dvelopper une petite application qui, partir dun nom de relation indiqu par lutilisateur, affichera le contenu de cette relation. Pour y parvenir, vous devrez auparavant aller chercher le schma de la relation spcifie.
3.1 Afficher le schma dune table quelconque

La commande show columns from NOM_TABLE renvoie une relation contenant des informations sur les colonnes de la relation NOM_TABLE. Dans un premier temps, vous devez crire le formulaire et le script PHP qui, partir dun nom quelconque de relation donn par lutilisateur, affiche la liste des noms de colonnes de cette relation.
3.2 Afficher le contenu dune table quelconque

Compltez le script prcdent pour afficher non plus le schma de la relation dont le nom a t entr par lutilisateur mais son contenu. Indice : La difficult de ce travail rside dans laffichage du rsultat et non pas dans la requte pose la base. En prenant exemple de la ligne de commande qui ralise laffichage de la relation EMP, vous gnrerez cette ligne de commande partir des informations concernant la structure de la relation, et la stockerez dans une variable. Dans un second temps, vous excuterez cette variable grce la commande eval(string_contenant_la_ligne_de_commande).
Philippe Picouet LUSSI - ENST Bretagne 4