Soit la base de données «notes des étudiants» dont le modèle conceptuel est donné ci-dessous sous la forme d un diagramme de classes UML.

Documents pareils
PHP et les Bases de données - Généralités

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP 5. La base de données MySql. A. Belaïd 1

Mysql avec EasyPhp. 1 er mars 2006

CREATION WEB DYNAMIQUE

Pratique et administration des systèmes

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

PHP. PHP et bases de données

PHP 4 PARTIE : BASE DE DONNEES

PDO : PHP Data Object 1/13

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

Olivier Mondet

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Comment développer et intégrer un module à PhpMyLab?

SYSTÈMES D INFORMATIONS

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Installation d'un serveur FTP géré par une base de données MySQL

Modélisation et Gestion des bases de données avec mysql workbench

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

SESSION 2014 ÉPREUVE À OPTION. (durée : 4 heures coefficient : 6 note éliminatoire 4 sur 20)

I. MySQL : Serveur et SGBD

Les BASES de DONNEES dans WampServer

CREATION d UN SITE WEB (INTRODUCTION)

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Langage SQL : créer et interroger une base

Le langage SQL (première partie) c Olivier Caron

Stockage du fichier dans une table mysql:

1 Position du problème

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

OpenOffice Base Gestionnaire de Base de Données

Objectifs du TP : Initiation à Access

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de données relationnelles

Guide d installation de Gael

Principales Evolutions Version

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Configurer la supervision pour une base MS SQL Server Viadéis Services

Installation / Sauvegarde Restauration / Mise à jour

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

Gestion de base de données

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Fiche n 14 : Import / Export avec PlanningPME

Java DataBaseConnectivity

Démonstration de la mise en cache via HTML 5 sur iphone

RÉALISATION D UN SITE DE RENCONTRE

Bon ben voilà c est fait!

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Ecran principal à l ouverture du logiciel

Cours Bases de données 2ème année IUT

ENVOI EN NOMBRE DE Mails PERSONNALISES

1 Introduction et installation

Présentation du Framework BootstrapTwitter

Les bases de données

Bases de Données relationnelles et leurs systèmes de Gestion

Utilisation de l éditeur.

TP Contraintes - Triggers

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Utiliser un CMS: Wordpress

Création et Gestion des tables

Installation locale de JOOMLA SEPIA

SQL Server et Active Directory

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

DOM - Document Object Model

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

HowTo Installer egroupware 1.2 sur SME Serveur 7.0

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Mysql. Les requêtes préparées Prepared statements

Configuration de plusieurs serveurs en Load Balancing

1. Base de données SQLite

Travaux dirigés n 10

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Fiche aide pour votre messagerie Outlook, thunderbird, Gmail

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Installation Iconito École Numérique 2010 sous Windows WampServer

Séance d ED n 5 : HTML et JavaScript

Installation et Mise en œuvre de MySQL

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Présentation Windows Azure Hadoop Big Data - BI

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Bernard Lecomte. Débuter avec HTML

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

GUIDE DE DEMARRAGE V1.02

Groupe Eyrolles, 2003, ISBN : X

Création d un formulaire de contact Procédure

TP JAVASCRIPT OMI4 TP5 SRC

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Transcription:

Université Lumière Lyon 2 Université Nationale d Économie de Kharkiv Master 1 IDSM Année 2016-2017 Programmation Web Exercices pratiques (4) : PHP & MySQL Jérôme Darmont (http://eric.univ-lyon2.fr/~jdarmont/), 19/10/16 Base de données Soit la base de données «notes des étudiants» dont le modèle conceptuel est donné ci-dessous sous la forme d un diagramme de classes UML. La traduction du modèle conceptuel UML en modèle logique relationnel est donnée ci-dessous. ETUDIANT (numetu, nom, prenom, datenaiss, rue, cp, ville) MATIERE (codemat, libelle, coef) EPREUVE (numepreuve, datepreuve, lieu, codemat#) NOTATION (numetu#, numepreuve#, note) Création de la base de données 1. Se connecter à phpmyadmin (interface web écrite en PHP qui permet de gérer des bases de données MySQL). 2. Depuis l onglet «Bases de données» créer une nouvelle base de données nommée à votre convenance. Programmation Web Exercices pratiques (4) 1/4

Connexion à la base de données 1. Créer un script PHP nommé connect.inc.php contenant uniquement l affectation de valeurs aux variables listées ci-dessous. $host = "localhost"; $login = "root"; $password = ""; $dbname = "your_db"; 2. Créer le squelette d une page web classique (en-tête, corps, etc.). La sauvegarder sous le nom ex4bd.php. 3. Inclure le fichier connect.inc.php dans ex4bd.php, puis créer un nouvel objet PDO (PHP Data Object) permettant de vous connecter à MySQL en utilisant les informations saisies dans connect.inc.php. Tester. Remarque? 4. Ajouter au script ex4bd.php des instructions de gestion d erreur (try, catch). En cas de connexion réussie, afficher un message du type «Connexion réussie.». En cas d erreur, afficher l erreur standard renvoyée par la méthode getmessage(). Tester de nouveau en introduisant des erreurs dans le nom du serveur, de la base de données et dans le couple (login, mot de passe) dans le fichier connect.inc.php, puis rétablissez la connexion correctement. Création et population de table en programmation PHP 1. Toujours dans le fichier ex4bd.php, affecter à une variable la requête SQL permettant de créer la structure de la table MATIERE. Ne pas oublier de définir la clé primaire! 2. Exécuter la requête de mise à jour ci-dessus. Tester, puis recharger votre page. Le traitement des erreurs fonctionne-t-il dans ce cas? 3. La fonction exec renvoie FALSE en cas d erreur. Ajouter un test permettant de détecter les erreurs de création de table. Afficher un message différent en cas de réussite ou d échec. NB : Les booléens se testent avec l opérateur ===. 4. Affecter à une variable la requête SQL permettant d insérer dans la table MATIERE les données ci-dessous, puis exécuter cette requête de mise à jour. La fonction exec renvoyant le nombre de n-uplets traités, afficher un message du type «n n-uplet(s) inséré(s).». Tester. +-------+------------+----+ CODEMAT LIBELLE COEF +-------+------------+----+ STA Statistique 0.4 INF Informatique 0.4 ECO Econométrie 0.2 +-------+------------+----+ Création et population de table avec phpmyadmin 1. Se connecter de nouveau à phpmyadmin. Dans la partie gauche de l écran, cliquer sur le nom de votre base de données. Vous devez alors pouvoir consulter la structure et le contenu de la table MATIERE créée précédemment. 2. Dans le cadre «Créer une nouvelle table sur la base», indiquer le nom de la table EPREUVE, qui comporte 4 colonnes (attributs). Cliquer sur le bouton «Exécuter» en bas à droite. Programmation Web Exercices pratiques (4) 2/4

3. Spécifier les attributs de la table EPREUVE comme dans la figure ci-contre, puis cliquer sur le bouton «Sauvegarder» en bas à droite (l utilisation de l ascenseur vertical sera probablement nécessaire pour l atteindre). 4. Vérifier que la table EPREUVE apparaît bien dans la liste de vos tables, puis y insérer les n- uplets listés ci-contre. NB : La saisie peut se faire deux n-uplets par deux en ne cliquant qu une seule fois sur le bouton «Exécuter» du bas. Vérifier que l insertion s est correctement déroulée en activant l onglet «Afficher». 5. Télécharger le fichier http://eric.univ-lyon2.fr/~jdarmont/docs/web/import.sql, puis utiliser l onglet «Importer» pour insérer les tables et les données qu il contient dans votre base. EPREUVE +----------+----------+----------+-------+ NUMEPREUVE DATEPREUVE LIEU CODEMAT +----------+----------+----------+-------+ 11031 2003-12-15 Salle 191L STA 11032 2004-04-01 Amphi G STA 21031 2003-10-30 Salle 191L INF 21032 2004-06-01 Salle 192L INF 31030 2004-06-02 Salle 05R ECO +----------+----------+----------+-------+ Interrogation de la base de données Résultats attendus : http://eric.univ-lyon2.fr/~jdarmont/docs/web/td6req.php?num=110 1. Créer un nouveau script PHP de nom ex4req.php. Inclure le fichier connect.inc.php dans ex4req.php, puis reproduire les instructions de connexion et de gestion d erreur de la première question du TD. 2. Afficher dans un tableau HTML la liste des matières, avec tous leurs attributs descriptifs. Pour cela, placer la requête dans une variable et utiliser la méthode query() et un accès «foreach» à tous les résultats. 3. Afficher dans un tableau HTML la liste des notes en précisant pour chacune le nom et le prénom de l'étudiant qui l'a obtenue et le libellé de la matière concernée. 4. Afficher dans un tableau HTML la moyenne des notes (sans pondération) de chaque étudiant (indiquer le numéro, le nom et le prénom de l étudiant). 5. Affecter à une variable quelconque un numéro d étudiant. Répéter la question précédente, mais uniquement pour cet étudiant. Programmation Web Exercices pratiques (4) 3/4

6. Afin de rendre la dernière partie du script ex4req.php dynamique (question 5), permettre la saisie du numéro d étudiant dont on veut la moyenne dans l URI de la page. 7. Vérifier la validité du code HTML et CSS de votre page ex4req.php. Programmation Web Exercices pratiques (4) 4/4

Correction <?php // connect.inc.php $host = "localhost"; $login = "darmont"; $password = "XXX"; $dbname = $login;?> <!DOCTYPE html> <!-- ex4bd.php --> <html> <head> <meta charset="utf-8" /> <meta name="author" content="jérôme Darmont" /> <meta name="keywords" content="programmation,web,php,mysql" /> <meta name="description" content="php & MySQL" /> <title>php & MySQL : Création de base de données</title> </head> <body> <?php?> </body> </html> include("connect.inc.php"); try { // Connexion $c = new PDO("mysql:host=$host;dbname=$dbname", $login, $password); echo "<p>connexion réussie.</p>\n"; // Création d'une table $q = "CREATE TABLE MATIERE(codemat CHAR(3) PRIMARY KEY, libelle VARCHAR(20), coef FLOAT)"; if ($c->exec($q) === FALSE) echo "<p>erreur pendant la création de la table.</p>\n"; else echo "<p>table créée.</p>\n"; // Population d'une table $q = "INSERT INTO MATIERE VALUES ('STA', 'Statistique', 0.4), ('INF', 'Informatique', 0.4), ('ECO', 'Econométrie', 0.2)"; echo "<p>". $c->exec($q). " n-uplet(s) inséré(s).</p>\n"; catch(pdoexception $erreur) { echo "<p>erreur : ". $erreur->getmessage(). "</p>\n"; <!DOCTYPE html> <!-- ex4req.php --> <html> <head> <meta charset="utf-8" /> <meta name="author" content="jérôme Darmont" /> <meta name="keywords" content="programmation,web,php,mysql" /> <meta name="description" content="php & MySQL" /> <title>php & MySQL : Interrogation de base de données</title> Programmation Web Exercices pratiques (4) 5/4

<style type="text/css"> table, th, td { border: 1px solid black; table { border-collapse: collapse; caption { font-style: italic; </style> </head> <body> <?php include("connect.inc.php"); try { // Connexion $c = new PDO("mysql:host=$host;dbname=$dbname", $login, $password); // Liste des matières $q = "SELECT * FROM MATIERE"; echo "<table>\n <caption>liste des matières</caption>\n"; echo "<tr> <th>codemat</th> <th>libelle</th> <th>coef</th> </tr>\n"; echo "<tr> <td>". $l["codemat"]. "</td> <td>". $l["libelle"]. "</td> <td>". $l["coef"]. "</td> </tr>\n"; // Liste des notes $q = "SELECT nom, prenom, note, libelle FROM ETUDIANT, NOTATION, EPREUVE, MATIERE WHERE ETUDIANT.numetu = NOTATION.numetu AND NOTATION.numepreuve = EPREUVE.numepreuve AND EPREUVE.codemat = MATIERE.codemat"; echo "<table>\n <caption>liste des notes</caption>\n"; echo "<tr> <th>nom</th> <th>prenom</th> <th>note</th> <th>libelle</th> </tr>\n"; echo "<tr> <td>". $l["nom"]. "</td> <td>". $l["prenom"]. "</td> <td>". $l["note"]. "</td> <td>". $l["libelle"]. "</td> </tr>\n"; // Moyenne par étudiant $q = "SELECT e.numetu, nom, prenom, AVG(note) moyenne FROM ETUDIANT e, NOTATION n WHERE e.numetu = n.numetu GROUP BY nom, prenom"; echo "<table>\n <caption>moyenne par étudiant</caption>\n"; echo "<tr> <th>numetu</th> <th>nom</th> <th>prenom</th> <th>moyenne</th> </tr>\n"; echo "<tr> <td>". $l["numetu"]. "</td> <td>". $l["nom"]. "</td> <td>". $l["prenom"]. "</td> <td>". $l["moyenne"]. "</td> </tr>\n"; // Moyenne d'un étudiant //$num = 110; // question 5 $num = $_GET["num"]; // question 6 Programmation Web Exercices pratiques (4) 6/4

?> </body> </html> $q = "SELECT e.numetu, nom, prenom, AVG(note) moyenne FROM ETUDIANT e, NOTATION n WHERE e.numetu = n.numetu AND e.numetu = $num GROUP BY nom, prenom"; echo "<table>\n <caption>moyenne d'un étudiant</caption>\n"; echo "<tr> <th>numetu</th> <th>nom</th> <th>prenom</th> <th>moyenne</th> </tr>\n"; echo "<tr> <td>". $l["numetu"]. "</td> <td>". $l["nom"]. "</td> <td>". $l["prenom"]. "</td> <td>". $l["moyenne"]. "</td> </tr>\n"; catch(pdoexception $erreur) { echo "<p>erreur : ". $erreur->getmessage(). "</p>\n"; Programmation Web Exercices pratiques (4) 7/4