【发布时间】:2020-11-01 11:40:37
【问题描述】:
聊天具有来自 SQL 数据库的消息日期。时间戳用php日期格式化:
$dateabove = date("d.m.Y : H:i",$row['message_time']);
日期在循环中(while):-
今天必须显示今天,昨天必须显示昨天。然后只有日期来了。
它应该类似于 Whatsapp。
示例:- ($dateabove - $row['message_text']):
me: 28.10.2020 : 13:75 - Hello
you: 28.10.2020 : 14:01 - Hello
me: 31.10.2020 : 11:01 - How are you?
you: 31.10.2020 : 12:01 - fine
me: 01.11.2020 : 10:05 - Where you from?
应该看起来像:
*28.10.2020*
me: 28.10.2020 : 13:75 - Hello
you: 28.10.2020 : 14:01 - Hello
*Yesterday*
me: 31.10.2020 : 11:01 - How are you?
you: 31.10.2020 : 12:01 - fine
*Today*
me: 01.11.2020 : 10:05 - Where you from?
问题是,如何只在循环中的第一条消息上方显示日期,而不在当天的后续消息中显示日期。
这就是我的循环的样子:
while ($row = $db->sql_fetchrow($result));
for ($i = 0, $size = sizeof($rowset); $i < $size; $i++)
{
echo $row['message_time']);
}
【问题讨论】:
-
请通过向我们展示生成当前输出的代码来提供更多上下文。
-
在迭代过程中存储日期,如果与以前相同则不显示。可能类似于
if($row['date'] != $last_iteration_date) { echo '....';}您的should be在每个示例中都有日期,所以我认为您只是尝试为每个组添加一次Today/yesterday/etc标题.. -
@RoAchterberg 代码太长,我试图让答案尽可能短。如何获取 last_iteration_date?
-
@Lars Vegas 所有聊天和日期都存储在数据库中??
-
@KUMAR 是的,所有聊天和日期都在数据库中,并且它们都已经在 while 循环中了。非常感谢您的帮助。我认为获得昨天和今天的东西对我来说没有问题。对我来说,仅将日期放在每天的第一个帖子上方并跳过其余部分非常重要。
标签: php for-loop while-loop iteration