Forum, comment signaler les nouveaux sujets, messages

Résolu
cs_b4d Messages postés 29 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 18 mars 2008 - 18 nov. 2005 à 15:38
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 18 nov. 2005 à 16:43
Bonjour à tous,
J'ai créé un forum assez simple selon cette structure:

FORUM 1: - Sujet 1 : ~message 1
~message 2
~message 3
- Sujet 2 : ~message 1
~message 2
FORUM 2: - Sujet 1 : ~message 1
...

Voici à quoi ressemble les tables:
forum: id (int), titre (text), description (text)
sujet: id (int), idforum (int), sujet (text), description (text), pseudo (text), date (timestamp)
message: id (int), idsujet (int), idforum (int), pseudo (text), message (text), date (timestamp)

Remarque: Pour acceder au forum, il faut être membre...

Maintenant, j'aimerais bien améliorer mon forum et mettre une icone si c'est un nouveau sujet...
Seulement, je ne sais pas par où commencer...

J'avais pensé soit en comparant la date de la dernière connection à la date du dernier message du forum... Mais ça marche pour le forum mais pas pour les sujets ! Sauf si vous avez une idée...
Ou alors, j'avais pensé à créer une table avec l'utilisateur et la liste des sujets lu... Récuperer cette liste, la transformer en tableau et comparer au l'id du message... Mais ça peut marcher pour les sujets mais pas pour les forums... sauf si...

Donc, je viens demander conseil pour trier les messages lu des messages non lu en fonction de l'utilisateur !

Merci d'avance!
Yves

PS: j'espère avoir été assez clair!

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 nov. 2005 à 16:43
Certes...bon ben suffit de faire l'inverse lol.



ce sera une table sujets_non_lus (plus grosse du coup, mais bon).



Et du coup pour les forums, il suffit de faire une jointure : pour
chaque forum que tu affiches, tu prends son forum.id_forum, et tu vas
voir dans la table sujets_non_lus, si tu trouves une paire
id_membre/id_sujet où sujets_nons_lus.id_sujet = sujet.id_sujet ET
forum.id_forum = sujet.id_forum .

Enfin faut tester parce qu'à 17h...et après une joçurnée à travailler
sur mssql...je ne suis plus très frais ;-) Mais si tu piges le
principe, tu trouveras la bonne requête.



En fait ça devrait marcher aussi avec sujets_lus...lol. Faut inverser aussi.



Je te relis : sur la page des forums, tu vas afficher les noms de tes
forums, non? Si tu as les noms, tu as les id. Après, faut savoir ce
qu'est une jointure...;-) Mais c'est pas dur à trouver. En français,
une jointure c'est :



Ramène moi du pain si le pain est une baguette et que j'aime la
baguette et que j'aime la boulangerie et que la boulangerie fait des
baguettes.



En gros.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 nov. 2005 à 16:04
Hello,

Y a la solution simple, une nouvelle table :

sujets_lu
id_sujet, id_membre

Tu la remplis en conséquence quand un membre lit un sujet.
Quand tu affiches ton forum (avec ses sujets), pour ton membre, tu vas voir dans cette table si pour chaque id_sujet des sujets de ce forum, tu as la paire id_sujet/id_membre dans cette table. Si tu ne l'as pas, c'est un nouveau sujet et tu mets ton icone.

Au passage, revois tes conventions de nommage
. Ce que j'aime bien moi ;

forum: forum_id(int), forum_titre (text), forum_description (text)
sujet: sujet_id (int), forum_id(int), sujet_sujet (text), sujet_description (text), sujet_pseudo (text), sujet_date (timestamp)
message: message_id (int), sujet_id(int), forum_id(int), message_pseudo (text), message_message (text), message_date (timestamp)

par exemple.
Cela facilitera la lecture à terme, et la comprehension de ta structure.
Bref la grosse modif en fait : si tu fais référence à une clef étrangère (par exemple, idsujet dans la table message), cette clef doit avoir le même nom dans sa table d'origine. Sinon, pour les évolutions de mysql, ou si tu passes à une autre base, tu vas avoir des soucis...
0
cs_b4d Messages postés 29 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 18 mars 2008
18 nov. 2005 à 16:26
D'accord, je vois ce que tu veux dire, mais dans ce cas là, je ne vois pas trop comment faire sur la page des forums... Comment récupérer les sujets lu alors que je n'ai pas encore de forum sélectionné et donc, pas de sujets à afficher?

C'est vrai que mes noms ne sont pas très expréssifs... Mais bon, je suis pas vraiment expert! J'ai commencé PHP en août de cette année et j'ai jamais lu un bouquin, j'apprend sur le tas! Donc, parfois je vois pas la solution (même si elle est simple) tout de suite !

Merci d'expliquer ta solution!
0
Rejoignez-nous