2015-02-07 104 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