Beruflich Dokumente
Kultur Dokumente
TP1
PhpMyAdmin est une interface conviviale qui permet de grer trs facilement une base de donnes sans ncessiter une connaissance avance des requtes SQL. Avec le gestionnaire de bases de donnes phpMyAdmin, vous pourrez rapidement : Crer et supprimer des bases de donnes ; Crer, copier, modifier et supprimer des tables ; Supprimer, diter et ajouter des champs ; Crer et excuter des requtes SQL ; Crer des utilisateurs et changer leurs droits ; Crer et exploiter des sauvegardes de tables ; Le but de ce TP est donc de vous initier lutilisation de cette interface.
Pendant chacune des sances des TPs de NF16, vous vous loguerez sur chaque poste avec lidentifiant : nf16 et le mot de passe : nf16.
Dans la zone de droite, en cliquant sur longlet bases de donnes , saisissez le nom de la nouvelle base score_db puis cliquez sur le bouton crer. Le nom de la nouvelle base doit safficher dans le cadre de gauche avec la mention aucune table na t trouve dans cette base .
Nous allons maintenant procder la cration des tables. Dans le cadre de droite, saisissez le nom de la table crer (ventes par exemple pour la premire table de la base score_db), renseignez le nombre de champs (5 pour notre exemple). Puis cliquez sur le bouton excuter. ! chaque cration de table.
!!
Un formulaire saffiche alors, destin renseigner les noms, les types et les paramtres des champs crer. Vous les remplirez pour la table vente comme suit : Nom du champ ID Type Smallint Taille/valeurs Description Identifiant :cl primaire de la table (cf colonne INDEX). Dans extra on mettra loption auto_increment Nous indiquerons les mois dans un format numrique (1,2,3..) Format anne Nombre dcimal de 10 chiffres max dont 2 aprs la virgule
CommerciauxID Mois
Tinyint Tinyint
Anne Resultat
Year Decimal
10,2
Le format de toutes les tables sera InnoDB (format supportant les contraintes de cls trangres). Crez deux autres tables commerciaux et agences de la mme manire, que vous remplirez comme suit. commerciaux Nom du champ ID Nom Prnom Email agencesID
Taille/valeurs 50 50 100
Taille/valeurs 50 50
Description Cl primaire
Vous remarquerez la suite de la cration dune table, les commandes SQL qui ont t gnres :
On obtient ensuite un tableau rcapitulatif de toutes les tables prsentes dans la base score_db comme le montre la figure suivante.
! ! ! Les accents ne sont pas conservs dans les noms des attributs
Sur la gauche cliquez sur licne SQL puis sur longlet importer fichier. Slectionnez le fichier excuter.
Nous retrouvons bien dans la base score_db la table commerciaux qui a t cre. Une importation de fichiers peut galement tre utilise pour des insertions de donnes. Nous allons par exemple importer des donnes dans la table commerciaux. Ouvrez un diteur de texte et tapez les commandes suivantes : use score_db; insert into commerciaux (id,nom,prenom,Email,agenceID) values ('1','Bertaut', 'Laurence','lbertaut@utt.fr','1'), ('2','Lassale', 'Jacques','jlassale@utt.fr','2'), ('3','Chassenet','Luc','lchassenet@utt.fr','3');
Il est toujours recommand de faire une sauvegarde de secours de ses programmes. Nous allons donc enregistrer les requtes SQL qui ont t utilises pour crer la structure de la base. Ces requtes une fois enregistres dans un fichier pourront ensuite tre utilises pour recrer lidentique la base sauvegarde.
Il faut dabord sassurer que la base sauvegarder est bien slectionne dans la liste droulante de gauche. Cliquez sur le bouton exporter. Puis, renseignez les diffrents paramtres comme indiqu ci-dessous.
Cliquez sur excuter puis enregistrez le fichier. Ouvrez le fichier avec un diteur de texte, vous y retrouverez les requtes destines crer des tables et y faire des insertions si vous les aviez faites.
Pour illustrer limpact de ces tables sur le systme, nous allons crer un utilisateur et donc faire des modifications sur la table user. Afin de voir la structure de cette table, vous pouvez ouvrir une fentre sur le rpertoire C:\Program Files\easyphp5-3.2i\mysql\bin puis vous connecter la base de donnes mysql : C:\Program Files\easyphp5-3.2i\mysql\bin> mysql u root p mysql A lissue de cette commande, vous tes connect la base de donnes ds que vous obtenez le prompt sql> Vous pouvez alors saisir la commande select * from user ; afin dafficher les diffrents utilisateurs. Vous verrez quil ny en a quun seul pour le moment : cest root.
A laide de la commande GRANT, nous allons insrer lutilisateur coralie dans la table user. mysql> GRANT USAGE ON user to coralie@localhost WITH GRANT OPTION; puis sortir de mysql : mysql>exit; Coralie peut se connecter au serveur en local mais on ne lui accorde aucun droit sur les bases de donnes. Pour remdier cela, ouvrez une fentre de commande. Allez dans le rpertoire C:\Program Files\easyphp5-3.2i\mysql\bin puis lancez la commande mysql u coralie p mysql . Mysql vous demande alors un mot de passe, il ny en a pas, vous faites donc Entrer .
En tant que Coralie , essayez alors de crer une table. Que se passe-t-il ? Nous allons maintenant accorder des droits Coralie et ainsi en voir les consquences. Vous devez alors dconnecter coralie en faisant exit. Puis, vous vous connectez en tant que root : mysql u root p mysql, en ne saisissant aucun mot de passe. Dans PHPMyAdmin, excutez le requte select * from user. Le contenu de la table saffiche.
Pour lutilisateur coralie, transformez le N(no) de create_priv en Y(es) puis cliquez sur excuter. create_priv accorde lutilisateur le droit de crer des objets : bases de donnes, tables, index, etc. Ouvrez une fentre de commande. Allez dans le rpertoire c:\program files\easyphp-5.3.2i\mysql\bin puis lancez la commande mysql u coralie mysql ; En tant que Coralie , essayez alors de crer une table. a marche !
Ouvrez la documentation de MySQL et cherchez les dfinitions de chaque attribut associ aux utilisateurs. La documentation se trouve sur la page daccueil comme le montre la figure ci-dessous.
10
TP2
On vous demande de mettre en place une base de donnes intitule enseignement dcrivant les informations gres par le ministre de lenseignement et de la recherche pour raliser le suivi des activits de recherche de lensemble des chercheurs franais. Les relations mettre en place sont les suivantes : Chercheur [codeCH, nomCH, codeEQ*] Laboratoire [codeLABO, type, nomLABO, URL, codeDIR*] Equipe [codeEQ, nomEQ, codeRESP*, codeLABO*] Thme [codeTH, libell] Dfinir [codeEQ*, codeTH*] Travailler [codeCH*, codeTH*] La smantique de ces relations est la suivante. Les chercheurs recenss par le ministre sont caractriss par un nom et lquipe dans laquelle ils effectuent leurs recherches. Les laboratoires sont dcrits par un nom, un serveur accessible via http, un directeur qui est lui-mme un chercheur. Ces laboratoires peuvent tre un laboratoire universitaire, un laboratoire CNRS extrieur aux universits ou un laboratoire INRIA extrieur aux universits. Ils sont dcomposs en quipes. Chaque chercheur travaille dans une seule quipe. Les quipes, diriges par un chercheur, sont caractrises par un nom, et dfinissent lensemble des thmes de recherche des chercheurs quelles regroupent. Au sein de son quipe un chercheur peut travailler sur un ou plusieurs thmes. Chaque thme est identifi par un libell et un numro. Diffrentes quipes de diffrents laboratoires peuvent travailler sur le mme thme. Les contraintes dintgrit inhrentes cette partie de la base de donnes sont les suivantes. Elles indiquent que : - le type dun laboratoire est soit UNIV (pour universitaire), CNRS ou INRIA. - le responsable dune quipe est un chercheur de lquipe en question. - le directeur dun laboratoire est un chercheur dune des quipes du laboratoire en question. - un chercheur travaille sur des thmes abords par son quipe.
Partie 1 : PhpMyAdmin
On vous demande de crer la BD sous PhpMyAdmin. Cette implmentation doit mettre en uvre les contraintes dintgrit. Crez les tables par des commandes CREATE TABLE. Pour cela, sur la gauche de la page daccueil de phpMyAdmin, vous cliquez sur SQL (cf le schma ci-dessous). Attention, pour ajouter des contraintes dintgrit rfrentielles, il faut que les tables soient de type InnoDB. Pour acclrer les requtes, il faudra prvoir de crer des index sur les attributs cls trangres, dans les commandes CREATE TABLE. Allez dans la section 12.1.17 de laide en ligne pour en savoir plus et trouver des exemples. Pour retrouver les contraintes dintgrit que lon a dfinies, vous pouvez utiliser la commande show create table nom_table .
11
Linsertion de donnes peut tre bloque par les contraintes de cl trangre quil est difficile en mysql de dsactiver. Il est donc conseill de procder en deux tapes : 1. crer les tables avec les contraintes dintgrit nonces ci-dessus 2. insrer les tuples puis dfinir les contraintes de cls trangres
Afin de pouvoir voir les photos lcran, il est ncessaire de crer un nouveau programme qui affichera chaque photo. Ce programme sera appel affiche1.php Ouvrez lditeur de texte (Context ou bloc notes) et tapez les commandes ci-dessous. Enregistrez le sous affiche1.php dans C:\program files\ easyphp5-3.2i \www
12
<?php $connexion=mysql_Pconnect("localhost", "root","mdpass"); if (!mysql_select_db("enseignement",$connexion)) { exit; } $sql="select * from chercheur"; $resultat=mysql_query ($sql); echo "<table border='80'>\n"; echo "<tr><td>codeCH </td><td> nomCH </td><td> codeEQ </td><td> photo </td> </tr>"; while ($ligne=mysql_fetch_array($resultat)) { $codeCH=$ligne['codeCH']; $nomCH=$ligne['nomCH']; $codeEQ=$ligne['codeEQ']; $photo=$ligne['source_photo']; echo "<tr><td>$codeCH </td><td>$nomCH </td><td> $codeEQ \"routine_affiche.php?photo= $photo\">Voir la photo</a> </td></tr>"; } echo "</table>\n"; ?> </td> <td> <a href=
!!! Noubliez pas de mettre votre mot de passe admin si vous en avez un la ligne 2 lendroit indiqu par mdpass en gras. Ouvrez nouveau lditeur de texte (Context ou bloc notes) et tapez les commandes ci-dessous. Enregistrez le sous routine_affiche.php dans C:\program files\easyphp5-3.2i\www <html> <head> <title></title> </head> <body> <a href="index.php"> <img src ="<?php echo $_GET['photo'] ?>" /> </body> </html>
!!! Dans C:\program files\easyphp5-3.2i\www, vous devez galement avoir un rpertoire photo qui contient les photos qui seront charges lorsque vous cliquerez sur le lien voir photo. Ouvrez le navigateur web et tapez http://localhost/affiche1.php sur votre page web. Un tableau saffiche et si vous cliquez sur le lien voir la photo une autre page web est charge et vous montre la photo.
13
TP3
Au cours de ce TP il vous est demand dcrire des requtes SQL sur la base de donnes de la sance prcdente. Dmarrez EasyPHP et lancez linvite de commandes. Allez dans c:\program files\easyphp5-3.2i\mysql\bin Tapez ensuite mysql u root p enseignement Ecrivez le code SQL correspondant aux requtes suivantes : 1. 2. 3. 4. Restituer le nom et le numro des chercheurs Restituer le nom des chercheurs et le nom de leur quipe Restituer le nom des chercheurs de lquipe SRA. Restituer les noms des chercheurs par ordre alphabtique.
5. 6. 7. 8. 9.
Restituer le nombre de chercheurs de lquipe SRA. Restituer, par chercheur, le nombre de thmes sur lesquels il travaille. Restituer le nombre moyen de chercheurs par laboratoire. Restituer le nombre dquipes ayant au moins cinq chercheurs.
Restituer les thmes de recherche des directeurs dquipe en indiquant le nom des chercheurs, le nom de lquipe et le nom des thmes. 10. Restituer les chercheurs travaillant sur le thme Bases de donnes ou sur le thme Gnie logiciel. 11. Restituer les chercheurs travaillant sur le thme Bases de Donnes mais pas sur le thme Gnie Logiciel. 12. Restituer les chercheurs travaillant sur le thme Systmes gographiques. 13. Restituer les chercheurs travaillant dans la mme quipe que le chercheur Eric.
On vous demande maintenant de rajouter dans la relation quipe lattribut budget qui dcrit le budget allou aux quipes. Valorisez cet attribut en donnant des valeurs quelconques au budget des quipes (compris entre 1500 et 2000 Euros). 14. Restituer les quipes dont le budget est compris entre 1500 et 2000 Euros. 15. Restituer les quipes dont le budget est suprieur celui de lquipe SRA. On souhaite modifier la table thme. Dans le cadre dune future restructuration de laboratoire, quelques chercheurs vont ds maintenant changer de thme de recherche. On vous demande de faire les modifications suivantes : 16. Tous les chercheurs qui travaillaient sur le thme Systmes gographiques vont dornavant travailler sur le thme Bases de donnes. 17. Restituer le nombre de chercheurs travaillant sur le thme bases de donnes. 18. Supprimer le thme Systmes gographiques. 19. Lquipe MDI vient de recruter Martin Trouvetout. Linsrer dans la base de donnes.
14
TP4
Le but de ce TP est de raliser un formulaire et sous-formulaire en utilisant les langages PHP et HTML. Pour cela, un rsum du cours sur la cration de formulaires vous est fourni et les types de formulaires sont explicits ci-dessous.
Lorsque le formulaire a t rempli, en le validant, la page2.php sera charge. Rle de page2.php Cette page affiche galement un formulaire suivant le statut de la personne lUTT. En effet le formulaire dun tudiant diffre de celui dun doctorant ou dun professeur.
15
Prsentation du formulaire si vous tes enseignant !!! Pour ceux qui le souhaitent, ils peuvent crer une base de donnes avec une table ayant comme attributs noms, prnoms(de la page1.php) de telle sorte que les donnes seront enregistres dans la base de donnes. Pour raliser cela, rfrez vous au TP2 o dans le script PHP vous faites une connexion Mysql, ensuite vous slectionnez la base de donnes voulue et enfin vous faites une commande insert. Ce script sera contenu dans la page2.php
16
Rle de page3.php Elle affiche le message suivant : Merci davoir rpondu au formulaire et vous affiche un lien vers la page daccueil.
B. RESUME DU CODE
En HTML, pour dire qu'on va insrer un formulaire on se sert de la balise <form>. On l'utilise de la manire suivante : <form name="nom_formulaire" method="post" action="nom_page charger"> On mettra ici les lments de notre formulaire. </form> 1) Les zones de texte <input type= "text" name= "nom" > 2) Zones de texte sur plusieurs lignes <textarea name= "nom" rows="valeur numrique" cols="valeur numrique" ></textarea> 3) Zones de texte de type password <input type= "password" name= "nom" > 4) Les boutons <input type= "radio" name= "nom" value= "valeur" checked="checked" />valeur <input type= "radio" name= "nom" value= "valeur1" />valeur1
5) Menu droulant <select name="choix"> <option value="choix1">Choix 1</option> <option value="choix2">Choix 2</option> <option value="choix3">Choix 3</option> <option value="choix4">Choix 4</option> </select>
6) Bouton de validation de type submit <input type= "submit" name= "nom" value= "valeur"> 7) Les checkbox
17
<input type="checkbox" name="case" /> Ma case cocher2 !!! Noubliez de crer un tableau, douvrir des lignes et des colonnes comme vus dans le TP2
18
Annexe1 : fichier
<?php //indique le dbut d'excution du programme php $connexion=mysql_Pconnect("localhost", "root","mdpass"); //connexion la BD Mysql $fichier = "donnes.csv"; // on met le contenu de donnes.csv dans $fichier $fic = fopen($fichier, 'r'); //on ouvre $fichier en lecture seule et on le met dans $fic if (!mysql_select_db("enseignement",$connexion)) // on slectionne la BD "enseignement " {exit;} // si la slection de la BD choue, on sort du programme. echo "<table border='1'>\n";// on cr un tableau dont la taille de la bordure est gale 1 et on l'affiche. while (!feof($fic)) {// tant qu'on n'a pas encore atteint la fin de $fic $ligne = fgetcsv($fic, 1024);// la variable ligne va contenir les champs csv(qui sont spars par des virgules) echo "<tr>";// ouverture d'une ligne qu'on affiche $j = sizeof($ligne); //$j correspond la taille de la ligne for ($i = 0; $i < $j; $i++) { // la boucle for permet de crer des colonnes dans lesquels on mettra chaque champ csv. echo "<td>$ligne[$i]</td>"; } $sql="INSERT INTO nomtable (attribut1, attribut2...) VALUES ('$ligne[$i]','$ligne[$j]',)"; // on insre le contenu de chaque colonne $resultat=mysql_query ($sql); // indique au langage PHP qu'il s'agit d'une requte SQL echo "</tr>";// fermeture de la ligne qu'on avait ouverte plus haut. } echo "</table>\n";//fermeture du tableau qu'on avait cr. ?>// fin de l'excution du programme php. Ce que fait ce fichier : Il ouvre le fichier donnees.csv tant que le fichier na pas t lu en entier, il cr un tableau dont le nombre de colonnes est gal au nombre de valeurs spares par des virgules et le nombre de lignes est gal au nombre de ligne du fichier donnes.csv. Il insre ensuite chaque valeur (les valeurs sont spares par des virgules) dans le tableau. Dans ce script, il y a une requte SQL qui va insrer dans une table de Mysql les donnes contenues dans le tableau. Nous allons modifier ce code de faon valoriser la table chercheur par exemple <?php $connexion=mysql_Pconnect("localhost", "root"); $fichier = "donnees.csv"; $fic = fopen($fichier, 'r'); if (!mysql_select_db("enseignement",$connexion)) {exit;} echo "<table border='1'>\n"; while (!feof($fic)) { $ligne = fgetcsv($fic, 1024); echo "<tr>"; $j = sizeof($ligne); for ($i = 0; $i < $j; $i++) { echo "<td>$ligne[$i]</td>"; } $sql="INSERT INTO chercheur (codeCH, nomCH, codeEQ) VALUES ('$ligne[0]','$ligne[1]', ' $ligne[2]')"; $resultat=mysql_query ($sql); echo "</tr>"; } echo "</table>\n"; ?>
19
Donnees.csv est en fait le fichier chercheur.csv que vous avez d obtenir dans le TP2, lorsque vous avez export le contenu de la table chercheur. Il contient les tuples ci-dessous. A la suite de cette exportation, vous aviez vid la table chercheur. "1","Eric","1" "2","Moh","2" "3","Christine","2" "4","Chiab","1" "5","Chantal","2" "6","Jean-Marc","2" "7","Philippe","1" "8","Florence","2" "9","Rmy","1" "10","Patrick","2" !!! Respectez les doubles quottes et les virgules. !!! Ce fichier doit galement tre enregistr dans C:\program files\easyphp5-3.2i\www !!! Assurez-vous que le curseur se trouve sur le dernier enregistrement. Exemple :
Ouvrez maintenant le navigateur web et tapez http://localhost/fichier.php. Le programme fichier est excut sur votre page web o vous verrez quun tableau a t cr contenant les donnes. Si vous ouvrez votre table chercheur (dans la BD enseignement) grce la commande suivante : select * from chercheur ; vous verrez que ces donnes ont t insres dans la table chercheur Modifiez nouveau fichier.php (les valeurs en gras sont celles que vous devez modifier) de manire valoriser les autres tables dont les contenus sont donns ci-dessous.
20
codeDIR 6 8
codeRESP 4 8 9
codeLABO 1 1 2
Libelle Bases de donnes Systmes documentaires Systmes hypermdia Gnie logiciel Interface homme machine Systmes gographiques.
codeTH 1 4 5 1 2 3 6
50
CodeTH 1 2 3 1 4 2 3 1 5 3 4 5 6
51