Connexion à une base de données

Licence Informatique 2ème année

Youssef Chahir - Alexandre Niveau - Jean-Marc Lecarpentier

 

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
  1. 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 dossier private de votre serveur web.
  2. 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 fichier Personne.sql pour créer la table Personne 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 utiliser https://NUMETU.users.info.unicaen.fr/phpmyadmin pour importer les données depuis Personne.sql.
  3. 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 fichier config.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 :
  1. 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".
  2. 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.
    Si tout fonctionne correctement, vous devriez afficher la liste des personnes présentes dans la base de données.
  3. 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 avec htmlspecialchars($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.
  4. 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> 
  5. 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.