2016-06-13 30 views
0

我正在爲一個項目建立一個動態導航,我想只顯示有城市的國家parent_id,也只顯示城市的一個實例(例如:曼谷)如果不止一個。MySQL,PDO中的動態導航菜單顯示一個實例

注意:中國有沒有parent_id,所以這是一個不顯示。

不知道如果可能的話,這個設置,但我們走了。

這裏是數據庫表與四列和idAUTO_INCREMENT

id | menu  | parent_id | type 
----|-----------|-----------|------ 
1 | China  | 0   | null 
2 | Myanmar | 0   | null 
3 | Laos  | 0   | null 
4 | Thailand | 0   | null 
5 | Yangon | 2   | Tour 
6 | Champasak | 3   | Tour 
7 | Pakse  | 3   | Tour 
8 | Bangkok | 4   | Tour 
9 | Bangkok | 4   | Tour 
10 | Bangkok | 4   | Tour 

這就是class實例化

<li class="dropdown"> 
    <a class="dropdown-toggle" href="#">TOURS</a> 
    <?php 
    $menu = new DynamicNavigation(); 
    $menu->navigationTourMenu(); 
    ?> 
</li> 

這裏的HTML代碼段是class

class DynamicNavigation { 

    public function navigationTourMenu() { 
     $sql = DB::getInstance()->query('SELECT * FROM navigation'); 

     if($sql->count()) { 
      $rows = $sql->results(); 
     } 

     $items = $rows; 
     $id  = ''; 

     echo '<ul class="dropdown-menu">'; 
      foreach($items as $item) { 
       if($item->parent_id == 0) { 
        echo '<li class="dropdown">'; 
         echo '<a class="dropdown-toggle" href="#"><i class="fa fa-thumb-tack"></i> ' . $item->menu . '</a>'; 
         $id = $item->id; 
         $this->navigationTourSubMenu($items, $id); 
        echo '</li>'; 
       } 
      } 
     echo '</ul>'; 
    } 

    public function navigationTourSubMenu($items, $id) { 
     echo '<ul class="dropdown-menu">'; 
      foreach($items as $item) { 
       if($item->parent_id == $id && $item->type == 'Tour') { 
        echo '<li>'; 
         echo '<a href="' . BASE_URL . '/search?searching=' . $item->menu . '" onClick="showProgress()"><i class="fa fa-street-view"></i> ' . $item->menu . '</a>'; 
         $this->navigationTourSubMenu($items, $item->id); 
        echo '</li>'; 
       } 
      } 
     echo '</ul>'; 
    } 

} 

那麼是否有query這將在此設置中執行此操作。任何幫助將greatfully接受,因爲我不是一個MySQL的大師

回答

0

試試這個SQL insted的你的

SELECT distinct(nav.menu), nav.id, nav.parent_id, nav.type 
FROM navigation nav 
group by nav.menu , nav.parent_id, nav.type 
order by nav.parent_id 
+0

我認爲這個'query'只需要走出國門,而不是給我的單個實例城市。但我會給它去 – John

+0

嗨@giuseppe straziota我已經嘗試過你的'查詢',但它做我說的。問題在於'navigationTourSubMenu($ items,$ id)''foreach'循環正在帶回所有的城市。我想要的只是顯示一個城市的一個實例,即使這個城市是同一個城市的幾個實例。這是否有任何意義:-( – John

+0

使用此http://sqlfiddle.com/#!9/dd6fab/8我已修改查詢,以顯示只有一個國家的實例 –