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    |                |
| 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.

Le contrôleur 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

  1. 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 dossier private de votre serveur web.
  2. 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 fichier Personne.sql pour créer une table nommée Personne 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.
  3. 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 commande require_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', '....');
  4. 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.
  5. 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é.
  6. 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.