Rechercher : dans
Par :

Notification "Nouveau message" - Forum

Dernière réponse le 14 sep 2009 à 17:58:20 clemh78, le 10 jan 2009 à 21:10:12 
 Signaler ce message aux modérateurs

Bonjour,
Je suis actuellement en train de développer un forum et j'ai un problème.
Je sais pas comment faire pour afficher les messages lus et ceux non lus.
Si quelqu'un peut me donner des pistes ou un tutoriel se serais la bien venu.
Merci

Configuration: Windows XP
Firefox 3.0.5

1

clemh78, le 11 jan 2009 à 13:33:22

Up Svp

Répondre à clemh78

2

clemh78, le 12 jan 2009 à 16:35:19

Up

Répondre à clemh78

3

ThEBiShOp, le 12 jan 2009 à 16:44:02

Et bien tout simplement en ajoutant un champs "lu" dans la table qui contient le message

Répondre à ThEBiShOp

4

clemh78, le 12 jan 2009 à 17:02:01

Oui sauf qu'il n'y a pas qu'un membre !
C'est un forum !
Merci comme même.

Répondre à clemh78

5

ThEBiShOp, le 12 jan 2009 à 17:05:25

Mmh ? je vois pas bien le rapport.

Comment sont stockés tes messages dans ta base de données ?

Répondre à ThEBiShOp

6

clemh78, le 12 jan 2009 à 17:09:06

Bah mes "sujet" et mes "post" sont stoker sur une table.
Mes moi ou je bock c'est que quand un membre se connecte sur mon forum sa affiche les message qui sont nouveau depuis sa dernière visite si tu veux.
Et je sais pas comment faire ça.
J'espère que ta compris merci.

Répondre à clemh78

7

ThEBiShOp, le 12 jan 2009 à 17:13:53

Je crois que je commence à comprendre, je pensais que tu parlais de messages privés...

et bien tu pourrais faire une nouvelle table dans laquelle tu aurais uniquement l'id des membres et l'id des messages, si un message est lu, tu ajoutes une ligne avec l'id du membre + l'id du message en question.
Quand le membre se connecte, tu fais une requête pour savoir quels messages ne sont pas dans la table pour ce membre.

ça doit marcher, c'est pas forcément le mieux... à éviter pour les gros forums ^^

une autre solution serait de contrôler les timestamps des messages et des connexions

Répondre à ThEBiShOp

8

clemh78, le 12 jan 2009 à 17:22:00

Le première j'y avait penser mais consomme beaucoup.
Et la deuxième serait la mieux mais je sais pas trop comment faire car si j'enregistre la dernière visite d'un sujet cela ne marche pas car si j'ai par exemple 3 sujet non lu, la personne li le plus récent logiquement les deux autre vont être lu alors qu'en vrai non.
Après peut être que j'ai mal compris.
Merci pour ta réponse en tout cas.

Répondre à clemh78

9

ThEBiShOp, le 12 jan 2009 à 17:46:50

Tu as essayé de décortiquer des forums opensource tels que phpbb pour savoir comme ils s'y prennent ?

Ces forums peuvent sembler difficile à aborder au niveau du code, mais si on isole les parties ça va à peu près.

Répondre à ThEBiShOp

10

clemh78, le 12 jan 2009 à 17:52:34

Je vais voir mais si tu trouve fait moi signe !
Merci

Répondre à clemh78

11

 Zarghal, le 14 sep 2009 à 17:58:20

Voici un lien vers un sujet où le même problème a été abordé et où, personnellement, je considère le problème comme réglé :
http://www.commentcamarche.net/forum/affich-9157283-forum-en­-php-message-lus-non-lus

Sinon, pour résumer, j'ai appliqué cette version-ci sur mon forum. Ça tourne très bien et sur papier, il y a de très grandes chances que ça tourne bien aussi quand il y a un très grand nombre d'utilisateurs.

Explications :

-> Au niveau des tables :
Il te faut une table "sujets" où tu vas placer les sujets du forum
Il te faut une table "messages" où tu vas placer les messages avec un champ reprenant l'ID du sujet, un champ de type BLOB où tu vas stocker, sous fichier .txt, les ID des utilisateurs ayant vu le message (et tu rajoutes tous les champs nécessaires au message)

-> Le principe :
Le fait d'avoir un champ de type BLOB va permettre de stocker, sous forme de fichier .txt, l'ensemble des ID des utilisateurs ayant vu le message. Ainsi, une personne poste un message et dans ce champ BLOB, son ID sera noté. Ensuite, pour chaque utilisateur passant sur la page où se trouve le message (bref, quand celui-ci s'affiche), le champ BLOB est récupéré et mis à jour en rajoutant les ID des utilisateurs l'ayant vu.
Au final, tout utilisateur n'ayant pas son ID dans le champ de type BLOB en rapport au message verra l'icône "Nouveau message" s'afficher. Sinon, ça voudra dire qu'il l'aura lu.

-> Les avantages :
Le principal défaut qu'on peut reprocher aux forums phpBB, xooit et autres, c'est que lorsqu'on se déconnecte, qu'on efface nos traces bref, qu'on se déconnecte d'une quelconque manière, l'ensemble des messages non-lus passe en lu... Ce qui assez ennuyant. Ici, ce n'est pas le cas, aucune mise à jour n'est effectuée sur les champs de type BLOB et donc, si on part, qu'on change de pc ou je ne sais quoi, les messages non-lus restent non-lus.

Répondre à Zarghal