Les exercices suivants sont des exercices supplémentaires pour réviser le deuxième chapitre de cours. Ils viennent en complément du TP2 qui doit être terminé avant de faire ces exercices. Ces exercices sont optionnels mais permettent de revoir les principales notions du chapitre 2 (excepté la partie relative à la sécurité des sites Web).
Exercice 1 : Création de la base de données
Connectez-vous sur votre compte postgreSQL et exécutez ce script SQL. Ce script, une fois exécuté, crée la table personnages
contenant la liste des principaux personnages de la série Simpson.
Rappels :
-
Commande pour se connecter à postgreSQL :
psql -h aquabdd -d etudiants
-
Commande pour exécuter un script SQL (dans l’invite de commandes de postgreSQL) : ` \i nom_script`
Exercice 2 : Affichage des informations de tous les personnages des Simpsons
-
Définir la fonction
liste
prenant en paramètre un objet PDO (connecté à la base de données) et affichant sous forme d’une liste non ordonnée les personnages de la base. Pour chaque personnage, l’affichage doit êtreNom, Prenom, Age ans
si la valeur associée àAge
n’est pasnull
, etNom, Prenom, âge non défini
sinon.Note : La méthode utilisée pour récupérer les résultats doit être
fetch
. -
Créer un script
liste.php
affichant la liste des personnages.
Exercice 3 : Affichage des membres d’une même famille
-
Définir la fonction
liste_famille
prenant en paramètre un objet PDO (connecté à la base de données) et un nom de famille. La fonction devra afficher la liste des personnages dont le nom de famille est celui passé en paramètre. L’affichage devra être le même que dans l’exercice précédent.Note : La méthode utilisée pour récupérer les résultats doit être
fetchAll
. -
Créer un script
familyMembers.php
affichant la liste des personnages d’une même famille dont le nom est passé dans l’url (paramètrefamily
). Si ce paramètre n’existe pas ou si sa valeur n’est pas composée uniquement de chiffres, lettres ou underscores, alors le script affiche un message d’erreur.
Exercice 4 : Utilisation d’une classe Model
- Créer une classe
Model
(fichierModel.php
) contenant un attribut privé$bd
. Le constructeur (privé) créera un objet PDO connecté à la base de données. Cet objet sera stocké dans$bd
. Implémenter le design pattern singleton pour la classeModel
:- ajouter un attribut statique privé
$instance
initialisé ànull
, - implémenter la méthode statique publique
getModel()
retournant l’instance deModel
stocké dans l’attribut$instance
. Si ce dernier contient la valeurnull
, la méthode doit créer avant une instance deModel
et la stocker dans$instance
.
- ajouter un attribut statique privé
-
Définir la méthode
getFamily()
prenant en paramètre un nom de famille et retournant tous les personnages de cette famille. -
Modifier le script
familyMembers.php
pour que celui-ci accède à la base de données en utilisant le modèle. -
Définir la méthode
getFamilyNames
retournant un tableau de chaînes de caractères correspondant aux différents noms de familles dans la table des personnages.Requête SQL :
SELECT DISTINCT nom FROM personnages;
- Définir le script
families.php
. Ce script doit afficher la liste des différents noms de familles de la tablepersonnages
. Chaque nom doit être un hyperlien sur le scriptliste_famille.php
.