Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
683 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Forum: voir nouveaux msgs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Forum: voir nouveaux msgs

n°1352181
chocolateb​ar
Posté le 23-04-2006 à 13:53:20  profilanswer
 

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

mood
Publicité
Posté le 23-04-2006 à 13:53:20  profilanswer
 

n°1352186
sircam
I Like Trains
Posté le 23-04-2006 à 14:09:19  profilanswer
 

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}
n°1352348
chocolateb​ar
Posté le 23-04-2006 à 20:34:04  profilanswer
 

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 ;)

n°1352418
chocolateb​ar
Posté le 23-04-2006 à 23:08:32  profilanswer
 

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 :)

n°1352441
chocolateb​ar
Posté le 23-04-2006 à 23:42:51  profilanswer
 

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:

n°1352463
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 24-04-2006 à 00:18:59  profilanswer
 

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

n°1352466
chocolateb​ar
Posté le 24-04-2006 à 00:23:06  profilanswer
 

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 ;)

n°1352468
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 24-04-2006 à 00:30:10  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Forum: voir nouveaux msgs

 

Sujets relatifs
Galerie d'images PHP/Flash[PHP] Utilisation d'un nom de variable qui varie dans une boucle
[PHP]Aide pour formulaireRecherche avec une miste déroulante PHP/MySql
[PHP BB] Failles de sécurité ...Chtite Question sur Apache -- PHP
PHP pour les meta[PHP] Problème de sécurité
Ajout dynamique dans base sql via PHPConnexion unique en PHP
Plus de sujets relatifs à : [PHP] Forum: voir nouveaux msgs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR