Afficher des messages par date
razorabbit
Messages postés
3
Statut
Membre
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
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é:
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.
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.
A voir également:
- Afficher des messages par date
- Comment récupérer des messages supprimés sur whatsapp - Guide
- Comment savoir si quelqu'un lit mes messages sur whatsapp - Accueil - Messagerie instantanée
- Messages supprimés whatsapp - Guide
- Trier par date excel - Guide
- Afficher taille dossier windows - Guide
1 réponse
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 :
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();