我有一张桌子,我正在尝试将消息显示为对话和按主题分组。
当前查询是:
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
答案 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"];
}
}