2009-09-20 54 views
0

我有一個菜單動態菜單,這是這樣的:在HTML子菜單

<ul id="menu_cat"> 
    <li><a class="cat1" href="#">category 1</a> 
    <ul> 
    <li><a class="cat2" href="#">category 2</a> 
     <ul> 
      <li><a class="cat3" href="#">category 3</a></li> 
      <li><a class="cat3" href="#">category 3</a></li> 
      <li><a class="cat3" href="#">category 3</a></li> 
     </ul>  
    </li> 
    <li><a class="cat2" href="#">Category 2</a> 
     <ul> 
      <li><a class="cat3" href="#">category 3</a></li> 
      <li><a class="cat3" href="#">category 3</a></li> 
      <li><a class="cat3" href="#">category 3</a></li> 
     </ul> 
    </li> 
    <li><a class="cat2" href="#">Category 2</a> 
     <ul> 
      <li><a class="cat3" href="#">Category 3</a></li> 
      <li><a class="cat3" href="#">category 3</a></li> 
      <li><a class="cat3" href="#">category 3</a></li> 
     </ul> 
    </li> 
    </ul> <!-- End of CAT1--> 
    </li> <!-- End of .Krmiva --> 
</ul> 

現在我需要讓動態的,所以「類別1,2,3」取來自MySQL數據庫,但我可以考慮任何其他解決方案,而不是像CAT1,CAT2,CAT3這樣的3個表格,而不是CAT1中的每個項目,從CAT2中選擇子菜單以及從CAT3中選擇每個CAT2選擇子菜單。意味着要像20 SELECT * FROM查詢。

有什麼想法?謝謝,邁克。

+2

部分重複此:http://stackoverflow.com/questions/1450405/php-tutorial-to-build-browse-and-link-categories-and-sub-categories/1450409 – Eimantas 2009-09-20 11:06:31

回答

3

最好的辦法是隻要有一個類別表,其中包括一個字段「父」,那麼你所要做的就是遞歸選擇每個類別的基礎上它的父母。

因此,首先找到沒有任何父母(或根父母0)的第一個類別,然後選擇具有上一個類別作爲父類別的第一個類別。依此類推,直到你所在的類別沒有孩子,然後重複這個過程在表格中回溯。

鏈接到Eimantas'評論給出了一個非常詳細的提綱網站點文章:Storing Hierarchical Data in a Database

+1

更多分層數據鏈接mysql:http://dev.mysql.com/tech-resources/articles/hierarchical-data.html,http://stackoverflow.com/questions/1271124/does-mysql-5-have-procedures-for-managing-分層數據 – txyoji 2009-09-20 12:44:42

+0

鏈接回答,顯示一個工作遞歸PHP函數(與MySQL混合): http://stackoverflow.com/a/15309305/631764 – 2013-03-09 10:16:08

0

是,傑米給了正確的事情。你可以用這種方式或另一種方式維護數據庫。你可以準備相同的遞歸循環。

如果它的2級,我認爲,它會運作良好,但對於多層次結構,您需要調整您的CSS。