【问题标题】:Simple script for displaying before date显示日期前的简单脚本
【发布时间】:2011-12-04 04:32:00
【问题描述】:

显然对我来说不是那么简单。我有一个 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>";
?>

【问题讨论】:

  • 我不明白你。您能否更具体地说明“告诉脚本一旦过了截止日期”是什么意思?
  • 例如,如果今天是 12 月 3 日,并且有一个作业在 12 月 2 日到期。因为今天是 12 月 2 日之后,所以不会显示该作业。

标签: php mysql


【解决方案1】:

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

SELECT *, IF(assignments_duedate &lt; 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
}

【讨论】:

    【解决方案2】:

    不清楚你的意思

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

    如果要比较字段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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 2021-01-19
      • 2023-03-10
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2014-05-22
      相关资源
      最近更新 更多