Système de posts non lus dans un forum

Résolu
Signaler
Messages postés
43
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
23 novembre 2007
-
Messages postés
43
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
23 novembre 2007
-
Bonsoir à tous,



Je suis entrain de développer un forum et je me suis dis que ça serait une bonne idée, lorsque qu’il y aura de nombreux posts sur ce forum, d’avoir crée un système qui affiche les messages que je n’ai pas lu depuis la dernière fois que je me suis logué. Je veux bien sûr faire en sorte que ce système soit disponible pour tous les membres.


Je suis parti dans une voie ou en fait j’utilise une base de donnée qui liste tous les ID des topics et stocke le nombre de posts à l’intérieur. Ensuite pour chaque membre je stocke le nombre de posts qu’il y avait lors de leur dernière visite (j’ajoute un champ à la base pour chaque nouveau membre avec un petit ALTER TABLE, c'est un peu barbare j'avoue ). Ainsi lorsque la personne se logue je peux faire apparaître un petit icône lorsqu’un message a été rajouté.


Je ne suis pas parti sur la voie des cookies parce que je ne veux pas que lorsque les cookies sont effacés, je ne perde pas les informations.





Ce que je voudrai savoir c’est si il y a d’autres moyens pour faire ce que je veux. (mise à part les cookies)


Et je voudrais savoir si ça posait un problème, le fait que pour chaque nouveau membre je rajoute un champ à ma table.


J’attends vos suggestions.


(ps : encore bravo pour toute la communauté code source, je développe un php, vb, javascript et un petit peu en c++ et ces sites sont une véritable mine de ressources, merci)

lkm

10 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Bah en fait ma date de dernière action est stockée dans ma table
membres, elle correspond au timestamp du dernier clic sur "marquer les
messages comme lus/non lus"



bref si le visiteur clique sur "lus" la date de dernière action se
modifie pour devenir la date actuelle et je supprime dans une table
tous les "marqueurs de topics lus" (pour purger ma table qui garde en
mémoire si le membre a lu le topic ou pas, bref tout ce qui est sous
cette date sera considéré à juste titre comme lu puisque le mec a
cliqué sur "marquer comme lus"). Ensuite y'aura forcément de nouveaux
posts non plus, pour savoir si ils sont lus : si la date de dernière
action est supérieure, le message est obligatoirement lu, je zappe. Si
par contre la date de dernière action est inférieure, je regarde (via
une jointure) si dans mon autre table qui garde en mémoire les
consultations de topic, bah si le membre a déjà consulté le topic. Si
oui, je regarde si sa dernière date de consultation du topic est
supérieure à la date de dernier post dans ce topic. Si oui, bah le
message est toujours lu, sinon il est non lu et je change mes
enveloppes en fonction de ça ;-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
tu peux simplement mettre la date de la dèrnière action de l'utilisateur dans ta table qui contient son password, et afficher tout les messages postés depuis grace à la clause WHERE.

c'est bien plus propre qu'un alter table, et bien plus efficace...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

[url]http://coucou747.hopto.org/url
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
Sael og blesud



Vous pouvez également user de " BETWEEN " ... ;-)

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
Messages postés
43
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
23 novembre 2007

J'en avais pas parlé, mais j'avais pensé à la solution d'utiliser la date de post et la date de connexion du membre. Le problème de cette solution est qui si le membre se connecte, lit seulement une partie des messages puis se déconnecte, les autres messages seront également considéré comme lus. C'est ce que je veux éviter.

merci pour ces réponses rapides mais quelqu'un à t-il d'autres idées??!!!!

lkm
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
J'ai opté pour une méthode bourrine:

Quand l'user ouvre une page, une requête regarde quels sont les
nouveaux messages ( en fonction de la date de sa dernière action ).
Ensuite, j'utiliser une tables pour stocker les messages à voir...
C'est gros, mais ca permet aussi d'avoir les messages qui restent comme
non lus sur plusieurs connexions...



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



personnellement sur mon forum j'utilise la date de dernier post pour
tous les topics, et le membre a une date de dernière action en gros (la
date de dernière action correspond au clic sur "marquer les forums
comme lus/non lus"). Une fois que j'ai ça, je compare la date de
dernière action, les topics ayant une date de dernière réponse plus
récente et non lus par le membre sont affichés (pour le lu/non lu j'ai
une table à part)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
43
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
23 novembre 2007

Comme je l'ai dit plus haut, Anthomicro, l'utilisation des dates de post et de dernière action sont possible. Le problème avec ça c'est que si l'utilisateur lis une partie des messages puis se déconnecte, les messages non lus ne seront plus distingués!!!

Par contre cookiesch, peut tu développer un peu plus ta solution please. Avec la description de la structure des tables. merci

lkm
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ah bon ? chez moi ça fonctionne très bien que tu te déconnectes ou non, tout étant stocké en DB

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
43
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
23 novembre 2007

AHHHHHHH je crois que je viens de comprendre comment tu fais mais j'en suis pas sur. Dis moi qu'est ce que tu appelles une "date de dernière action"? parce que moi lorsque j'ai pensé à ce système avec les dates, je pensais comparer la date du dernier post dans un topic et la date de dernière connexion, si la date de dernière connexion et plus petite (timestamp) que la date de post du message alors il affiche la petite icone qui distingue les topics ou il y a un message non lu. Donc lorsqu'il se connecte la première fois, il a bien les petites icones pour tous les messages mais si il se déconnecte puis se reconnecte juste après, la date de dernière connexion est supérieure à la date du post du message et donc pas d'apparition des petites icones.
J'espère que tu comprends mon soucis, peut être que je fais une erreur de raisonement mais j'en doute. ++
lkm
Messages postés
43
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
23 novembre 2007

D'accord c'est malin ça, j'avais pas pensé à un système de "marqué comme lu" c'est pas mal, je vais accepter ta réponse, je te remercie.
Merci à tous les autres également
Si d'autres personnes ont des solutions, je les encourage à les mettre sur ce topic.

à bientot
lkm