我有一个菜单,就像这样:
<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
个查询。
有什么想法吗?谢谢,迈克。
答案 0 :(得分:3)
你最好的选择是只有一个Category表,其中包含一个字段“Parent”,然后你要做的就是根据其父级递归选择每个Category。
因此,首先找到没有父母的第一个类别(或根父母0),然后选择具有前一个类别的第一个类别作为父类。依此类推,直到你所在的类别没有孩子,然后通过表重新回溯过程。
与Eimantas评论中链接的网站点文章给出了非常详细的概述:Storing Hierarchical Data in a Database
答案 1 :(得分:0)
是的,杰米给出了正确的答案。你可以用数据库或其他替代方式维护数据库。你可以为它做准备递归循环。
如果它的2级,我认为它会运作良好,但对于多层次结构,你需要调整你的CSS。