2017-05-09 11 views
1

これで、サブメニュー付きのナビゲーションを印刷することができます。私が持っているもの:サブメニュー付きの印刷ナビゲーション

メニュー項目(ID、CAPTION、MODULE、PARENT_ID)のテーブル。 親メニュー項目は明らかにPARENT_IDが0になっています。サブ項目が追加されると、PARENT_IDは親項目のIDと一致します。どのようにforeachまたは再帰関数を使ってこのようなナビゲーションを印刷することができますか?

HTMLは、ブートストラップからです:

<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

これまでに何を試みましたか? – rickdenhaan

+0

私にとって最も複雑な部分は、親の部分です。すべての要素を問題なく印刷できます。しかし、私は特定の親要素に子要素があるかどうかをチェックし(ドロップダウンとして印刷する)、単純なli要素として印刷しないかどうかをチェックする関数を作成する方法を知らない。 – Benua

答えて

2

簡単です。 function menuに電話する必要があります。サブメニューがあるかどうか確認した後、dropdownクラスのul要素を作成します。

//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; 
} 
関連する問題