2015-02-07 135 views
0

我想创建一个脚本,如果日期比今天晚,那么它将显示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> 

          ");  
      } 

       } 

     } 

当我添加一个事件表比今天晚些时候它成功地增加并运行该脚本,我可以看到该网页,因为日期,如果超过时间()打印出来的事件。

但是,如果我清除所有事件的MySql表,那么它不会带回else语句“目前没有事件发生”。

如果表中没有任何内容比今天晚,为什么else语句不能带回失败的通知。

任何帮助非常感谢。

+0

你的代码只对每一行发现*,如果这行是今天或晚些时候......否则输出“没有事件发生”。* else只适用于每一行。如果没有找到行,它甚至不会进入循环。修正你的逻辑。 – deceze 2015-02-07 09:42:12

回答

2

但是,如果我清除所有事件的MySql表,那么它不会带回else语句“目前没有事件发生”。

while语句只有在有行要处理时才会执行。由于您已清除表格,因此永远不会进入while循环,并且绝不会遇到else分支。

1

因为没有行可以抓取,而且当你的表为空时,你的代码不会进入while循环。

HTH!

+0

这让我更容易理解,谢谢。 – divideddarko 2015-02-07 09:54:29

+0

最受欢迎:) – 2015-02-07 10:04:35