我有一个表格,其中显示最新的管理员注释。我只显示最后 3 个音符。我将 DATETIME 存储在数据库中。我想做的是能够说,如果此日期时间小于 3 天,则显示此新文本。
现在,如果所有 3 个注释都在同一天,我只希望最新的注释显示新文本,而不是所有 3 个注释。
这是我的 PHP:
<?php
if ($stmt = $mysqli->prepare("SELECT note, date_posted, admins.first_name, admins.last_name FROM admin_notes INNER JOIN admins ON admin_notes.admin_id = admins.admin_id ORDER BY date_posted DESC LIMIT 3")) {
$stmt->execute();
$stmt->bind_result($note_text, $note_date, $note_fname, $note_lname);
$stmt->store_result();
while ($stmt->fetch()) {
echo "<tr><td class=\"full\">$note_text<br /><span class=\"from\">".timesince($note_date)." by <strong>$note_fname $note_lname</strong></span></td></tr>";
}
}
?>
谁能帮我实现这个目标?
最佳答案
$past = new DateTime('-3 days');
// later
$note_datetime = new DateTime($note_date);
if ($note_datetime >= $past) echo 'new';
受到rkosegi(同时删除)答案的启发:您可以将查询更改为
SELECT note, date_posted, admins.first_name, admins.last_name, (DATEDIFF(NOW(),`date_posted`) < 3) AS isNew FROM [..]
现在你得到一个新的“行”isNew
,它要么是 1,要么是 0。
关于PHP 处理 MySQL DATETIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734275/