2015-02-07 5 views
0

Я пытаюсь создать скрипт, где, если дата позже, чем сегодня, тогда он отобразит элемент из таблицы в MySQL.else statement not triggering else

$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 выводит «никаких событий не происходит». * «Else» относится только к каждой строке. Если ни одна строка не найдена, она даже не входит в цикл. Исправьте свою логику. – deceze

ответ

2

Но если я очищаю таблицу MySql всех событий, то она не возвращает заявление else: «В настоящее время событий не происходит».

Инструкция while будет выполняться только в том случае, если есть строки для обработки. Поскольку вы очистили таблицу, она никогда не войдет в цикл while, и ветка else никогда не встретится.

1

Поскольку нет строк для извлечения, и ваш код не проходит внутри цикла while, когда ваша таблица пуста.

HTH!

+0

Это помогло мне понять, что намного проще, спасибо. – divideddarko

+0

Большинство приветствуется :) –