Bonjour,
Je viens de passer mon après-midi sur une seule requête et la je bute sur la solution à adopter dans un cas précis.
Je programme une messagerie interne pour mon espace membre, le fil de la conversation est sur une page.
voici la requête qui affiche le fil de la conversation :
les 1 dans la ligne du WHERE représente l'id du membre actuellement connecté (et qui affiche donc la page du fil de la conversation).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $reponse = $pdo->query('SELECT m.id idmsg, m.message msg, m.date_envoi dateen, m.date_lecture datelu, u.id id_expediteur, u.username pseudo_expediteur FROM users u INNER JOIN messages m ON m.id_expediteur = u.id WHERE m.id_destinataire = \'1\' OR m.id_expediteur = \'1\'; ORDER BY date_envoi DESC LIMIT 0, 10');
Mon problème :
Disons que le membre avec l'id 1 souhaite afficher sa conversation avec le membre possédant l'id 2 (via une variable GET) le nom de la page appelée par le membre 1 ressemble donc a ceci : /messages.php?idmbr=2 (jusqu'ici facile^^)
Mais actuellement la requête affiche les messages à partir du moment ou elle trouve un enregistrement possédant l'id 1 du membre dans les champs id_expediteur ou id_destinataire.
donc si le membre possédant l'id 1 envoie un message au membre possédant l'id 4, le message s'affichera (car la requête trouvera dans le champ id_expediteur l'id 1) ! et sa je ne veux pas car le fil de la conversation concerne uniquement le membre possédant l'id 1 a celui possédant l'id 2.. je ne sais pas si j'ai été très précis dans mon explication ? en même temps c'est difficile d'expliquer^^ donc je pense que le WHERE est a modifier mais de quelle façon ? à base de OR et AND non ? mais comment le mettre en place :/
en gros je veux que la requête fasse :
id_expediteur / id_destinataire
1 / 2 : affiche
2 / 1 : affiche
1 / 3 : affiche PAS.
..
je vous remercie j'attends vos réponses avec impatience car j'y arrive vraiment pas
Partager