0

我正在尝试制作一个处理研讨会帖子的网页。我希望该页面删除过期日期(或研讨会发生日期)的研讨会 我的表有 3 个日期槽,一个用于月,一个用于天,一个用于年。它们都是表中的整数。

if(date("Y") > $info['year'])  //if the year is old
{ $sql = "DELETE FROM seminars WHERE ID = '$ID'";
  mysql_query($sql); } //then delete this seminar
 else if(date("Y") == $info['year'] && date("n") > $info['month']) //if we are in the year of the seminar, but the month is now old
    { $sql = "DELETE FROM seminars WHERE ID = '$ID'"; 
      mysql_query($sql);} // then delete this seminar

else if(date("Y") == $info['year'] && date("n") == $info['month'] && date("j") > $info['day'])  //if we are in the year of the seminar and the month of the seminar, but the day is old
    { $sql = "DELETE FROM seminars WHERE ID = '$ID'";
      mysql_query($sql); }  // then delete this seminar
 else // if there is no reason to delete the seminar then print out this seminar

如上所示,我尝试将系统时间用于年月日,并比较每个时间以查看是否有任何旧的。但是,它永远不会删除研讨会。

现在,$info是表行,因为该语句处于一个 while 循环中,因此它可以从表中获取每一行。但是即使删除语句​​不起作用,它也不会显示研讨会,对吧?最后一个 else 语句是顺便显示研讨会的开始。

如果有人知道更好的方法来做到这一点,我将不胜感激。我已经为此苦苦挣扎了一段时间。

4

3 回答 3

1

尽管重新设计表以包含单个日期列会更好,但您可以像这样使用现有架构:

if (date("Y-m-d") > sprintf("%04d-%02d-%02d", $info['year'], $info['month'], $info['day'])) {
    $sql = "DELETE FROM seminars WHERE ID = '$ID'"; 
    mysql_query($sql);} // then delete this seminar
}
于 2013-09-27T17:01:44.830 回答
0

您可以执行以下操作:

$infodate = strtotime(implode('-', array($info['year'], $info['month'], $info['day'])));

if (time() > $infodate) {
    mysql_query("DELETE FROM seminars WHERE ID = '$ID'")
} else {
    //print out this seminar
}
于 2013-09-27T17:02:08.470 回答
0

您不必每个月、日和年都有三列。相反,您应该只有一列具有列类型DATETIME。这将使您的工作更轻松。您只需要匹配当前日期。

于 2013-09-27T16:47:04.993 回答