8797 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,
Je suis en galère... je vous explique :

Je suis en train de coder un module accessible sur login, où, suivant les droits de la personne qui se log, l'on peut déposer des documents et news ou les lire.
Jusque là, ça va : php et mysql.

Maintenant, j'aimerais que la personne qui se connecte voit les nouveaux doc ou news déposés par un autre. Par nouveaux, il s'agit des documents ou news pas encore lus, pas ceux déposés plus récemment que le dernier login...
C'est à ce niveau que je me perds....

Je pensais faire une table "events" dans laquelle j'inscris chaque "événement", c a d à chaque fois que quelqu'un dépose ou lit quelque chose.
Dans ma tête, elle ressemblerait à ça : events([u]id[/u], user_id, event_type, module, event_id)
- L'event_type serait soit 1 pour un dépôt soit 2 pour une lecture
- le module correspondrait au type : soit 1 (news), soit 2 (document), soit 3 (mise à jour de l'emploi du temps)
- event_id correspond à l'id de ce qui vient d'être visualisé

Là, j'ai bien la liste de tous les "événements", dépôt et lecture, le tout typé.
Maintenant, je veux récupérer l'ensemble des dépôts pas encore lu par un utilisateur donné.
Je trouve pas la requête....

En gros, un truc à la gmail, qui met les mails non lus en gras.... sauf que là, il n'y a pas que des mails...

Merci d'avance,
rdmoshpit
Salut rdmoshpit Smiley cligne ,

à moins d'avoir loupé quelque chose, ça me semble un peu compliqué Smiley murf !

En supposant que tu as une table news (avec id_news) et une table documents (avec id_doc) j'aurais plutôt fait une table dejavu :
- id_dejavu
- user_id
- type (1=news, 2=doc)
- id_correspondant

que j'aurais alimenté soit quand le user dépose un doc (ou une news ?), soit quand il le lit.

Par exemple l'utilisateur 33 dépose le document 44 :
5, 33, 2, 44

puis il lit la news 22 :
6, 33, 1, 22

Pour connaître les news qu'il n'a pas encore lues :
Select texte_news from news where id_news not in 
(select id_correspondant from dejavu where user_id = 33 and type = 1)

Pour connaître les documents qu'il n'a pas encore lus :
Select texte_doc from documents where id_doc not in 
(select id_correspondant from dejavu where user_id = 33 and type = 2)

A+