Messaging System with PHP/MySQL

痴心易碎 提交于 2019-12-20 03:16:25

问题


Hi I'm trying to make a messaging system with php and mysql.

The mysql table is simple: id sender receiver text timestamp

I'm trying to make the messaging somewhat like Facebook/Twitter so the list is in 'conversations' and the last message in the conversation is viewed.

This is what I have atm:

(SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id ASC) ORDER BY id ASC

回答1:


SELECT messages.* FROM messages, (SELECT MAX(id) as lastid FROM messages 
WHERE receiver = 13 OR sender = 13 
GROUP BY CONCAT(LEAST(receiver,sender),'.',GREATEST(receiver,sender))) as conversations
WHERE id = conversations.lastid
ORDER BY timestamp DESC

what you need is a unique conversation id between the chat-partners. i've simulated this with the subquery, hope this helps




回答2:


UPDAte: I'm not sure if it works perfect:

SELECT * FROM messages 
WHERE receiver = 13
GROUP BY receiver,sender 
ORDER BY timestamp DESC
LIMIT 1

UNION ALL
SELECT * FROM messages 
WHERE sender = 13
GROUP BY receiver,sender 
ORDER BY timestamp DESC
LIMIT 1

to reverse the order:

ORDER BY timestamp DESC



回答3:


DESC for receive New row's . AND ASC or NOT set, Default is ASC:

   (SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id DESC)

AND SET LIMIT 1 ,1 AFTER ORDER BY
i think you need it
(receiver = 13 AND sender = 'usersender id' ) OR (receiver ='usersender id' AND sender = 13 ) Try it!



来源:https://stackoverflow.com/questions/21595925/messaging-system-with-php-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!