Notification "Nouveau message" - Forum

Fermé
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009 - 10 janv. 2009 à 21:10
Zarghal Messages postés 8 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 14 septembre 2009 - 14 sept. 2009 à 17:58
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

11 réponses

Zarghal Messages postés 8 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 14 septembre 2009 5
14 sept. 2009 à 17:58
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é :
https://forums.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.
3
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009
11 janv. 2009 à 13:33
Up Svp
0
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009
12 janv. 2009 à 16:35
Up
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
12 janv. 2009 à 16:44
et bien tout simplement en ajoutant un champs "lu" dans la table qui contient le message
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009
12 janv. 2009 à 17:02
Oui sauf qu'il n'y a pas qu'un membre !
C'est un forum !
Merci comme même.
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
12 janv. 2009 à 17:05
mmh ? je vois pas bien le rapport.

Comment sont stockés tes messages dans ta base de données ?
0
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009
12 janv. 2009 à 17:09
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.
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
12 janv. 2009 à 17:13
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
0
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009
12 janv. 2009 à 17:22
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.
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
12 janv. 2009 à 17:46
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.
0
clemh78 Messages postés 64 Date d'inscription dimanche 22 juin 2008 Statut Membre Dernière intervention 2 avril 2009
12 janv. 2009 à 17:52
Je vais voir mais si tu trouve fait moi signe !
Merci
0