在日期之前显示的简单脚本

时间:2011-12-04 04:32:01

标签: php mysql

对我来说显然不那么简单。我有一个SELECT脚本,它要求显示一个分配列表。一切正常,但我只需要告诉脚本一旦它通过截止日期(在数据库中定义为duedate)。任何帮助都会很棒。

例如,如果今天是12月3日,那么将在12月2日到期。因为今天是在12月2日之后,所以不会显示该作业。

这是原始的MySQL脚本。

<?php 
session_start();
include("db.php");

$query  = "SELECT * FROM scuela_assignments WHERE 
assignments_teacher='".$_SESSION['username']."' 
ORDER BY assignments_duedate ASC LIMIT 0,      3; ";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    $name=$row['assignments_name'];
    $due=$row['assignments_duedate'];
    $class=$row['assignments_class'];
    echo "<div class='span2'><b>";
    echo $name;
    echo "</b><h6>";
    echo "</h6></br>";
    echo "<blockquote>";
    echo $due;
    echo "</blockquote>";
    echo"<a href='class.html?id=";
    echo $row['assignments_classid'];
    echo "'>";
    echo $class;
    echo "</a></div>";
}
echo "</div>";
?>

2 个答案:

答案 0 :(得分:1)

假设数据库服务器时间设置正确(因此mysql函数CURDATE()返回正确的预期日期)。您可能想尝试添加以下内容:

SELECT *, IF(assignments_duedate < CURDATE(), 1, 0) AS assignment_duedate_passed FROM scuela_assignments

然后您可以检查变量$row['assignments_duedate_passed']中的值,例如:

if($row['assignments_duedate_passed']) {
  // due date has passed, do something
} else {
  // nope, do something else
}

答案 1 :(得分:1)

不清楚你的意思

  

我只需要告诉脚本一旦它通过了截止日期   日期

如果要比较字段duedate,可以在WHERE子句中插入它。

注意:您的帖子duedateassignments_duedate中有两个字段。如果它们相同,则可以将duedate替换为assignments_duedate

例如

$query  = "SELECT * FROM scuela_assignments WHERE 
assignments_teacher='".$_SESSION['username']."' AND duedate < NOW()  
ORDER BY assignments_duedate ASC LIMIT 0,      3; ";

$query  = "SELECT * FROM scuela_assignments WHERE 
assignments_teacher='".$_SESSION['username']."' AND duedate < _A_CALCULATED_VALUE_  
ORDER BY assignments_duedate ASC LIMIT 0,      3; ";

这里NOW()是一个mysql函数,_A_CALCULATED_VALUE_可以代替任何计算值。如果duedate没有时间部分(作业将过期),那么您可以使用CURDATE()