我有两个表类别和&讯息
类别表包含
id
name
并且posts表包含
id
name
post
added_date
日期存储如(2010-09-05)。
当我按此代码打印类别时
$query=mysql_query("select id,name from categories order by id");
while($row=mysql_fetch_assoc($query)){
echo "$row[id] : $row[name] <br />";
}
我需要在3天之后打印任何新帖子的类别旁边的单词(新)3天后它应该是没有单词的正常类别名称(新)。
问候
答案 0 :(得分:0)
您需要更改查询以报告每个类别的最新发布日期。最简单的方法是使用查询中的聚合函数:
$query = mysql_query("select c.id, c.name, MAX(p.added_date) AS last_date from categories c inner join posts p on p.category_id = c.id group by c.id order by c.id");
然后,在打印类别列表时,如果last_date列的值早于4天,则打印(新)文本。例如:
while( $row = mysql_fetch_assoc($query) )
{
$id = $row['id'];
$name = $row['name'];
echo( "$id : $name " );
$daysOld = ( time() - strtotime( $row['last_date'] ) ) / 86400;
if( $daysOld < 4 )
echo( "(new)" );
echo( "<br />" );
}
答案 1 :(得分:0)
如果这是一个数据库查询,那么您应该寻找以下内容:
SELECT id, name, post, date_added,
IF(date_added > NOW() - INTERVAL 3 DAY, NULL, 'NEW') AS status
FROM table
ORDER BY date_added DESC
然后你可以使用:
if (isset($row['status'][0])) {
echo "(", $row['status'], ")";
}
这将允许代码通过仅更改SQL
来处理其他“状态”值答案 2 :(得分:0)
<?php
$MyTime = strtotime('+3 days');
$sDateFormat = 'l F d Y';
printf("Expires: %s\n", date($sDateFormat, $MyTime));
?>