Exercice 15a : MySQL

publicité
Exercice 15a : MySQL
Partie 0 : Création d’une base de données MySql avec PhpMyAdmin
Vous devez créer localement une base de données avec PHPMyAdmin avec votre code
(1ère lettre famille et 1ère lettre prénom). Avec utf8mb4_bin comme interclassement!
Vous devez faire une table "t_province" avec un champ "nom_province". Même
interclassement et c'est un varchar de 50 caractères.
Entrée par la suite les noms des Provinces canadiennes dans la table!
Ensuite, dans le fichier ExempleMySQL.php, mettre vos 2 lettres dans la variable $bdd
de la section CONNEXION À LA BASE DE DONNÉES à la place lj.
Tester le fichier PHP en essayant de comprendre!
Partie 1 : Création d’une base de données MySql avec PhpMyAdmin
Vous devez créer une autre table dans votre base de données (voir no 1 ci-dessous) avec
PHPMyAdmin qui permettra de gérer les notes des étudiants. Vous allez avoir besoin des
champs suivants :
 Identification (clé primaire unique)
 Nom
 Prenom
 Motdepasse
 Courriel
 Laboratoire
 ExamenFinal
 Commentaire
1. Créer la table « LABO_MySQL » dans PhpMyAdmin. Utiliser utf8mb4_bin comme
interclassement. Nommez vos champs et votre table avec un standard (Faire
attention : sans accent, ni espace). Tous les champs seront de type varchar avec une
taille adéquate sauf la note de laboratoire et d’examen qui seront des float.
2. Entrez les étudiants suivant dans votre table (Insérer avec PHPMyAdmin) :
'lapalmjo', 'Lapalme', 'Jocelyn', 'ok1', '[email protected]', '49', '49.8';
' renaudma', 'Renaud', 'Mathieu', 'ok2', '[email protected]', '32', '5.8';
'toddje', 'Todd', 'Jean', 'ok3', '[email protected]', '42', '39.8';
'labberi', 'Labbe', 'Richard', 'ok4', '[email protected]', '28.3', '25.2';
'royda', 'Roy', 'Dan', 'ok5', '[email protected]', '25.5', '11';
'lauzonis', 'Lauzon', 'Isabelle', 'ok6', '[email protected]', '45', '45.9';
JG et JL
Page 1
Exercice 15a : MySQL
3. Exportez votre BD dans un fichier (Exporter dans PHPMyAdmin avec option
transmettre) avec le nom « LABO_MySQL ». Vérifiez le contenu du fichier
« LABO_MySQL.sql ».
4. Supprimez la table (Supprimer dans PHPMyAdmin) et importer votre fichier
« LABO_MySQL.sql » (dans PHPMyAdmin).
Partie 2 : Affichage des données provenant de MySql avec PHP
Vous allez compléter les fonctions du fichier de votre exercice 14 (2e énoncé de PHP
POST) pour faire afficher le contenu de la table des étudiants que vous venez de créer.
Renommer le fichier d'exercice pour "exer_15a.php"
1. Inclure les principales instructions de connexion dans votre fichier à l'endroit
prévu (/* CONNEXION À LA BASE DE DONNÉES*/).
<?php
…
$host ="localhost"; // selon vos configuration local
$bdd = "lj"; //votre nom de BD (vos 2 lettres)
$user = "root"; //votre user
$passwd = ""; //votre mot de passe
$connexion = mysqli_connect($host, $user,$passwd, $bdd) or die(mysqli_error());
define ("cst_JeuCaracBD"
, "utf8mb4");
define ("cst_JeuCaracBD_ReglesComparaison", "utf8mb4_bin");
$connexion->query ("SET NAMES
'".cst_JeuCaracBD."' COLLATE
'".cst_JeuCaracBD_ReglesComparaison."'");
$connexion->query ("SET CHARACTER_SET '".cst_JeuCaracBD."'");
…
?>
2. Pour mettre les données de connexion dans un fichier à part (utilisable par d'autres
fichiers et plus sécuritaire pour vos nom et mot de passe), vous pouvez mettre les
instructions php du no 1. ci-dessus dans un nouveau fichier php qui ne contient que
ces instructions et inclure ce fichier dans vos pages qui veulent y accéder. Donc votre
fichier PHP ne doit contenir que ceci pour faire la connexion :
<?php
…
include "./Connexions/connexion.php"; //les instructions de connexion sont inclus
dans votre fichier à partir du fichier connexion.php sous le répertoire
Connexions.
Mais encore mieux :
require_once("./Connexions/connexion.php"); //inclus qu'une seule fois…
?>
JG et JL
Page 2
Exercice 15a : MySQL
3. Maintenant que vous êtes connecté, vous allez maintenant lire dans la table
LABO_MySQL afin d'afficher tous les étudiants dans la page lorsqu’un professeur
accède à la page. Vous devez donc écrire les instructions dans le if approprié (celui du
prof).
Pour lire dans une table vous devez créer une variable qui contiendra la requête SQL
qui permettra de trouver tous les étudiants et les afficher en ordre alphabétique. La
mettre dans un section /* Requêtes */ dans les VARIABLES GLOBALES.
$query = "select * from LABO_MySQL order by nom, prenom";
Dans le traitement du prof, vous exécuter cette requête sur le serveur MySQL avec la
fonction mysqli_query.
$result = mysqli_query($connexion, $query);
Ensuite vous parcourez ce résultat qui est une grille de tous les étudiants pour lire les
étudiants un par un avec la fonction mysqli_fetch_array (ramasse 1 enregistrement
à la fois)
$etudiant = mysqli_fetch_array($result, MYSQLI_ASSOC);
Par contre, si vous voulez en lire plus qu’un vous devez exécuter la fonction fetch
array le nombre de fois que vous avez d’étudiant. Résultat avec echo… Il faudra
mettre le contenu dans la variable qui servira à afficher le contenu !
while($etudiant = mysqli_fetch_array($result)) // pas de point virgule dans un while
{
$var_XHTML .= "allo";
//si vous avez 6 étudiants, vous verrez 6 allo
}
Finalement, pour afficher autre chose que « allo » et voir les noms, prénoms et notes
finales des étudiants de votre table -> utiliser la syntaxe suivante :
Le nom de la variable qui reçoit le fetch_array suivit de crochet et dans les crochets,
le nom du champ entre guillemet. Pour Nom et prénom :
$etudiant["Nom"].", ".$etudiant["Prenom"];
Voici le résultat que vous devez faire afficher, alors compléter l’exemple précédent
pour arriver à voir ça. Le nom et prénom proviennent de la base de données et la note
obtenue est une addition de la note de laboratoire et de l’examen.
JG et JL
Page 3
Exercice 15a : MySQL

Vous devez afficher en rouge la note finale si un étudiant a en bas de 60 sur 100
et écrire échec à côté de la note (il y a plus de 2 notes). Intégrer cela dans les
CSSs par une classe.
Roy, Dan a obtenu 36.5 / 100 Échec
4. Pour rendre l’affichage des résultats des étudiants plus intéressant, vous aller aussi
mettre les données dans un tableau.
5. Ensuite, pour la partie étudiant, copier les instructions faites dans la section du prof
dans la section étudiant et adapter le tout pour la recherche et l'affichage d'un seul
enregistrement. Votre requête SQL doit sélectionner seulement celui dont
l’identification et le mot de passe sont demandés. Si l’étudiant est présent on affiche
ses informations, sinon le message accès refusé apparaîtra (cette requête sera dans la
déclaration des variables locales de la fonction).
Il faut que les tableaux soient centrés avec une bordure de 1px (ajusté les styles)!
N.B. L’affichage du code doit être conforme sur le serveur (PHP) et sur le
Navigateur (XHTML et CSS).
JG et JL
Page 4
Téléchargement