Afficher les titres des dernières discussions phpBB

Un script pour afficher les titres des derniers billets sur un forum phpBB (version 2) sur une page du site, la page d'accueil généralement.

Les tables phpBB

Il faudra consulter trois tables pour obtenir les informations à afficher: le titre, l'auteur et la date.

La table des billets

post_id post_time
   

Dans cette table nous lirons l'identificateur de billet qui sert à faire le lien entre les tables.
Nous y prenons aussi la date de parution du billet qui sera éventuellement affichée et servira à trier les derniers billets.

La table des topics

post_id topic_id topic_first_post_id topic_poster
       

Elle fournit l'identificateur du premier billet de la discussion, il servira à construire l'URL.
L'identificateur de l'auteur du billet sera utilisé pour accéder aux données de la table des utilisateurs.

La table des utlisateurs

user_id username
   

Elle contient les noms des membres du forum. User_id correspond à topic_poster dans la table des topics.

Définition de la requête

Le paramètre FROM sélectionne les tables: posts, topics, users.
Le nom complet est construit en ajoutant le préfixe.

Le paramètre SELECT définit les données qui seront retournées et affichées, ce sont dans l'ordre l'identificateur du topic, le sujet du billet, la date du billet, le nom du membre qui l'a posté.

Les billets sont sélectionnés par la clause WHERE complétée par AND. Nous sélectionnons les billets parmi ceux qui débutent une discussion, et les utilisateurs qui correspondant au numéro trouvé dans la table des topics.

$sql = "SELECT TOP.topic_id, TOP.topic_title, TOP.topic_time, USER.username 
        FROM $posts REF, $users USER, $top TOP
        WHERE REF.post_id = TOP.topic_first_post_id     
        AND TOP.topic_poster = USER.user_id
        ORDER BY REF.post_time DESC LIMIT $size";

La variable $size est un paramètre du script, c'est le nombre maximum de titres à afficher.

Obtenir les paramètres d'accès à la base

Pour que le programme soit plus générique, les paramètres de nom de base de donnée, utilisateur et mot de passe sont récupérés dans le fichier config.php.

Pour ce faire, il suffit de définir le chemin du fichier de configuration, à la racine du forum, et d'inclure ce fichier dans notre script: les variables qu'il contient appartiendront alors au script...

Afficher les données

On a vu précédemment comment récupérer les données obtenues dans la base avec la fonction mysql_fetch_assoc.

La ligne qui affiche les données n'est qu'un exemple. Elle affiche le titre du billet, le nom du membre, la date.

echo "<a href='$url'>$title</a> by 
<span class='cssuser'>$username</span>  
<span class='cssdate'>$date</span>\n";

Elle peut être adaptée selon les besoins.

Utiliser le script

Le script est inclu dans la page où afficher les titres, et à l'endroit où on veut les afficher.

Il doit être configuré selon le site:

$site = "http://www.scriptol.com/";   
$forumdir = "forum/";    
$formatflag = false; 

Remplacer l'URL par celle de votre site, le répertoire du forum si besoin, et activer l'option de conversion en true si le format de la page est différent de celui du forum.

Il est aussi possible de choisir le nombre de titres à afficher avec la dernière option de la fonction display:

display($dbhost, $dbname , $dbuser, $dbpasswd , 10);  

Noter que les variables qui forment les autres paramètres viennent du fichier config.php inclu.

Le script complet

Le forum utilisé pour tester le script se trouvant sur un autre site, il n'est pas possible d'afficher directement la démo (et ce site utilise punBB et non phpBB).

Voir aussi