繁体   English   中英

如何使用PHP和MySQL显示带有许多子类别的侧面导航菜单?

[英]How to display a side nav menu with many sub-categories using PHP and MySQL?

好的,我想知道如何使用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

您的类别只需要一张桌子; 只需将顶级类别的parent_id字段设置为null即可。

对于实际生成HTML,您可以按照以下方式进行操作(伪代码),其中$category_data是二维数组中查询的结果,而$category_id是要生成的父类别的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]可以提高性能(如果您有很多类别)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM