Ce TP ne concernait que la structure de base d'un blog avec commentaires. Comme il est relativement simple, les possibilités d'extension ne manquent pas.
Alors, comment pourrait-on améliorer notre blog ? Voici quelques suggestions que je vous conseille d'étudier, cela vous fera progresser.
Un formulaire d'ajout de commentaire
Sur la page
commentaires.php, rajoutez un formulaire pour que n'importe quel visiteur puisse poster un commentaire.
Ce formulaire redirigera vers une page qui enregistrera le commentaire puis qui redirigera vers la liste des commentaires, de la même façon qu'on l'avait fait avec le Mini-Chat.
C'est de votre niveau vous avez déjà réussi à le faire, allez-y !
Utiliser les includes
Certaines portions de codes sont un peu répétitives. Par exemple, on retrouve le même bloc affichant un billet sur la page des billets sur celle des commentaires.
Il serait peut-être plus simple d'avoir un seul code dans un fichier que l'on inclurait ensuite depuis
index.php et
commentaires.php.
Vérifier si le billet existe sur la page des commentaires
Imaginez que le visiteur s'amuse à modifier l'URL de la page des commentaires. Par exemple s'il essaie d'accéder à
commentaires.php?billet=819202 et que le billet n
o 819202 n'existe pas, il n'aura pas de message d'erreur (en fait le contenu de la page sera vide). Pour que votre site paraisse un peu plus sérieux, vous devriez afficher une erreur.
Pour cela, regardez si la requête qui récupère le contenu du billet renvoie des données. Pour cela, le plus simple est de vérifier après le
fetch() si la variable
$donnees est vide ou non grâce à la fonction
empty().
Ainsi, si la variable est vide, vous pourrez afficher un message d'erreur comme "Ce billet n'existe pas". Sinon, vous afficherez le reste de la page normalement.
Paginer les billets et commentaires
Quand vous commencerez à avoir beaucoup de billets (et beaucoup de commentaires) vous voudrez peut-être ne pas tout afficher sur la même page. Pour cela, il faut créer un système de pagination.
Supposons que vous souhaitiez afficher uniquement 5 billets par page. Si vous voulez afficher des liens vers chacune des pages, il faut savoir combien votre blog comporte de billets.
Par exemple, si vous avez 5 billets, il n'y aura qu'une seule page. Si vous avez 12 billets, il y aura 3 pages. Pour connaître le nombre de billets, une requête SQL avec
COUNT(*) est indispensable :
Code : SQL | SELECT COUNT(*) AS nb_billets FROM billets
|
Une fois ce nombre de billets récupéré, vous pouvez trouver le nombre de pages et créer des liens vers chacune d'elles :
Page : 1 2 3 4
Chacun de ces nombres amènera vers la page correspondante et ajoutera dans l'url le numéro de celle-ci :
Code : HTML | <a href="index.php?page=2">2</a>
|
A l'aide du paramètre
$_GET['page'] vous pourrez déterminer quelle page vous devez afficher. A vous d'adapter la requête SQL pour commencer uniquement à partir du billet n
o X. Par exemple, si vous demandez à afficher la page 2, vous voudrez afficher uniquement les billets n
o 5 à 9 (n'oubliez pas qu'on commence à compter à partir de 0 !). Revoyez la section sur LIMIT au besoin.
Et si aucun numéro de page n'est défini dans l'URL, lorsqu'on arrive la première fois sur le blog ?
Dans ce cas, si
$_GET['page'] n'est pas définie, vous devrez considérer que le visiteur veut afficher la page 1 (la plus récente).
Ca demande un peu de réflexion mais le jeu en vaut la chandelle ! N'hésitez pas à demander de l'aide sur les forums au besoin.
Réaliser une interface d'administration du blog
C'est probablement l'amélioration la plus longue. Il faudra créer des pages qui permettent de modifier, supprimer et ajouter des nouveaux billets.
Un problème cependant : comment protéger l'accès à ces pages ? En effet, vous devriez être le seul à avoir accès à votre interface d'administration, sinon n'importe qui pourra ajouter des billets s'il connaît l'URL de la page d'administration !
Plusieurs techniques existent pour protéger l'accès à l'administration. Le plus simple dans ce cas est de créer un sous-dossier
admin qui contiendra tous les fichiers d'administration du blog (
ajouter.php,
modifier.php,
supprimer.php...). Ce dossier
admin sera entièrement protégé à l'aide des fichiers
.htaccess et
.htpasswd, ce qui fait que personne ne pourra charger les pages qu'il contient à moins de connaître le login et le mot de passe.
Pour en savoir plus sur la protection d'un dossier avec ces fichiers
.htaccess et
.htpasswd, je vous invite à consulter
cette annexe au cours.
Allez, au boulot !
