Php 私人信息系统[收件箱查询]

Php 私人信息系统[收件箱查询],php,mysql,Php,Mysql,我有一个名为“message”的表,我想显示用户之间的所有对话(最后一条消息) 表结构: message_id | user_id | recipient_id | message | status | date 示例行: 1 | 1 | 2 | Hello | 0 | 2016-03-26 12:00:00 2 | 2 | 1 | Hi | 0 | 2016-03-26 12:05:00 3 | 1 | 3 | Are you there? I want meet you! :P | 0 |

我有一个名为“message”的表,我想显示用户之间的所有对话(最后一条消息)

表结构:

message_id | user_id | recipient_id | message | status | date
示例行:

1 | 1 | 2 | Hello | 0 | 2016-03-26 12:00:00
2 | 2 | 1 | Hi | 0 | 2016-03-26 12:05:00
3 | 1 | 3 | Are you there? I want meet you! :P | 0 | 2016-03-26 12:20:00
4 | 1 | 2 | How are you? | 0 | 2016-03-26 12:10:00
5 | 2 | 1 | Fine :) | 0 | 2016-03-26 12:15:00
6 | 5 | 1 | Hi :D | 0 | 2016-03-26 15:00:00
因此,结果应该是(对于用户_id==1):


我希望我的解释会比我的评论更好,下面是:

首先,您需要有日志系统,因此当用户登录时,您可以将其ID保存到会话中

第二个,根据所记录的用户,您可以在“收件箱”中显示他与其他用户的所有邮件,选择*from message where user\u id=$\u SESSION['id'],您可以加入表并显示来自用户和收件人的名称


Third当他单击与其他人的聊天时,您会显示他们之间根据用户id和收件人id按日期排序的所有邮件

类似于
的查询是否会按用户id从邮件组中选择*按日期排序
对您进行排序?演示。

首先按
日期进行排序,然后按
用户id进行分组

    SELECT *
      FROM
         (
                SELECT * from messages
                 WHERE `user_id`=1 or `recipient_id`=1
              ORDER BY `date` DESC
         ) m
  GROUP BY `user_id`
结果:

3 | 1 | 3 | Are you there? I want meet you! :P | 0 | 2016-03-26 12:20:00
5 | 2 | 1 | Fine :)                            | 0 | 2016-03-26 12:15:00
6 | 5 | 1 | Hi :D                              | 0 | 2016-03-26 15:00:00

因此,您只需输入会话、用户id,然后当他们进入“收件箱”或类似内容时,显示每个唯一的用户id,然后如果他们进入与特定用户的聊天,则显示该用户和收件人之间的所有消息,按日期排序?请再次阅读我的问题,因为你可能不明白。Facebook messanger是一个很好的例子:)请查看我的示例(结果)否,因为它只显示登录用户发送的消息。Messanger是我问题的一个很好的例子:当我登录时,它只向我显示消息,我在哪里与某人交谈,你明白吗?这就是“私人”消息系统的要点第1步:用户登录网站第2步:用户进入收件箱第3步:用户查看与其他用户的所有对话(登录和最后一条消息),与messenger(facebook)中的内容相同,这就是我所解释的,最后一步是当他进入对话时,你会得到登录用户和对话中其他用户的id,然后按日期排序,你会看到所有消息,这是你想要的吗?
3 | 1 | 3 | Are you there? I want meet you! :P | 0 | 2016-03-26 12:20:00
5 | 2 | 1 | Fine :)                            | 0 | 2016-03-26 12:15:00
6 | 5 | 1 | Hi :D                              | 0 | 2016-03-26 15:00:00