Boite de reception PHP
carterj
Messages postés
45
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, j'ai besoin d'aide je créé un chat entre deux personne i fonctionne, mais je voudrais que l'utilisateur puisse avoir une sorte de boite de réception pour tout ces message.
j'ai déjà fait un petit bou de code qui récupéré les messages est le affiche
Mon problème : je veut juste récupéré le dernier message de chaque utilisateur avec qui il/elle a parler, est les afficher l'image en dessous,

j'ai déjà fait un petit bou de code qui récupéré les messages est le affiche
Mon problème : je veut juste récupéré le dernier message de chaque utilisateur avec qui il/elle a parler, est les afficher l'image en dessous,

au lieu d'afficher : Salut virginie sa va ?, et t'habite ou ? de raven.spencer je veux afficher juste T'habite ou ? qui est le dernier message
3 réponses
-
Salut,
Tu n'a pas indiqué le contexte technique.
Si tes messages sont enregistrés dans une base de données, pour avoir le dernier cela ressemble à cela :
select .... from messages where ... order by date_msg limit 1
-
-
-
tu vois que tu n'as pas donné assez de détails au départ, il faut une question avec toutes les infos
dans ce cas je ferais quelque chose comme
select ... from message where (mesg_emetteur, date_mesg) in (select mesg_emetteur, max(date_mesg) from message where mesg_dest= ... group by mesg_emetteur) and mesg_dest= ... -
-
sa marche mais sa m'affiche juste le dernier message d'un seul user je veux récupérer les dernières messages des tout les users qui lui on envoyer un message
$msg = $db->prepare("SELECT * FROM chat_prive LEFT JOIN users ON users.id = chat_prive.id_pseudo WHERE (id_to, date_message) in (select id_to, max(date_message) FROM chat_prive WHERE id_to = '$user_one')"); $msg->execute(); $msg = $msg->fetchAll();
-
-
la il m'affiche plus rien
$msg = $db->prepare("SELECT * FROM chat_prive LEFT JOIN users ON users.id = chat_prive.id_pseudo WHERE (id_pseudo, date_message) in (select id_pseudo, max(date_message) FROM chat_prive WHERE id_to = '$user_one') group by id_pseudo"); $msg->execute(); $msg = $msg->fetchAll();-
Bonjour,
Déjà.... où as tu vu qu'on pouvait écrire un where de cette sorteWHERE (id_pseudo, date_message) in (select id_pseudo, max(date_message)
A la limite:WHERE id_pseudo in (select id_pseudo, max(date_message FROM chat_prive )
Tu t'en serais rendu compte si tu avais pris la peine de tester ta requête DIRECTEMENT dans ta BDD (via PHPMYADMIN par exemple).
Ensuite, Tu n'as pas activé la gestion des erreurs PDO ni placé tes requêtes dans des blocs TRY/CATCH. je t'invite vivement à le faire pour détécter ce genre d'erreur.
Voir ici pour les explications : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Si, après ces corrections, le souci persiste, reviens nous voir avec :
- Le code modifié (qu'on puisse voir comment tu as tenu compte de nos précédentes remarques)
- Un "dump" de ta BDD ( structure + quelques données de test) que l'on puisse faire des essais de notre côté si besoin.
Pour faire un DUMP en phpmyadmin : http://jc.etiemble.free.fr/abc/index.php/realisations/trucs-astuces/eximport-phpmyadmin
. -
-
-
sa marche toujours pas est oui j'ai activer les erreurs de pdo