Y'a un topic spécial forum.
Perso, je fais comme ça :
J'ai une table topics_vu
dedans, voilà ce que j'ai :
topic_id - membre_id - status - lastrep - time
le topic_id, bah c'est l'identifiant du sujet, le membre_id, pas besoin d'explications, le status, c'est soit lu, soit lu et participé, soi lu mais nouvelle réponse soit lu et participé et nouvelle réponse dans le sujet. Time, c'est la date de la lecture, ce n'est pas indispensable, mais ça me permet de supprimer les infos trop vieilles.
En gros, ça marche comme ça.
Le membre 101 ouvre un topic pour la première fois.
Dans la table, je regarde si il l'a déjà lu, là ça dira non.
Donc, Insert nodusujet,nodumembre,1(lu),id de la dernière réponse du sujet en question,l'heure.
Quelqu'un répond à un sujet, tu updates dans la base, toutes les tables où le sujet est égal au sujet en cours en remplacant 1 (sujet lu) par 3 (sujet lu mais nouvelle réponse) et en remplacant 2 (sujet lu et participé) par 4 (sujet lu et participé par nouvelle réponse).
Ca parait énorme à traiter comme table, ça fait une ligne par sujet et par membre, seulement, en fait, ça ne pèse pas grand chose et ça se traite très vite et au pire, avec la colonne time, tu peux supprimer au bout d'un certain temps si ton forum a du succès ou jamais si les gens ne viennent que rarement.
Ton membre va lire le topic, tu regardes dans la base topics vu