将消息显示为按主题分隔的会话

时间:2016-08-14 23:56:38

标签: php mysql

我有一张桌子,我正在尝试将消息显示为对话和按主题分组。

当前查询是:

SELECT * FROM contact WHERE to='bob' ORDER BY date DESC

if(mysql_num_rows($query) > 0)
    while ($row = mysql_fetch_array($query)){
        $id = $row["id"] ;
        $from = $row["from"] ;
        $subject = $row["subject"] ;
        $message=$row["message"];
        $date=$row["date"];

<?php echo $subject;?>
<?php echo $message;?>
<?php echo $from;?>
<?php echo $date;?>

}

表“联系”

id | from | to  | subject  | message    | date
1  | Mike | Bob |  Soccer  |   Hi!      | 2016-08-15 06:43:35
2  | Mike | Bob |  Soccer  | How r u?   | 2016-08-15 06:45:00
3  | Mike | Bob |  Soccer  | Lets play! | 2016-08-15 06:46:10
4  | Mike | Bob |  School  | How was..  | 2016-08-16 08:40:00

这告诉我:

主题:足球

嗨!来自Mike于2016-08-15 06:43:35

主题:足球

你好吗?来自Mike于2016-08-15 06:45:00

尝试GROUP BY主题,但只显示一个结果。

SELECT * FROM contact WHERE to='bob' GROUP BY subject ORDER BY date DESC

感谢有关如何按主题分组展示消息的任何帮助。

示例:

主题:足球

嗨!来自Mike于2016-08-15 06:43:35

你好吗?来自Mike于2016-08-15 06:45:00

让我们玩吧!来自Mike于2016-08-15 06:46:10

主题:学校

迈克是怎么回事2016-08-16 08:40:00

1 个答案:

答案 0 :(得分:0)

这似乎就是你所追求的,但你并不完全清楚你想要的结果

SELECT * 
FROM contact 
WHERE to='bob' 
ORDER BY subject, date

然后您的代码可以像这样更改为仅在更改时打印类别

if(mysql_num_rows($query) > 0) {
    $last_subject = NULL;
    while ($row = mysql_fetch_array($query)){

        if ( $last_subject !== $row["subject"] ) {
            echo $row["subject"];
            $last_subject = $row["subject"];
        }

        echo $row["message"];
        echo $row["from"];
        echo $row["date"];
    }
}