一推网

当前位置: 首页 > 知识问答 > 如何利用函数递归在PHP和MySQL中实现动态树型菜单?

知识问答

如何利用函数递归在PHP和MySQL中实现动态树型菜单?

2025-09-21 16:07:10 来源:互联网转载
使用递归函数在PHP中实现MySQL动态树型菜单。

函数递归实现 PHP 和 MySQL 动态树型菜单

1. 数据库设计

我们需要在 MySQL 中创建一个表来存储菜单数据,以下是一个简单的示例:

CREATE TABLEmenu (id int(11) NOT NULL AUTO_INCREMENT,title varchar(255) NOT NULL,url varchar(255) NOT NULL,parent_id int(11) NOT NULL,  PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
字段名 类型 描述
id int(11) 菜单 ID
title varchar(255) 菜单标题
url varchar(255) 菜单链接
parent_id int(11) 父菜单 ID

2. 插入示例数据

insert INTOmenu (title,url,parent_id) VALUES('首页', '/index', 0),('产品', '/products', 0),('产品分类一', '/product-category1', 2),('产品分类二', '/product-category2', 2),('公司介绍', '/about', 0);

3. 编写 PHP 递归函数

function generateTree($parentId = 0, $level = 0) {    global $conn;    $sql = "select * FROM menu WHERE parent_id = ?";    $stmt = $conn->prepare($sql);    $stmt->bind_param("i", $parentId);    $stmt->execute();    $result = $stmt->get_result();        while ($row = $result->fetch_assoc()) {        echo str_repeat("&nbsp;&nbsp;&nbsp;", $level); // 缩进        echo "<a href='{$row['url']}'>{$row['title']}</a><br>"; // 输出菜单项        generateTree($row['id'], $level + 1); // 递归调用    }}

4. 调用递归函数生成树型菜单

generateTree();

相关问题与解答

问题1:如何修改代码以支持无限级嵌套?

答:上述代码已经支持无限级嵌套,通过递归调用generateTree() 函数,我们可以遍历整个菜单结构,无论其层级有多深,只需确保在数据库中正确设置每个菜单项的parent_id

问题2:如何为树型菜单添加 CSS 样式?

答:要在树型菜单中添加 CSS 样式,可以在输出的 HTML 标签中添加相应的类或 ID,可以将generateTree() 函数中的输出部分修改为:

echo "<p class='menu-item'><a href='{$row['url']}'>{$row['title']}</a></p>";

在 CSS 文件中添加相应的样式:

.menu-item {    margin-bottom: 10px;}.menu-item a {    text-decoration: none;    color: #333;}.menu-item a:hover {    color: #007bff;}

上一篇:北京网站制作谈谈高校建设门户网站的意义

下一篇:北京网站建设促进企业网络营销活动的快速提示