Page 1 sur 1

Système de nouveaux messages pour un forum

Posté : 17 juin 2013, 13:20
par Marie B
Bonjour à tous,

J'ai bien entamé la création d'un forum php et je réclame votre aide pour la mise en place d'un système new / noNew. Je m'explique :
Lorsqu'un membre se connecte, le forum devra mettre en évidence les sujets dans lesquels il y a eu des nouveautés depuis sa dernière connexion. Je pense que vous voyez de quoi je parle, on trouve ça sur tous les forums :)

Je ne viens pas ici pour vous demandez d'écrire du code, mais plutôt pour vous demander de m'aider algorithmiquement parlant. J'ai envisager beaucoup de solutions, mais je fini toujours par m'égarer et envisager une autre solution finalement, jugeant celle sur laquelle je travaillais peu efficace ou peu optimisée.

La solution sur laquelle je travaille là :
- Lorsqu'un membre se connecte, je fais une requete sql qui récupère les id des topics où il y a eu des nouveautés.
- Je crée alors des enregistrement dans une table t_vue en indiquant l'id du topic et l'id de l'utilisateur connecté.
- Je mets une image new / noNew en fonction de l'existance d'un résultat sur t_vue pour un topic.
- Si l'utilisateur connecté ouvre un sujet (topic), je fais une requête select sur t_vue pour savoir si ce topic était considéré comme new pour le membre et si c'est le cas, je fais une requete de suppression de cette enregistrement. Le topic devra alors apparaître comme noNew.
- Sur l'index(ou j'include les différentes pages de mon forum), je teste la date de dernière connexion du membre (champ de la table membres, mis à jour automatiquement au maximum une fois par minute si l'utilisateur recharge plusieurs fois de suite une page du forum). Si il y a eu un ou plusieurs nouveaux messages entre la date de derniere connexion et now(), j'ajoute le/les enregistrements correspondant à la table t_vue.
- Si l'utilisateur se déconnecte, je supprime les enregistrement de la table t_vue ou l'id Utilisateur est égal à l'id Utilisateur du membre qui se déconnecte.

Trouvez-vous que cette solution est suffisamment optimisée?

Pour donner un ordre d'idée, je pense qu'il n'y aura jamais plus de 50 membres connectés en même temps sur ce forum, soyons fou, pas plus de 100 dans le pire des cas.

Que pensez-vous de ma solution? Auriez-vous d'autres idées? Même si ça m'obligerait à recommencer ce que j'ai commencé, ce n'est pas un problème.

Merci d'avance pour votre aide :)

PS : C'est un travail amateur.

Re: Système de nouveaux messages pour un forum

Posté : 17 juin 2013, 14:33
par Spols
Je ne sais pas trop si c'est le plus optimisé, mais je ferais quelque chose de similaire.

Cependant, dans le cas ou l'utilisateur ne se déconnecte pas mais il laisse sa session expiré la table t_vue ne sera pas nettoyé, tu devrait donc ajouter un nettoyage automatique ou au minimum un nettoyage à chaque connection.

Lors de l'ouverture d'un topic, tu peux faire ta requète de suppression sans tester sa présence dans t_vue, si il n'y est pas ton DELETE ne supprimera rien mais tu fera une requète de moins

Re: Système de nouveaux messages pour un forum

Posté : 17 juin 2013, 18:23
par Marie B
Bonjour Spols et merci pour cette réponse rapide (malheureusement j'ai du coupé internet à cause de l'orage). J'ai installé un nettoyage à la connexion, juste avant de re-remplir la table t_vue. Ca évite qu'effectivement, si le membre n'utilise jamais le bouton de déconnexion, la table t_vue se remplisse à l'infini. Et surtout qu'on ai "new" partout où il n'y a pas lieux d'être (on veut avant tout un truc pratique pour les membres).

Je n'avais pas du tout pensé à faire ma requête delete seule par contre, c'est vraiment une excellente suggestion, je pense que ça me reservira aussi ailleurs. J'avais complètement oublié qu'on pouvait faire ça, mais oui maintenant que tu le dis ça me semble logique.

En tout cas merci pour ton avis/aide. Je clos ce sujet, étant donné que j'ai quasi fini le code (il me reste quelques modifs du coup) et ça marche bien.

A bientôt :)