- E. Nauer Interfaçage base de données - langage de programmation Gestion d’ une base de données de notes On souhaite gérer, dans une base de d onnées, les résultats obtenus par des élèves à des examens On considère, pour simplifier le problème que chaque élève est uniquement représenté par son prénom, qu’il n’y a pas 2 élèves qui ont le même prénom et que chaque élève n'obtient au maximum qu'une seule note par matière . Les données nécessaires à l’application peuvent ainsi être stockées dans 3 tables : - MATIERE( id_matiere , matiere) - ELEVE( id_eleve , eleve) - RESULTAT( id_eleve, id_matiere , note) Une interface web (cf. copie d’écran ) est fourni e à tra vers le fichier InterfaceGestionNotes. h tml Cette interface permet d’appeler des programmes PHP qui vont interagir avec la base de données. Le déclenchement d es programmes devra produire l'affichage d'un résultat (message de succès ou cause d'erreur) dans une autre fenêtre. Rien de spécial n’est à faire pour que le résultat s’affiche dans une nouvelle fenêtre (car dans le code HTML, il y a déjà target="Resultat" Initialisation de la base de données 1. Créer, à travers l'interface PhpMyAdmin les 3 tables, p uis insérer dans la table ELEVE les valeurs « Pierre », « Paul » « Jean » et « Jacques » et dans la table MATIERE les valeurs « Maths », « Bases de données », « PHP » et « Allemand ». 2. Depuis PhpMyAdmin, exporter le code SQL de la base de données pour compl éter le fichier Initialiser.php fourni. Ce programme, appelé depuis l 'interface à travers le bouton Initialiser , doit créer la structure de la base de données (création de la base, création des tables, insertion des 4 élèves et des 4 matières). Afficher le message « Initialisation réussie » si tout s’est bien passé. 3. Vérifier dans PhpMyAdmin que l’exécution de Initialiser.php créé bien la base de données, les 3 tables, et insère les 4 élèves et les 4 matières Enregistrement d’une note (1 ère version av e c API mysql i e n proté geant les données avec 4. Pour enregistrer les notes des élèves, l'utilisateur sélectionnera un élève dans la liste des élèves, une matière dans la liste des matières et saisira une valeur entière. Vérifier, dans un programme PHP nommé Enregistrer.php , que la valeur saisie est une valeur entière compr ise entre 0 et 20. Si le couple <id_eleve, id_matiere> existe déjà dans la table, modifier la valeur de la note attribuée à ce couple et afficher « Note modifiée pour ... en ... » suivi de la note , sinon insérer le triplet <id_eleve, id_matiere, note> dans la table et afficher « Enregistrement de la note pour ... en ... » suivi de la note. Suppression d’une note 5. Pour supprimer la note d'un élève (programme Supprimer.php ) , l'utilisateur sélectionnera un élève dans la liste des élèves, une matière dans la liste d es matières. Si le couple <id_eleve, id_matiere> existe dans la table RESULTAT, supprimer l e triplet <id_eleve, id_matiere, note> et afficher « Note supprimée pour ... en ... ». Si l’élève n’avait pas de note dans la matière, afficher « Pas de note pour ... en ... ». Affichage des résultats 6. Pour consulter les résultats, l'utilisateur doit pouvoir sélectionner un ensemble d'élèves et un ensemble de matières (par des boutons de type RADIO qu'il aura à cocher) ainsi qu'un ordre de tri (par défaut, le tri sera réali sé sur les élèves). Vérifier, dans un programme PHP nommé Afficher.php , que l’utilisateur a au moins sélectionner un élève et une matière et, si c’est le cas, dans ce cas afficher les résultats obtenus par ces élèves dans ces matières dans un tableau HTML. R appel : en HTML , un tableau est défini par les éléments : - <table>...</table> pour définir le début et la fin du tableau ; - <tr>...</tr> pour définir le début et la fin d’une ligne du tableau (dans cette application, chaque ligne contiendra 3 éléments : la mat ière, l’élève et la note) ; - <th>...</th> pour définir une case qui est un entête de colonne ; - <td > ...</td > pour définir une case contenant des données. Il se peut qu’il n’y ait pas de note pour les élèves dans les matières sélectionnées. Dans ce cas, afficher le message : « Pas de note pour les élèves et mmatières sé lectionnés ». Adaptation de l’interface aux élèves et matières présents dans la base de données 7. L ’interface InterfaceGestionNotes.html est un fichier HTML au contenu fixe ; les listes d’élévès e t de matières ainsi que les cases à cocher ne proviennent pas d’une interaction avec la base de données Copier InterfaceGestionNotes. html en InterfaceGestionNotes.ph p afin de prendre en compte les tables ELEVE et MATIERE pour l’affichage des listes dérou lantes et des cases à cocher. Par exemple, le code, ci - dessous, qui correspond au contenu de la liste déroulante des élèves devra être produi t dynamiquement à partir d es élèves se trouvant dans la table ELEVE <option value="1">Pierre</option> <op tio n value="2">Paul</option> <option value="3">Jean</option> <option value="4">Jacques</option> De même, les listes déroulantes des matières, ainsi que les cases à cocher des élèves et des matières devront être générées dynamiquement à partir de la bas e de données Utilisation de PDO et requêtes préparées 8. Pour test er la bibliothèq ue PDO , c opier Enregist r er .php en Enregistr er.pdo.php et modifier le code de Enregistr er.pdo.php afin de ne plus utiliser l es fo nctions m ysqli_ ... e N les rempla çant par des instruction s équival ent e s en PDO Pour cette vers ion de code, utiliser également des r equêtes paramétrée s pour p rot éger l es données en provenance de l ’ utilisateur (les protextions via m ysqli_ re al_escape_string n e seront donc plus nécessaire s ).