TP 8 - PHP + MySQL

Retour à la page de l'UE

Rendu. Ce TP est à rendre sur Jalon. Vous devrez pour cela créer une archive qui contiendra tous les fichiers que vous avez produits au cours du TP.

Votre livre d'or

Dans cette section, nous allons créer un livre d'or basique en PHP qui stocke ses messages dans une base de données MySQL. Le résultat que vous devrez obtenir devra ressembler à ceci. Un compte avec une base de données a été créé pour chacun d'entre vous sur le serveur euterpe.unice.fr : vos informations de connexion (utilisateur, nom de la base de données, et mot de passe) vont vous être communiquées en début de TP.

Question 1. Allez sur la page phpMyAdmin de euterpe.unice.fr. Dans votre base de données, créez une table appellée guestbook, avec cinq colonnes. Celles-ci stockeront, pour chaque message, (1) un timestamp UNIX, (2) un nom, (3) une adresse e-mail, (4) un site web, et (5) le message en lui-même. Choisissez des types adequats. Dans phpMyAdmin, ajoutez quelques entrées dans la table représentant des messages. Vous pouvez trouver le timestamp UNIX courant sur ce site, par exemple.
Question 2. Créez votre page index.php qui contiendra un formulaire permettant de créer un message. Vous devrez utiliser la méthode POST. Vous pouvez reproduire ce que vous voyez sur cette page.
Question 3. Sous le formulaire, ajoutez le code PHP nécessaire pour afficher les messages récupérés dans la table guestbook que vous avez créée. Créez les bons divs et spans avec les bonnes classes pour que les messages s'affichent comme sur l'exemple.
Question 4. Créez maintenant la page ajout.php appellée par votre formulaire, qui permet d'ajouter les données du formulaire dans la base.

Vous remplacerez les caractères spéciaux dans les valeurs entrées par l'utilisateur (nom, e-mail, site, message) en entités HTML. Vous y remplacerez les retours à la ligne par <br /> pour les préserver (au moins dans le message). Enfin vous utiliserez la fonction addslashes() pour échapper les éventuels guillemets et apostrophes que l'utilisateur a pu entrer. Ce dernier point est important car sinon, vous aurez des problèmes lorsque vous écrirez la requête permettant d'entrer un message dans la base (MySQL croira que les apostrophes du message ferment le champ !).

Une fois cette étape de nettoyage des entrées de l'utilisateur achevée, vous pouvez écrire le code PHP permettant d'insérer le message dans la table SQL. N'oubliez pas de remercier l'utilisateur d'avoir signé, et d'ajouter un lien permettant de revenir au livre d'or.
Question 5. Assurez-vous que tout marche, y compris l'insertion de messages avec des retours à la ligne et des apostrophes, et vérifiez avec le validateur que vos HTML et CSS sont valides. Puis créez une seconde version de votre livre d'or qui utilise maintenant un fichier au lieu d'une base de données. Vous écrirez chacun des cinq champs du premier message (timestamp, nom, e-mail, site web, messages) dans les cinq premières lignes du fichier, celles du deuxième message dans les cinq lignes suivantes, etc. Ne stockez pas de balises HTML de mise en page dans le fichier (autre que <br /> pour les retours à la ligne qu'a pu entrer l'utilisateur).

Pour aller plus loin...

Reprenez la version MySQL de votre livre d'or. Vous pouvez tout d'abord utiliser du CSS pour améliorer la présentation de la page. Vous pouvez également ajouter du JavaScript pour vérifier en temps réel que le site web et l'adresse e-mail qu'a entré l'utilisateur sont correctes. Vous pouvez ensuite afficher les messages page par page, avec une dizaine de messages sur chaque page : recherchez pour cela des informations sur l'utilisation du mot-clé SQL LIMIT et de la fonction SQL COUNT(). Enfin, vous pouvez ajouter un lien à côté de chaque message qui permettra de le supprimer : il vous faudra pour cela trouver sur internet comment supprimer un élément d'une table en SQL...

Valid XHTML 1.1