PHP:比较日期

时间:2011-02-17 20:08:57

标签: php sql date

我遇到了以下问题:

我想将今天的日期与数据库中的某些日期进行比较,然后如果它还没有过期,则显示一些内容......但是如果表格中的所有日期都已过期,请显示“没有安排讲座”此时,再次返回'。

至于第一件事没问题,但是我不能在没有任何日期的地方显示文字......

这是代码,

表: id,dateposted,date_course,title,body

$sql = "SELECT *
        FROM L
        ORDER BY L.dateposted DESC;";
        $result = mysql_query($sql) or die(mysql_error());
        while($row = mysql_fetch_assoc($result))
        {
            $exp_date = $row['date_course']; 
            $todays_date = date("Y-m-d"); 
            $today = strtotime($todays_date); 
            $expiration_date = strtotime($exp_date); 
            if ($expiration_date >= $today)
            {
                echo "<a href='courses.php'>" . $row['title']. "</a>";
                echo "</br>";   
            }
        }

3 个答案:

答案 0 :(得分:2)

我假设您正在使用MySQL。对查询和代码进行一些小的更改应该可以使其工作。你绝对应该在查询中进行这种过滤,而不是代码。

$sql = "SELECT *
    FROM L
    WHERE date_course < NOW() AND dateposted < NOW()
    ORDER BY L.dateposted DESC;";

$result = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result) > 0)
{
    while ($row = mysql_fetch_assoc($result))
    {
        echo "<a href='courses.php'>" . $row['title']. "</a>";
        echo "</br>";
    }
}
else
{
    echo "No results available";
}

答案 1 :(得分:0)

有几种方法可以做到。一种方法是将日期比较作为查询的一部分。如果未选择任何行,请显示您的特殊消息。

否则,您可以设置类似

的标志
$has_courses = false;
while ($row = fetch() {
   $has_courses = true;
   ...
}
if (!$has_courses) { echo 'No courses'; }

答案 2 :(得分:0)

虽然您可以通过改进查询来更有效地完成此操作,但这是您要求的具体修复:

$sql = "SELECT *
        FROM L
        ORDER BY L.dateposted DESC;";
        $result = mysql_query($sql) or die(mysql_error());
        $out = false;
        while($row = mysql_fetch_assoc($result))
        {
            $exp_date = $row['date_course']; 
            $todays_date = date("Y-m-d"); 
            $today = strtotime($todays_date); 
            $expiration_date = strtotime($exp_date); 
            if ($expiration_date >= $today)
            {
                $out = true;
                echo "<a href='courses.php'>" . $row['title']. "</a>";
                echo "</br>";   
            }
        }
        if (!$out)
          echo 'Nothing found.';