[Conception] Forum : messages lus & non lus

Statut
N'est pas ouverte pour d'autres réponses.

Ahava

Revenant
Bonjour,


Je suis en train (ou plutot je vais commencer) à coder un forum moi-même mais je ne sais pas trop bien comment gérer les messages lus/non lus sur celui-ci.

Je ne sais pas comment c'est traité sur des forums "connus" tel que VBulletion ou PHPBB, mais j'hésite entre ceci :


  • Enregistrer chaque message lu par chaque membre dans la BD (MySQL)
  • Même chose mais dans dans des fichiers, un par membre cette fois-ci
  • ...


Comme vous pouvez le voir, je ne sais pas vraiment comment implémenter cette fonctionnalité le plus efficacement possible, ce pourquoi je sollicite votre avis :)



merci :k
 

*Serval

Elite
Dans la DB, ca va te faire une quantité énorme d'enregistrement si beaucoup d'utilisateurs et/ou de posts ;)


Avec phpBB, c'est enregistré dans un cookie, je suppose qu'ici aussi.



Sinon, il y aurait également moyen de le faire en variable session, mais alors, comme dans phpBB, si tu fermes ta page, tout sera marqué comme lu ;)
Tandis qu'avec cookies, tu peux ne pas le marquer comme lu après fermeture de la page :)
 
1er
OP
Ahava

Ahava

Revenant
Ahhh voila j'avais pas pensé aux cookies, j'ai pratiquement jamais utilisé ça ! :)


Tu as un exemple d'utilisation d'un tel cookie, et comment y enregistrer qu'un post est lu ou non lu ?
 

Jereck

Α & Ω
Staff
Ahava a dit:
Ahhh voila j'avais pas pensé aux cookies, j'ai pratiquement jamais utilisé ça ! :)


Tu as un exemple d'utilisation d'un tel cookie, et comment y enregistrer qu'un post est lu ou non lu ?
un cookies avec comme nom l'ID d'un thread et comme valeur, le dernier post lu, ça me semble le plus simple

et si pas de cookie pour un thread, tous non lus
 

Bingo

Beer Addict
Si je ne me trompe pas, phpBB est plutôt bête et méchant de ce côté là :
Lorsque tu te connectes, il regarde l'heure de ta dernière connexion, et marque tous les messages plus récents que cette connexion comme non lus, tous les autres comme lus.
Plutôt simpliste donc !
 

Bingo

Beer Addict
Je ne suis pas sûr que les cookies ce soit mieux que la base de données, il faut voir...
Si dans la base de données tu sotckes juste l'ID utilisateur, l'ID de la discussion et l'ID du dernier message lu, ça fait un volume de données raisonnable.
En utilisant la base de données, tu économises du dialogue entre le navigateur et le serveur (l'échange de cookies).
A mon avis, il est plus rapide d'écrire un enregistrement avec 3 champs (numériques) dans une table que d'envoyer un cookie à l'utilisateur.
Il faudrait tester en fait.
 

Jereck

Α & Ω
Staff
Bingo a dit:
Si je ne me trompe pas, phpBB est plutôt bête et méchant de ce côté là :
Lorsque tu te connectes, il regarde l'heure de ta dernière connexion, et marque tous les messages plus récents que cette connexion comme non lus, tous les autres comme lus.
Plutôt simpliste donc !
et franchement foireux si la durée de session est trop courte (un peu comme ici :beuh:)
 

*Serval

Elite
Bingo a dit:
Si je ne me trompe pas, phpBB est plutôt bête et méchant de ce côté là :
Lorsque tu te connectes, il regarde l'heure de ta dernière connexion, et marque tous les messages plus récents que cette connexion comme non lus, tous les autres comme lus.
Plutôt simpliste donc !
ouep tout à fait (sauf si un install le MOD "keep unread" :p)


Vrai que des tests pourraient être utiles, même si a première vue je le ferrais en cookies ;)
 
1er
OP
Ahava

Ahava

Revenant
Bingo a dit:
Je ne suis pas sûr que les cookies ce soit mieux que la base de données, il faut voir...
Si dans la base de données tu sotckes juste l'ID utilisateur, l'ID de la discussion et l'ID du dernier message lu, ça fait un volume de données raisonnable.
En utilisant la base de données, tu économises du dialogue entre le navigateur et le serveur (l'échange de cookies).
A mon avis, il est plus rapide d'écrire un enregistrement avec 3 champs (numériques) dans une table que d'envoyer un cookie à l'utilisateur.
Il faudrait tester en fait.
Ah ouais, ca fait quand meme un enregistrement par user par discussion, mais c'est moins que moi et mes enregistements par user par réponse postée..


hmm j'hésite.
 

Bingo

Beer Addict
Ahava a dit:
Ah ouais, ca fait quand meme un enregistrement par user par discussion, mais c'est moins que moi et mes enregistements par user par réponse postée..


hmm j'hésite.
Ca fait plutôt un enregistrement par utilisateur et par discussion lue par cet utilisateur.
En fait, avant de savoir comment faire, il faut que tu saches précisément comment tu veux que ton forum se comporte.
Par exemple, si il y a une discussion que je n'ai jamais lue, c'est probablement qu'elle ne m'intéresse pas. Du coup, on peut d'office la marquer comme lue à la date de la dernière connexion, comme dans phpBB.
Ou alors, les discussions non lues doivent-elles rester non lues jusqu'à ce que je les ouvre ou que je spécifie que je veux marquer toutes les discussions comme lus ?
Par contre on peut considérer que les discussions que j'ai lues m'intéressent, et ne les marquer comme lues qu'à partir de la date de la dernière lecture.

Bref, il faut déjà savoir comment tu veux que ça fonctionne.
 
1er
OP
Ahava

Ahava

Revenant
Je voudrais qu'il se comporte ainsi :

Une conversation est non lue tant que l'user ne l'a pas lue, elle soit écrite comme non lue, ou si l'user clique sur un lien qui met tous les convers. à lues..


Un peu comme phpBB avec le mod "keep unread" :)
 

*Serval

Elite
Alors si ton cookie ou ton entrée dans la bdd pour cet user et ce topic n'existe pas, il a rien lu.
Si il a lu, la bdd (ou le cookie) contient l'id du dernier message.
Quand il lit un sujet, tu modifies donc la bdd (cookie) pour mettre l'id du dernier message du sujet



Et quand quelqu'un cliques sur "Marquer tous les sujets comme lus", tu fais l'opération ci-dessus mais pour tous les sujets ;)
 

Bingo

Beer Addict
Juste une petite remarque à propos des cookies : ça n'est pas une bonne solution à mon avis.
Le problème est que le cookie est spécifique à une machine.
Je consulte les forums au boulot la journée et chez moi le soir (comme beaucoup de monde je pense), ça m'énerverait pas mal que toutes les discussions soient marqués comme non lues lorsque je me reconnecte de chez moi après avoir tout consulté la journée !
 
1er
OP
Ahava

Ahava

Revenant
donc pour toi ca doit être fait coté serveur ? donc gardé en bd ?
 

Bingo

Beer Addict
Ahava a dit:
donc pour toi ca doit être fait coté serveur ? donc gardé en bd ?
Oui, pour moi seule la session doit être conservée dans un cookie, tous le reste devrait se faire côté serveur.
 

k o D

Elite
Ahava a dit:
donc pour toi ca doit être fait coté serveur ? donc gardé en bd ?
Pour moi aussi.
Imagine simplement le problème suivant:
Un utilisateur de ton forum a désactivé un jour les cookies... et peut-être qu'il ne sait pas comment faire pour les remettre :-'

Et heu... vu que je comptais faire aussi un forum perso... si çà t'intéresse contacte moi ;)
 
1er
OP
Ahava

Ahava

Revenant
Tit up vu que j'y suis occupé : je le fais via cookie, c'est vraiment une option en plus si l'user veut, sinon, tant pis pour lui :p
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut