Bonjour

Je fais actuellement une messagerie interne, j'ai une seule table pour les messages reçus et envoyés.

J'ai un problème de doublons (c.f photo ci dessous), c'est à dire que dans la liste des conversations (page boîte de réception) j'ai plusieurs conversation pour le même interlocuteur !
Je pense fort que le problème vient de date_lecture juste en dessous des deux IF, mais comment faire pour que la requête additionne pas les mêmes conversations pour la même personne.
Si je retire date_lecture, le problème est réglé mais j'ai besoin du champ date_lecture pour afficher un pictogramme ou texte pour dire si le membre a un message non lu ou pas.. comme sur la photo.

Nom : boîte de réception.jpg
Affichages : 274
Taille : 85,4 Ko

Je ne sais pas si je suis précis dans mon explication.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
// Connexion à la base de données
require_once 'inc/db.php';
$user_id = $_SESSION['auth']->id;
 
// Requête pour l'affichage de la boîte de réception
$reponse = $pdo->query("SELECT DISTINCT
	IF (m.id_expediteur = $user_id, m.id_destinataire, m.id_expediteur) id,
	IF (m.id_expediteur = $user_id, u2.username, u1.username) pseudo,
	date_lecture
	FROM messages m
	JOIN users u1 ON m.id_expediteur = u1.id
	JOIN users u2 ON m.id_destinataire = u2.id
	WHERE m.id_expediteur = $user_id OR m.id_destinataire = $user_id
	ORDER BY date_envoi DESC
	LIMIT 0, 30");
 
// Affichage de la boîte de réception
while ($donnees = $reponse->fetch())
{
	switch ($donnees->date_lecture)
	{
		case null : $lecture_msg = "msg non lu dans cette conversation"; break;
		case !null : $lecture_msg = "lu"; break;
	}
?>
		<tr>
			<th><?php echo htmlspecialchars($donnees->pseudo); ?></th>
			<th><?php echo "$lecture_msg" ?></th>
			<th><a href="profils.php?idmbr=<?php echo $donnees->id ?>">Profil</a> - <a href="messages.php?idmbr=<?php echo $donnees->id ?>">Consulter la conversation</a> <a href="#"><img src="ornements/remove.png" alt="Supprimer la conversation"></a></th>
		</tr>
 
<?php
}
$reponse->closeCursor();
 
?>
J'ai essayé une multitude de choses mais je débute alors pas facile, je suis sur cette requête depuis des jours et encore.. c'est un euphémisme.

en tout cas merci pour votre aide.