对我来说显然不那么简单。我有一个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>";
?>
答案 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子句中插入它。
注意:您的帖子duedate
和assignments_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()
。