Bonjour,
j'aimerais lorsqu'un utilisateur se connect sur le site, qu'il y ai un badge qui indique le nombre de nouveaux articles.
L'utilisateur peut aller sur la liste des articles (ordonée par nouvel ajout). Puis lorsque l'utilisateur visite la page de l'article, celui-ci ne soit plus concidéré comme nouveau.

Là je suis vraiment perdu, je ne sais pas trop comment tourner la chose pour que la liste des articles nouveaux soit différente pour chaque utilisateurs.

9 réponses


Skyz0h
Réponse acceptée

Yo.
Ou alors quelque chose de plus flexible, tu crées une table articles_views qui aurait les champs : id, user_id, article_id, created_at ainsi que updated_date. Lorsqu'un utilisateur charge la page d'un article, tu vérifies qu'il ne l'a pas encore vu en faisant un select where user_id = uid (tu vois le délire), si il l'a déjà vu alors tu update simplement la date. Sinon tu crées une ligne pour l'article.
Lorsque tu veux afficher ta liste d'articles, tu vérifies simplement que l'utilisateur n'a pas encore de ligne dans cette table, lié à l'id de l'article.

Après, faut bien optimiser le tout pour éviter d'avoir 300 requêtes vers ta db, mais ce système a l'avantage de te permettre (si besoin est) de faire des stats sur les articles les plus vus, à quelle date, combien de fois, etc, histoire de mieux savoir ce qui plait à tes membres, et donc de proposer un contenu plus "intéressant". :)

Bonjour,
Récupérer la liste des articles depuis sa dernière venu.
Une fois celle-ci affiché, on met la date de sadernière visite à aujourd'hui.

cid5420
Auteur

en fait c'est un poil plus compliqué ! (je sais pas si c'est moi qui cherche plus compliqué ou est ce si simple !!)
J'ai tourné ça en article pour que ça soit compréhensible, mais je vais détailler !
Sur une application web, j'ai une page qui affiche un tableau de bord avec plusieurs compteurs, qui s'incrementent ou décrementent en fonction de plusieurs actions.
Lorsqu'un compteur s'incremente, je veux afficher l'objet qui vient d'être incrementé. Dans un premier temps, le compteur indique le nombre d'objet total, un petit badge est disposé à côté pour indiquer combien d'objet ont été ajouté. Ensuite si on clique sur le compteur, j'affiche un tableau avec tout les objets. Là encore j'affiche en vert les nouveaux objets. Je n'arrive pas à comprendre comment passer d'état nouveau à ancien. Parce que d'autres compteurs peuvent être lié à la même fiche, que d'autres utilisateurs peuvent également visiter le même objets enfin bref c'est compliqué dans ma tête !!!

cid5420
Auteur

ouai j'y ai pensé mais j'ai 3 tables avec +20 000 ligne (mes objets), donc une 3ieme.... Après si je n'ai pas le choix !!!

Après c'est le but d'une base de données de stoquer pas mal de contenu x)
Si c'est le nombre de lignes qui te pose problème, je pense que passer sur un système NoSQL te permettrait de gagner en fléxibilité (si c'est pas déjà le cas).

cid5420
Auteur

De plus avec ta solution, si j'ai bien compris, tu fais une ligne pour chaque article et chaque utilisateur !!!

C'est ça. :)

cid5420
Auteur

ok Je sais pas si j'aurais d'autres choix !!!! J'attends encore un peut avant de passer en résolu

cid5420
Auteur

ok bon je vais essayer la 1ere solution ! merci à vous