所以我想做的是用子菜单打印导航。我有什么:
菜单项的SQL表(ID,CAPTION,MODULE,PARENT_ID)。 所以父菜单项显然PARENT_ID为0.当添加子项时,PARENT_ID匹配父项的ID。如何用foreach或者递归函数打印这样的导航。
HTML来自bootstrap:
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">WebSiteName</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1
<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Page 1-1</a></li>
<li><a href="#">Page 1-2</a></li>
<li><a href="#">Page 1-3</a></li>
</ul>
</li>
<li><a href="#">Page 2</a></li>
<li><a href="#">Page 3</a></li>
</ul>
</div>
</nav>
提前谢谢。
答案 0 :(得分:2)
function menu
。在您必须检查子菜单是否包含后,您将使用ul
类创建dropdown
元素。
//call function
echo menu(0);
function menu($id){
$return = "";
// Your SQL query
$data = "SELECT * FROM data WHERE 1=1 AND `parent_id`='" . $id . "'";
foreach($data as $key => $row){
// calling menu to check is there any parent elements.
$subs = menu($row->id);
if($subs!=''){
$liClass = 'class="dropdow"';
$aHrefAttr = 'class="dropdown-toggle" data-toggle="dropdown"';
}else{
$liClass = '';
$aHrefAttr = '';
}
$return .= '<li '.$liClass.'><a ' . $aHrefAttr . ' href="'.$url.'">'.$row->title.'</a>';
if($subs!=''){
$return .= "<ul class='dropdown-menu'>\n";
$return .= $subs;
$return .= "</ul>\n";
}
$return .= "</li>\n";
}
return $return;
}