[PHP] Forum: voir nouveaux msgs

Forum: voir nouveaux msgs [PHP] - PHP - Programmation

Marsh Posté le 23-04-2006 à 13:53:20    

Bonjour,
 
J'ai une question concernant la réalisation d'un forum classique, avec l'affichage d'un icône signalant au membre qu'il y a un nouveau message (qu'il n'a pas lu) dans une catégorie ou un sujet.
 
Voici ma question : Comment faire pour savoir s'il y a un ou des nouveau(x) message(s) pour tel membre dans telle catégorie... ??
 
Voici mon raisonnement jusqu'ici :
- J'ai tout d'abord pensé à comparer le timestamp de la dernière visite du membre avec celui des messages, mais le pb c'est que dès que la personne clique sur un message non lu, le timestamp de dernière visite change (grâce à UPDATE) et du coup s'il y avaient d'autres msgs ils sont considérés comme lus aussi.
 
- Ensuite j'ai pensé à mettre à jour une colonne "id des messages non lus" pour tous les utilisateurs à chaque fois qu'un membre poste un nvo message. Mais cette solution me parait fastidieuse.
 
- Autrement : faire autant de messages que d'utilisateurs  :pt1cable:  
 
Donc qq1 peut il m'éclairer sur le sujet (peut-être que je vais chercher trop loin  :??: ) ?
 
Merci de votre aide

Reply

Marsh Posté le 23-04-2006 à 13:53:20   

Reply

Marsh Posté le 23-04-2006 à 14:09:19    

Pour un utilisateur donné, tu retiens l'ID du dernier message lu pour chaque topic qu'il a ouvert, ou qq chose comme ça.
 
 [:airforceone]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 23-04-2006 à 20:34:04    

oui c'est ca à l'exception près qu'il faut compter aussi les messages en plus des sujets. donc c'est bien ce que je craignais je vais devoir lister autant de messages que de membres qui auront lu un msg, en tout cas merci de ton aide michel ange ;)

Reply

Marsh Posté le 23-04-2006 à 23:08:32    

Oui excuse moi je me suis mal exprimé, ce que je voulais dire c'était en rapport avec les catégories et les sous-catégories... quant à l'email c'est une option qui m'est inutile pour le moment mais je tâcherai d'y penser pour optimiser mon site. En tout cas merci pour tes conseils :)

Reply

Marsh Posté le 23-04-2006 à 23:42:51    

oui j'utilise déjà plus ou moins la comparaison des timestamp pour les catégories, le système "d'ampoules" reste encore a faire mais avec toutes ses infos je pense ne pas avoir trop de difficultés :)
En parlant de fatigue je suis moi aussi à plat, encore merci et bonne nuit  :sleep:

Reply

Marsh Posté le 24-04-2006 à 00:18:59    

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

Reply

Marsh Posté le 24-04-2006 à 00:23:06    

oui c'est ce que je craignais (une des solutions que j'avais envisagée :cf.post ci dessus) mais finalement je me rends compte que ce ne sont que des chiffres dans la BDD et donc que si elle est bien gérée (par exemple dynamisée grâce à une bonne indexation par id d'user ou autre) , et bien le tps d'exécution n'en sera pas altéré. Merci à toi pour ta technique perso ;)

Reply

Marsh Posté le 24-04-2006 à 00:30:10    

Bah perso, sur un forum qui existe depuis 2 ans avec un peu plus de 400 membres et presque 300.000 messages, la table topic_vu ne pèse que 5,5 mo, sans que jamais je n'y ai fait de ménage.
C'est rien comparé à d'autres tables.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed