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 😉
Votre commentaire