Php 在新邮件旁边打印(新)3天

Php 在新邮件旁边打印(新)3天,php,datetime,Php,Datetime,我有两个类别和职位表 “类别”表包含 id name id name post added_date 而posts表包含 id name 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] :

我有两个类别和职位表

“类别”表包含

id
name
id
name
post
added_date
而posts表包含

id
name
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天后,三天它应该是正常的类别名称没有单词新


关于

您需要更改查询以报告每个类别的最新发布日期。最简单的方法是在查询中使用聚合函数:

$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 />" );
}

如果这是一个数据库查询,那么您应该查找以下内容:

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来处理其他状态值

<?php 
$MyTime = strtotime('+3 days');
$sDateFormat = 'l F d Y'; 
printf("Expires: %s\n", date($sDateFormat, $MyTime)); 
?>