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 😉
2 Commentaires
POSTER UN COMMENTAIRE
Vous devez être connecté pour pouvoir poster un commentaire...
Pas encore de compte ? Créez-en un ici !
lies19
26 April 2016 à 18:34coment le integré dans le wordpress
shab
06 June 2016 à 14:56merci bauceoup pour le forum j'ai appris bauceoup de chose durant tes tutos