Astuce : Afficher les 5 derniers topic actifs de son forum phpbb3

Comme sa faisait longtemps que je n’avais pas mis a jour le blog (faute d’idée pour faire des tutoriels), j’ai décidé de vous faire partagé une astuces. En gros, sa va permettre d’afficher les 5 derniers topic actifs de votre forum, sur la page d’accueil de votre site par exemple. C’est sympa dans le sens ou un membre pourra directement allez aux topics actifs sans parcourir tout le forum !

J’espère que vous avez tous bien compris, dans le cas contraire laissez moi un commentaires et je tacherais d’y répondre ! Et je supose aussi que vous n’avez pas envie de tout recopier donc voila les codes php :
La page « identifiants.php » :

<?php
// N'oubliez pas de bien changé vos variables en fonction de votre hébergeur et de votre mot de passe
$adresse = 'localhost';
$nom = 'root'; 
$motdepasse = ''; 
$database='forum'; 
?>

Le code php a inclure dans votre page d’accueil par exemple :

<?php
// Premiere etape, on se connecte a la BDD, les identifiants sont dans un fichier a par que l'on inclus 
include("includes/identifiants.php"); //faites attention au chemins ...
mysql_connect($adresse, $nom, $motdepasse); 
mysql_select_db($database); 
			
//verifier chez vous, si c'est la meme table et les meme donnee
$requeteDernierTopic = mysql_query("SELECT topic_id, forum_id, topic_title FROM php_topics ORDER BY topic_id DESC LIMIT 5"); 
			
//et pour termine une petite boucle
echo "<p>Dernier topics actifs :"; 
while($dernierPosts = mysql_fetch_array($requeteDernierTopic))
{
echo '<a href="./phpBB3/viewtopic.php?f='.$dernierPosts['forum_id'].'&t='.$dernierPosts['topic_id'].'">'.$dernierPosts['topic_title'].'</a>"'; 
}
echo "</p>"; 

?>

Attention, je vous donne mon astuce, mais rien ne garantie que c’est « la méthode ». D’ailleurs n’oubliez pas de modifier ce script en fonction de vos besoin (les identifiants, le chemin de votre forum par rapport a la page d’accueil etc…. sa peut être source d’erreurs).

6 commentaires ont été ajoutés, ajoutez le vôtre.

Vous pouvez laisser un commentaire, cependant je ne peux pas vous garantir qu'il sera modéré rapidement ou qu'il aura une réponse, faute de temps pour m'occuper du site.

  1. DrWhat

    J’ai voulu testé ton code mais j’ai une erreur. Sur,

    while($dernierPosts=mysql_fetch_array($requeteDernierPosts))

    j’ai l’erreur:

    SCREAM: Error suppression ignored for
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Site\incl\news.php on line 19

    t’aurais une idée?

  2. ShouG

    Salut j’ai poster hier mais sa n’as pas l’ai d’avoir marché, je disait que le code ne marchait pas 😡

    • admin

      Je viens d’aller sur ta page et apparemment tu as résolu le problème 🙂

      Le problème est simple, en fait la page est dans un certain encodage, et les informations provenant du forum est dans un encodage différent, ce qui fait que soie on à la page avec des caractère bizarre et la liste des topics correct soie l’inverse ….
      La solution consiste donc a ré-encodé les données provenant du forum dans le même encodage que la page, via une fonction par exemple comme dans le petit script que j’ai mis en commentaire.

      C’est un peu compliqué a comprendre, d’autant plus que tout ce qui est encodage c’est plutôt barbant et pas très intéressant ….

  3. ShouG

    merci pour la réponse rapide, je teste tout ça demain .
    Merci

    • admin

      Bonjour,

      Moi aussi j’ai eu ce problème et j’ai du rusé, c’est pas très propre, mais ca marche :

      <?php
      function utf2latin($text) {
      $text=htmlentities($text,ENT_COMPAT,'UTF-8');
      return html_entity_decode($text,ENT_COMPAT,'ISO-8859-1');
      }
      //
       
      $requeteDernierPosts=mysql_query("SELECT topic_id, forum_id, topic_title FROM phpbb_topics ORDER BY topic_id DESC LIMIT 5"); 
      echo '<p style="text-decoration:underline;">Les derniers topic du forum :</p>';
      echo '<p class="stat_site">';
      while($dernierPosts=mysql_fetch_array($requeteDernierPosts)) 
      {
      	echo '&nbsp; <a href="forum/viewtopic.php?f='.$dernierPosts['forum_id'].'&amp;t='.$dernierPosts['topic_id'].'" rel="nofollow">'.utf2latin($dernierPosts['topic_title']).'</a><br/>'; 
      }
       
      echo '</p>'; 
      ?>
      

      (C’est le script que j’utilise sur mon site)

      L’astuce c’est de passer par une fonction qui ré-encode la chaine en quelques chose d’exploitable.