Forum Programmation.php Affichage sélectif à partir de plusieurs tables ?

Posté par  .
Étiquettes : aucune
0
27
juil.
2005
Bonjour

Voilà, j'ai PunBB comme forum et suis en train de développer mon site. En page d'accueil, j'avais pensé mettre les derniers sujets du forum (classés par dates de réponses). Le problème, c'est que ça affiche TOUS les sujets, privés compris. J'aurais donc aimé savoir comment faire en sorte de ne pas afficher les sujets du privé, juste du publique.

Voici la table des topics, forums, permissions

_foo_topics :_
id # id du sujet
poster # pseudo du posteur du sujet
subject # titre
posted # date du sujet
last_post # date de la dernière réponse
last_post_id # id de la dernière réponse
last_poster # pseudo du posteur de la dernière réponse
[...] # des champs sans importance pour ma question
forum_id # id du forum dans lequel est le sujet

_foo_forums :_
id # id du forum
forum_name # nom du forum
forum_desc # description
[...]
cat_id # catégorie du forum

_foo_forum_permissions :_
group_id # id du groupe d'user (visiteur, membre, modo, admin)
forum_id # id du forum auquel on met des permissions restrictives (exemple : juste les admin et modo)
read_forum # lisible ou non
post_replies # si on peut répondre ou non
post_topics # si on peut poster des sujets ou non

_foo_groups :_
g_id # id du groupe
g_title # nom du groupe
g_user_title # idem
g_read_board # si le groupe peut entrer dans le forum ou non
g_post_replies # si le groupe peut poster des réponses ou non
g_post_topics # si le groupe peut poster des sujets ou non
g_post_polls # si le groupe peut poster des sondages ou non
[...]

Et donc comme je l'ai dit, il faut que seuls les message des forums publiques soient affichés. Quelqu'un aurait une idée ?

A la base j'avais dans l'idée de faire une requête qui sélectionnerait les topics en excluant ceux des forums où les visiteurs ne pouvaient pas entrer, mais comment faire ?
  • # Bosser SQL

    Posté par  (site web personnel) . Évalué à 3.

    Ben, sans trop connaitre la base de données que tu utilises, le principe c'est de faire une requete sur ta table contenant les posts liée à ta table contenant les permissions (il y a peut être plusieurs jointures à faire) et d'appliquer une instruction restrictive WHERE sur le champ déterminant si un forum est public ou pas.
    Ça fait quelque chose qui ressemble à ça :

    SELECT tfoo.bar, ..., tbar.bla, ... tbla.foo
    FROM tfoo
    JOIN tfoo.truc on tbar.truc
    JOIN tbar.truc2 on tbla.truc2
    WHERE tbla.truc="public" ;

    enfin, c'est le principe, faut voir selon ta base ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.