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));
?>