Créer un forum en PHP - #9 Finitions


Dans ce dernier épisode de la série, je vous propose de créer quelques fonctions afin de fignoler un peu notre forum :-) Comme dit, vous avez toutes les clés en main pour améliorer ce forum (système d'édition, affichage du nombre de vues, etc.). Cependant, je ferai bien sûr des tutos annexes qui vous permettront d'améliorer ce forum au fil du temps ;-)

  • php/functions_forum.php
<?php
function get_pseudo($id) {
   global $bdd;
   $pseudo = $bdd->prepare('SELECT pseudo FROM membres WHERE id = ?');
   $pseudo->execute(array($id));
   $pseudo = $pseudo->fetch()['pseudo'];
   return $pseudo;
}
function reponse_nbr_categorie($id_categorie) {
   global $bdd;
   $nbr = $bdd->prepare('SELECT f_messages.id FROM f_messages LEFT JOIN f_topics_categories ON f_topics_categories.id_topic = f_messages.id_topic WHERE f_topics_categories.id_categorie = ?');
   $nbr->execute(array($id_categorie));
   return $nbr->rowCount();
}
function reponse_nbr_topic($id_topic) {
   global $bdd;
   $nbr = $bdd->prepare('SELECT f_messages.id FROM f_messages LEFT JOIN f_topics ON f_topics.id = f_messages.id_topic WHERE f_topics.id = ?');
   $nbr->execute(array($id_topic));
   return $nbr->rowCount();
}
function derniere_reponse_categorie($id_categorie) {
   global $bdd;
   $rep = $bdd->prepare('SELECT f_messages.* FROM f_messages LEFT JOIN f_topics_categories ON f_topics_categories.id_topic = f_messages.id_topic WHERE f_topics_categories.id_categorie = ? ORDER BY f_messages.date_heure_post DESC LIMIT 0,1');
   $rep->execute(array($id_categorie));
   if($rep->rowCount() > 0) {
      $rep = $rep->fetch();
      $dr = $rep['date_heure_post'];
      $dr .= '<br /> de '.get_pseudo($rep['id_posteur']);
   } else {
      $dr = 'Aucune réponse...';
   }
   return $dr;
}
function derniere_reponse_topic($id_topic) {
   global $bdd;
   $rep = $bdd->prepare('SELECT f_messages.* FROM f_messages LEFT JOIN f_topics ON f_topics.id = f_messages.id_topic WHERE f_topics.id = ? ORDER BY f_messages.date_heure_post DESC LIMIT 0,1');
   $rep->execute(array($id_topic));
   if($rep->rowCount() > 0) {
      $rep = $rep->fetch();
      $dr = $rep['date_heure_post'];
      $dr .= '<br /> de '.get_pseudo($rep['id_posteur']);
   } else {
      $dr = 'Aucune réponse...';
   }
   return $dr;
}
?>
  • views/forum.view.php
<table class="forum">
   <tr class="header">
      <th class="main">Catégories</th>
      <th class="sub-info messages hide-640">Réponses</th>
      <th class="sub-info messages hide-640">Vues</th>
      <th class="sub-info dmessage">Dernière réponse</th>
   </tr>
   <?php
   while($c = $categories->fetch()) {
      $subcat->execute(array($c['id']));
      $souscategories = '';
      while($sc = $subcat->fetch()) { 
         $souscategories .= '<a href="/PrimTemp/forum_topics.php?categorie='.url_custom_encode($c['nom']).'&souscategorie='.url_custom_encode($sc['nom']).'">'.$sc['nom'].'</a> | ';
      }
      $souscategories = substr($souscategories, 0, -3);
   ?>
   <tr class="categories">
      <td class="main">
         <h4><a href="/PrimTemp/forum_topics.php?categorie=<?= url_custom_encode($c['nom']) ?>"><?= $c['nom'] ?></a></h4>
         <p>
         <?= $souscategories ?>
         </p>
      </td>
      <td class="sub-info hide-640"><?= reponse_nbr_categorie($c['id']) ?></td>
      <td class="sub-info hide-640">999 999 999</td>
      <td class="sub-info"><?= derniere_reponse_categorie($c['id']) ?></td>
   </tr>
   <?php } ?>
</table>
  • views/forum_topics.view.php
<table class="forum">
   <tr class="header">
      <th class="main">Sujet</th>
      <th class="sub-info">Auteur</th>
      <th class="sub-info hide-640">Réponses</th>
      <th class="sub-info messages hide-640">Vues</th>
      <th class="sub-info">Dernière rép.</th>
   </tr>
   <?php while($t = $topics->fetch()) { ?>
   <tr>
      <td class="main">
         <h4><a href=""><a href="topic.php?titre=<?= url_custom_encode($t['sujet']) ?>&id=<?= $t['topic_base_id'] ?>"><?= $t['sujet'] ?></a></a></h4>
      </td>
      <td class="sub-info"><p><?= $t['pseudo'] ?></p><!-- <p>le <?= $t['date_heure_creation'] ?></p> --></td>
      <td class="sub-info hide-640"><p><?= reponse_nbr_topic($t['topic_base_id']) ?></p></td>
      <td class="sub-info hide-640"><p>1562</p></td>
      <td class="sub-info"><p><?= derniere_reponse_topic($t['topic_base_id']) ?></p></td>
   </tr>
   <?php } ?>
</table>
Sur ce, si vous avez des questions, propositions d'améliorations, etc. Je vous laisse en discuter sur le topic de ce nouveau forum que j'ai dédié à la création de celui-ci 😉

A propos de l'auteur

PrimFX
PrimFX

Salut tout le monde ! Je m'appelle Boris, j'ai 18 ans et je suis passionné d'informatique et de technologie. Je partage cette passion à travers mes vidéos que tu peux retrouver sur YouTube sous le nom de PrimFX ou bien sur ce site bien sûr (tutoriels de programmation (HTML, CSS, PHP), gameplays, vlogs high-tech...). @+

A voir aussi

2 Commentaires

POSTER UN COMMENTAIRE

Vous devez être connecté pour pouvoir poster un commentaire...

Pas encore de compte ? Créez-en un ici !



  • Photo de profil de lies19

    lies19

    26 April 2016 à 18:34

    coment le integré dans le wordpress

  • Photo de profil de shab

    shab

    06 June 2016 à 14:56

    merci bauceoup pour le forum j'ai appris bauceoup de chose durant tes tutos