2015-04-27 147 views
1

我正在使用Smarty,PHP和MySQL。父類和子類別下拉菜單

對於懂得如何操作的人來說,這應該是非常容易的。我是一個noob,不知道。

嘗試在下拉菜單中獲取父級和子類別的水平導航欄。

當前代碼僅顯示父級,我需要子類別才能顯示。

我不認爲我有任何SQL來獲取子郵件,並不真正知道如何編寫它,所以也許有人可以提供幫助。

TABLE >>> CATEGORY 

    category_id name  parent_id 
    1   Parent 0 
    2   Parent 0 
    2   Parent 0 
    3   Child  1 
    4   Child  2 
    5   Child  2 
    6   Child  3 
    7   Child  3 

當前函數來獲取分類

// list of all categories 
function getCategoriesList($include_subcats = false) { 

$where = ''; 

if ($include_subcats != false) { 
    $where = ' where parent_id = 0 '; 
} 
$list = 
getSqlResult(
    "select * from category $where ORDER BY parent_id ASC", 
    SQL_RESULT_ALL); 

return $list; 
} 

模板代碼顯示菜單

{foreach name=CategoriesList from=$CategoriesList item=i} 
<li class="dropdown "><a href="/{$i.category_filename}" class="dropdown-toggle" data-toggle="dropdown">{$i.category_name}<b class="caret"></b></a 
</li>{/foreach} 
+0

有做這幾個方式。我回答了這個問題希望你能明白的方式 –

+0

你似乎有重複的行 – Strawberry

回答

0

你可以做到這一點,返回功能

首先我們將編寫的父母,因爲他們的catid是0

   function categori($upcatid=0, $satir=0, $bosluk=""){ 
      // $upcatid is 0 for began that means is we will see the all parent 
       $data["result"]= $categori->kategori($upcatid);// i got my all cats from db 
       foreach ($data["result"] as $key => $kategorim) { 
     // lets look at the cats parent categories parent_id are 0 if categori parent is not 0 it main the categori have parent! so we are going to return the function and call the parent firstly 

       if(!isset($disabled)) 
        $disabled=''; 
       echo '<option value="'.$kategorim["id"].'" '.$disabled.' >'.str_repeat("->>", $satir).">$bosluk ".$kategorim["catname"].'</option>'; 
    categori($kategorim["id"], $satir+1); // now get the categori id and retun the function 
    //call the all childs of the cat. 

       } 
      } 

我寫的所有類別中選擇選項

if($upcatid==0) 
echo ' <li class="dropdown"> 
       <a data-toggle="dropdown" class="dropdown-toggle" href="#">'.$kategorim["catname"].' <b class="caret"></b></a> 

'; 
elseif($upcatid!==0){ 
echo ' <li class="dropdown-submenu"> 
        <a href="#">'.$kategorim["catname"].'</a> 
        <ul class="dropdown-menu"> 
        <li><a href="#">'.categori($kategorim["id"], $satir+1).'</a></li> 

        </ul> 
       </li>'; 


echo '</li>'; 

所有你需要修改你的項目

+0

嗨艾哈邁德。感謝您的回答。不知道如何在我的Smarty模板中完成這項工作。我粘貼它,但它不起作用。 –

+0

它不起作用,因爲您需要爲您的項目修改此代碼。如果你沒有理解樹貓的話,那麼只需看看bootstrap multi下拉的例子。你會修改你的項目 –

+0

不知道如何修改。我需要一個完整的解決方案來理解如何使用Smarty模板進行這項工作。不應該在Smarty模板中使用這樣的PHP。 –