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.