我正在为一个项目构建动态导航,我只想显示具有城市parent_id
的国家,并且如果超过一个城市(例如:曼谷),也只显示一个城市实例(例如:曼谷)一个。
注意:中国没有 parent_id
,所以这是不显示的。
不确定此设置是否可行,但我们开始吧。
这是包含四列的数据库表,id
是 AUTO_INCRMENT
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
的 HTML 片段
<li class="dropdown">
<a class="dropdown-toggle" href="#">TOURS</a>
<?php
$menu = new DynamicNavigation();
$menu->navigationTourMenu();
?>
</li>
这是类
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>';
}
}
那么是否有一个查询
可以在此设置中执行此操作。由于我不是 MySQL 专家,因此我们将非常乐意提供任何帮助
最佳答案
试试你的这个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
关于php - MySQL 中的动态导航菜单,PDO 显示一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37788363/