Connexion à une base de données
Notes de cours
Travail personnel
Exercice 1 — Interface PHP/MySQL #
Cet exercice vise à découvrir le fonctionnement de PDO en affichant une liste de personnes.
Description de la base et mise en place
Les informations sur les personnes à afficher sont
dans une table personne
en base de données.
La description de la table est la suivante :
mysql> desc Personne; +----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | idP | int(11) | NO | PRI | NULL | auto_increment | | nom | varchar(100) | NO | | NULL | | | age | int(11) | NO | | NULL | | +----------------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
Interrogation d'une base de données
Pour télécharger les sources du TP9, veuillez cliquer sur ce lien : Télécharger les sources du TP9. Vous pouvez visualiser le résultat du TP ici.
L'objectif du TP est de réaliser une interface d'interrogation d'une base de données.
Remarque : L'archive TP9 fournit une correction du TP précédent (sans l'utilisation de la classe Personne) et contient un fichier nommé Personne.sql
.
index.php
fournie dans l'archive permet l'affichage de toutes les personnes de la base (Cela correspond à l'action "afficher"
). Il effectue les opérations suivantes:
- Exécute la requête ("SELECT * FROM Personne")
- Exploite les résultats de la requête
- Ferme la connexion et libére la ressource
Travail à faire
-
Consultez cette page de la FAQ du département pour savoir comment accéder à vos bases de données. Notez en particulier que votre mot de passe initial pour MySQL est situé dans le répertoire
Protected
de votre répertoire par défaut (/home/etudiants/LOGIN/Protected/mysql.txt
) ou dans le dossierprivate
de votre serveur web. -
Connectez-vous à votre serveur MySQL et créez une base de données. Veuillez noter que vous ne pouvez pas choisir un nom de base en dehors des noms autorisés (consultez la FAQ pour plus de détails).
Pour cela, utilisez le fichierPersonne.sql
pour créer une table nomméePersonne
avec quatre entrées initiales. Pour importer le contenu de ce fichier dans la base de données, exécutez simplement la commande suivante dans un client MySQL :
MariaDB [LOGIN_bd]> source Personne.sql
Consultez ce document de rappel sur MySQL pour plus d'informations. -
Complétez les paramètres de connexion dans la fonction
connecter()
du script Lib.php et enregistrez-les dans un fichier nomméconfig.php
dans un répertoire inaccessible via le web en utilisant la commanderequire_once(../../config.php)
. Ce fichier config.php contient lec constantes suivantes:
define('DB_HOST', 'mysql:host=mysql.info.unicaen.fr;port=3306;');
define('DB_NAME', 'dbname=...');
define('DB_USER', '....');
define('DB_PASS', '....');
-
Lorsque les données du formulaire sont valides :
- Établissez une connexion avec la base de données :
$connection =connecter();
et affichez ensuite "Connexion établie". - Encoder la valeurs de la chaine de caractères ($nom) avec
htmlspecialchars($nom)
et l'échapper avec$connection->quote($nom)
- Exécutez une requête non préparée pour insérer les données saisies dans la table Personne avec
$connection->query($requete)
.
- Affichez el nom, l'age et l'identifiant de la personne insérée dans la base.
- Établissez une connexion avec la base de données :
- Compléter la partie suppression d'une personne (
action "supprimer"
).
Important : Demander une confirmation avant de supprimer les données et transmettre les données via un formulaire caché. - Ajouter dans le script du contrôleur
index.php
toutes les actions qui permettent la suppression et la modification des données d'une personne.
Attention : Dans ce TP, nous allons utiliser simplement les requêtes non préparées.
Important
Vous devez rendre à l'issue de ce tp :
- une archive zip (LOGIN.zip) contenant (à la racine) votre répertoire tp9-tw3-2024-LOGIN, déposée sur Ecampus dans la zone prévue à cet effet.
Il est important que l'archive contienne le répertoire demandé (et pas son contenu par exemple).
Faites bien attention à ne pas déposer l'archive initiale, mais bien celle avec votre travail !
Normalement, si vous avez bien renommé le répertoire, il ne devrait pas y avoir de confusion possible - une version fonctionnelle de votre travail à l'URL
https://dev-LOGIN.users.info.unicaen.fr/TW3-2024/TP9/index.php
Attention si votre travail n'est pas en ligne ou que la page plante quand on arrive dessus, alors la note sera 0.
Il faut rendre votre travail au plus tard le 29 Mars à minuit.