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 | | | dateN | DATE | 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.
Le contrôleur index.php
fourni dans l’archive gère toutes les actions d'interrogation d'une base de données.
Travail à réaliser
Partie I : Injection des données et personnalisation des paramètres
- Consultez cette page de la FAQ du département pour savoir comment accéder à vos bases de données. Assurez-vous de bien noter que votre mot de passe initial pour MySQL se trouve dans le répertoire
Protected
de votre dossier personnel (/home/etudiants/LOGIN/Protected/mysql.txt
) ou dans le dossierprivate
de votre serveur web. - Connectez-vous à votre serveur MySQL et créez la table
Personne
. Veuillez noter que le nom de la base de données doit respecter les noms autorisés (vous pouvez consulter la FAQ pour plus de détails).
Utilisez le fichierPersonne.sql
pour créer la tablePersonne
avec dix entrées initiales. Pour importer ce fichier dans la base de données, exécutez la commande suivante dans un client MySQL :
MariaDB [LOGIN_bd]> source Personne.sql
Vous pouvez également consulter ce document de rappel sur MySQL pour plus d'informations.
Si vous préférez, vous pouvez utiliserhttps://NUMETU.users.info.unicaen.fr/phpmyadmin
pour importer les données depuisPersonne.sql
. - Complétez les paramètres de connexion dans la fonction
connecter()
du script donnees.php et enregistrez-les dans un fichier nomméconfig.php
. Ce fichier doit être placé dans un répertoire inaccessible via le web. Utilisez la commande suivante pour inclure ce fichier dans vos scripts :require_once(../../config.php)
. Le fichierconfig.php
doit définir les constantes suivantes :
define('DB_HOST', 'mysql:host=mysql.info.unicaen.fr;port=3306;');
define('DB_NAME', 'dbname=...');
define('DB_USER', '....');
define('DB_PASS', '....');
Partie II : Interrogation d'une base de données
Attention : Dans ce TP, nous allons dans un premier temps utiliser que des requêtes non préparées.Dans
index.php
:
- Commencez par établir une connexion avec la base de données en utilisant la fonction
$connection = connecter();
et affichez ensuite le message "Connexion établie". Cette étape correspond à l'action "tester". - Affichez les personnes déjà insérées dans la table
Personne
. Cette étape correspond à l'action "afficher", qui consiste en :- Connexion à la base de données,
- Exécution d'une requête (SELECT),
- Exploitation des résultats de la requête,
- Déconnexion de la base de données.
- Saisir via le formulaire une nouvelle personne à insérer dans la base. Lorsque les données du formulaire sont valides :
- Encodez la valeur de la chaîne de caractères
$nom
avechtmlspecialchars($nom)
et échappez-la avec$connection->quote($nom)
. - Exécutez une requête non préparée pour insérer les données saisies dans la table
Personne
en utilisant$connection->query($requete);
. - Récupérez l'identifiant de la personne insérée avec
$connection->lastInsertId();
. - Affichez le nom, la date de naissance et l'identifiant de la personne insérée dans la base de données.
- Encodez la valeur de la chaîne de caractères
- Implémentez la fonctionnalité de suppression d'une personne (action "supprimer").
Important : Demandez une confirmation avant de supprimer une entrée, et transmettez les données via un formulaire caché. Exemple :<form action="index.php?action=delete" method="post"> <input type="hidden" name="idP" value="' . $idP . '"/> <p>Etes-vous sûr de vouloir supprimer cette personne ?</p> <p> <input type="submit" value="Confirmer"/> <a href="index.php">Annuler</a> </p> </form>
- Ajoutez dans le script du contrôleur
index.php
toutes les actions nécessaires pour supprimer et modifier les données d'une personne.
Important
Vous devez rendre à l'issue de ce tp :
- une archive zip (LOGIN.zip) contenant (à la racine) votre répertoire tp9-tw3-2025-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-2025/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 4 Avril à minuit.