我遇到了以下问题:
我想将今天的日期与数据库中的某些日期进行比较,然后如果它还没有过期,则显示一些内容......但是如果表格中的所有日期都已过期,请显示“没有安排讲座”此时,再次返回'。
至于第一件事没问题,但是我不能在没有任何日期的地方显示文字......
这是代码,
表: 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>";
}
}
答案 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.';