好的,我想知道如何使用PHP和MySQL创建和显示包含许多类别和子类别的侧面导航菜单?
我只是不知道从哪里开始编写PHP代码?
<ul>
<li><a href="" title="">First Nested Link</a></li>
<li><a href="" title="">First Nested Link</a></li>
<li><a href="" title="">First Nested Link</a>
<ul>
<li><a href="" title="">Second Nested Link</a></li>
<li><a href="" title="">Second Nested Link</a></li>
<li><a href="" title="">Second Nested Link</a>
<ul>
<li><a href="" title="">Third Nested Link</a></li>
<li><a href="" title="">Third Nested Link</a></li>
<li><a href="" title="">Third Nested Link</a>
<ul>
<li><a href="" title="">Fourth Nested Link</a></li>
<li><a href="" title="">Fourth Nested Link</a></li>
<li><a href="" title="">Fourth Nested Link</a></li>
</ul>
</li>
<li><a href="" title="">Third Nested Link</a></li>
<li><a href="" title="">Third Nested Link</a></li>
</ul>
</li>
<li><a href="" title="">Second Nested Link</a></li>
<li><a href="" title="">Second Nested Link</a></li>
</ul>
</li>
<li><a href="" title="">First Nested Link</a></li>
<li><a href="" title="">First Nested Link</a></li>
</ul>
这是我的MySQL表格。
* categories
id | category_name | description
* sub_categories
id | parent_id | category_name | description
答案 0 :(得分:1)
您的类别只需要一张表;只需将顶级类别的parent_id
字段设置为null。
至于实际生成HTML,您可以沿着这些行(伪代码)执行某些操作,其中$category_data
是二维数组中查询的结果,$category_id
是正在生成父类别。要开始使用,请使用$category_id = 0
function print_category($category_data, $category_id)
{
print "<ul>";
foreach ($category_data as $category)
{
if ((integer)$category['parent_id'] == $category_id)
{
print "<li>" . $category['category_name'] . "</li>";
print_category($category_data, $category['id']);
}
}
print "</ul>";
}
您必须为自己的布局和表格结构修改它。您可以通过将数组转换为三维数组$category_data[parent_id][id][category_row]
来提高性能(如果您有大量类别)。