Afficher des messages par date

[Fermé]
Signaler
Messages postés
3
Date d'inscription
jeudi 20 octobre 2011
Statut
Membre
Dernière intervention
15 novembre 2013
-
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
-
Bonjour,

Je souhaite afficher les messages postés par certains membres de mon site dans une page.

Le problème c'est que je n'arrive pas à afficher les résultats ordonné par date. Les messages s'affichent membre par membre et non de la date la plus récente à la plus ancienne.

Vous comprendrais surement mieux ou je veux en venir avec le code simplifié:
<?php




// Récupération des membres dont je souhaite afficher les messages (que j'ai préalablement entré dans la BDD) :



$sqla = $bdd->query('SELECT selection_membre FROM select WHERE moi = "'.$_SESSION['user_id'].'" ');

// Affichage des membres
while($datam = $sqla->fetch())
{
// Recuperation des messages
$sql = $bdd->query('SELECT mess_user, mess_text, FROM message WHERE mess_user = "'.$datam[selection_membre].'" ORDER BY mess_date DESC '); // Ordonné par date.
// Affichage des messages (pour le moment sans les identifiants)
while ($data = $sql->fetch())
{
echo Stripslashes($data['mess_text']).'<br />';
}
$sql->closeCursor();
}

Résultat obtenu:

Message de l'id 1 ( le 15/11/2013)
Message de l'id 1 ( le 13/11/2013)
Message de l'id 1 ( le 11/11/2013)
Message de l'id 2 ( le 14/11/2013)
Message de l'id 2 ( le 12/11/2013)
Message de l'id 2 ( le 10/11/2013)

Résultat souhaité:

Message de l'id 1 ( le 15/11/2013)
Message de l'id 1 ( le 13/11/2013)
Message de l'id 2 ( le 12/11/2013)
Message de l'id 1 ( le 11/11/2013)
Message de l'id 2 ( le 10/11/2013)

Merci de votre aide.

1 réponse

Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 001
Bonjour,

Tu fais tes requêtes dans une boucle sur les membres : while($datam = $sqla->fetch()).
Il faut se passer de cette boucle. Du coup, la requête des messages ne contient plus la clause WHERE mess_user=...
Par contre, si je comprends bien, en fonction de l'utilisateur connecté on a une liste restreinte des membres dont on veut afficher le message. Il faut donc effectuer une jointure en conséquent.
Ton code devient :
<?php

// Recuperation des messages
$sql = $bdd->query('SELECT mess_user, mess_text
FROM message m
INNER JOIN select s ON s.selection_membre = m.mess_user
WHERE s.moi = "'.$_SESSION['user_id'].'"
ORDER BY mess_date DESC '); // Ordonné par date.
// Affichage des messages (pour le moment sans les identifiants)
while ($data = $sql->fetch())
{
echo Stripslashes($data['mess_text']).'<br />';
}
$sql->closeCursor();