8795 sujets

Développement web côté serveur, CMS

Bonsoir,

Je vous expose mon problème, j'essaie de mettre au point une requête qui me permette d'avoir en retour les messages publiés par l'utilisateur et ses amis.

J'ai une table pour les utilisateurs, et une table amis dans la quelle je mets les ID des deux amis, et une close qui permet de savoir si l'amitié est réciproque ou pas.

J'ai essayé cette requête mais ça ne semble pas fonctionner.
[code=mysql]
SELECT * FROM messages
		LEFT JOIN users ON me_user=users.id
		LEFT JOIN friends ON fr_accept=1 AND (friends.fr_to=me_user OR friends.fr_from=me_user)
		WHERE me_user="' . $_SESSION['id'] . '" OR friends.fr_from=me_user OR friends.fr_from=me_user
		ORDER BY me_id DESC


Voilà, j'espère avoir été assez clair, si vous avez besoin de plus d'informations pour pouvoir analyser le problème n'hésitez pas à me les demander.

Merci d'avance,
Sator
Modifié par Sator (07 Nov 2010 - 12:50)
Bonjour,

Je retirerais du WHERE cette partie là :
OR friends.fr_from=me_user OR friends.fr_from=me_user


ou alors, je la remplacerais par :
OR friends.fr_from=$_SESSION['id']

Modifié par Borak (07 Nov 2010 - 09:59)
Merci pour ta réponse,

Mais quand j'essaie avec ta proposition, j'ai bizarrement le même problème.
J'obtiens les bons messages mais ils sont affichés plusieurs fois.

Voilà, merci d'avance.

Cordialement,
Sator
C'est bon, j'ai trouvé la solution, en fait je prenais deux fois les mêmes éléments.
Maintenant dans la close where je prends soit les messages envoyés par l'utilisateur et dont l'ID est égale à fr_to ou bien le contraire, c'est à dire les messages envoyés par un ami dont l'ID est le fr_to est le fr_from est égale à l'ID de l'utilisateur.

Merci encore !