我正在尝试创建一个脚本,如果日期晚于今天,那么它将显示MySQL中的表中的项目。
$query = $dbc->query("SELECT event_id, name, location, image, DATE_FORMAT(Date, '%d-%b-%Y') AS Date, Date as FormatDate
FROM events
ORDER BY FormatDate ASC
");
$results = $query->setFetchMode(PDO::FETCH_ASSOC);
while($row = $query->fetch()){
$name = $row['name'];
$image = $row['image'];
$location = $row['location'];
$Date = $row['Date'];
$Date = strtotime($Date);
$Date = date('d-M-Y', $Date);
$Data = explode("-", $Date);
if (strtotime($Date) >= time()){
$page->body("
<div class=\"event\">test
<img src=\"$image\" alt=\"$name\" class=\"event_image\"/>
<p class=\"event_title\">$name</p>
<p class=\"event_location\">$location</p>
<p class=\"event_time\">$Data[0] $Data[1] $Data[2]</p>
</div>
");
}else{
$page->body ("
<!-- alrge grey text 100% span -->
<div class=\"event\">
<p>There are currently no events happening.</p>
</div>
");
}
}
}
当我使用比今天更晚的日期向表中添加事件时,它成功添加并运行脚本,我可以看到事件打印在页面上,因为日期大于time()。
但是,如果我清除所有事件的MySql表,那么它不会带回else语句“当前没有事件发生”。
如果表中没有任何内容比今天更晚,那么为什么else语句不会带回失败的通知,我感到困惑。
任何帮助都非常感激。
答案 0 :(得分:2)
但是如果我清除所有事件的MySql表,那么它不会带回else语句“当前没有事件发生”。
只有在要处理的行时才会执行while
语句。由于您已清除该表,因此它永远不会进入while
循环,并且永远不会遇到else
分支。
答案 1 :(得分:1)
因为没有要获取的行,并且当表空为空时,您的代码不会进入循环。
HTH!