MySQL中的动态导航菜单,PDO显示一个实例

时间:2016-06-13 11:15:09

标签: php mysql

我正在为项目构建动态导航,我想只显示拥有城市parent_id的国家/地区,并且只显示城市的一个实例(例如:曼谷),如果不止一个。< / p>

注意:中国没有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

这是HTML的SNIPPET,其中class被实例化

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

以下是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。任何帮助都会得到很好的收到,因为我不是MySQL大师

1 个答案:

答案 0 :(得分:0)

试试这个你自己的sql

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