Afficher des messages par date

Fermé
razorabbit Messages postés 3 Date d'inscription jeudi 20 octobre 2011 Statut Membre Dernière intervention 15 novembre 2013 - Modifié par razorabbit le 15/11/2013 à 13:13
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 15 nov. 2013 à 13:27
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

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 nov. 2013 à 13:27
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();
0