Qu'est-ce qu'un moyen efficace pour afficher une liste avec des messages non lus dans un forum? Il est possible de suivre l'utilisateur et de consigner chaque message qu'il visite et de l'enregistrer dans une nouvelle table. Je pense que ce n'est pas très efficace. Quel est un moyen plus efficace de le faire?Comment faire une liste de sujets non lus avec mysql
2
A
Répondre
2
Si vous voulez vraiment faire cela, vous pourriez avoir une table
UserVisit: user_id, topic_id, last_visited_at
quelle table vous mettez à jour chaque fois qu'un utilisateur ouvre un sujet. Ensuite, vous pouvez sélectionner les rubriques dont l'ID ne figure pas dans ce tableau ou dont un post a été ajouté après last_visited_at. Quelque chose comme:
SELECT *
FROM Topic
WHERE Topic.id NOT IN (SELECT topic_id FROM UserVisit WHERE user_id = $user_id)
UNION
SELECT *
FROM Topic
LEFT JOIN UserVisit ON Topic.id = UserVisit.topic_id
WHERE user_id = $user_id
AND UserVisit.last_visited_at < Topic.last_post_at
Mais je suggère qu'au lieu de cela, vous présentez seul l'utilisateur avec le sujet qui ont de nouveaux messages depuis votre dernière visite de l'utilisateur sur le site. Si vous faites cela, vous n'avez pas du tout besoin de ce tableau, vous pouvez interroger des sujets tels que:
SELECT *
FROM Topic
WHERE Topic.last_post_at > $users_last_visit
Questions connexes
- 1. Vérifier le nombre de messages Gmail non lus avec Python
- 2. Récupérer les messages non lus, par utilisateur
- 3. Comment faire une liste blanche de quelques attributs avec HTMLpurifier?
- 4. Liste des sujets actifs du forum
- 5. Nombre d'e-mails non lus dans Gmail
- 6. Groupement de sujets Sandcastle
- 7. Comment faire pour supprimer une liste de tuple avec python?
- 8. Blackberry - comment compter les messages SMS non lus?
- 9. Comment supprimer tous les sujets dans ActiveMQ?
- 10. Comment faire pour récupérer des résultats non-correspondants dans mysql
- 11. Faire une requête MySQL?
- 12. Lire les SMS non lus sur Windows Mobile 5.0
- 13. Comment faire pour commander dynamiquement une liste avec une liste déroulante?
- 14. Comment puis-je faire correspondre une liste séparée par des virgules avec une valeur?
- 15. Comment faire une boucle sur les résultats de MySQL facilement?
- 16. Comment marquer des éléments lus avec google reader API?
- 17. Comment faire fonctionner LEFT JOIN avec grouping/count dans MySQL?
- 18. créer une liste non ordonnée avec jquery en utilisant xml
- 19. Comment puis-je utiliser cURL/PHP pour vider le twitter actuelle tendance des sujets dans mySQL
- 20. Hibernate génère une requête SQL non valide avec MySQL
- 21. Comment renvoyer le nombre de messages non lus d'un utilisateur à partir d'une boîte de réception Exchange?
- 22. Comment puis-je faire fonctionner PHP avec ADOdb et MySQL?
- 23. Problème d'écriture de cette requête dans mysql (marquage des messages lus dans un forum)
- 24. Comment énumérer une liste d'objets non-string en Python?
- 25. Comment faire une itération arrière dans une liste STL?
- 26. En Python, comment indexer une liste avec une autre liste?
- 27. Comment faire une voiture et cadr contre une liste?
- 28. Faire défiler une liste avec la page haut/bas
- 29. Comment obtenir une liste des fonctions non interactives d'Emacs Lisp?
- 30. Forcer mySQL à rejoindre une table (pour faire une requête non optimisée, ce dont j'ai besoin)