使用递归函数在PHP中实现MySQL动态树型菜单。函数递归实现 PHP 和 MySQL 动态树型菜单
1. 数据库设计
我们需要在 MySQL 中创建一个表来存储菜单数据,以下是一个简单的示例:
CREATE TABLEmenu(idint(11) NOT NULL AUTO_INCREMENT,titlevarchar(255) NOT NULL,urlvarchar(255) NOT NULL,parent_idint(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(" ", $level); // 缩进 echo "{$row['title']}
"; // 输出菜单项 generateTree($row['id'], $level + 1); // 递归调用 }}4. 调用递归函数生成树型菜单
generateTree();
相关问题与解答
问题1:如何修改代码以支持无限级嵌套?
答:上述代码已经支持无限级嵌套,通过递归调用generateTree() 函数,我们可以遍历整个菜单结构,无论其层级有多深,只需确保在数据库中正确设置每个菜单项的parent_id。
问题2:如何为树型菜单添加 CSS 样式?
答:要在树型菜单中添加 CSS 样式,可以在输出的 HTML 标签中添加相应的类或 ID,可以将generateTree() 函数中的输出部分修改为:
echo "";
在 CSS 文件中添加相应的样式:
.menu-item { margin-bottom: 10px;}.menu-item a { text-decoration: none; color: #333;}.menu-item a:hover { color: #007bff;}以上就是关于“"函数递归"实现php和MySQL动态树型菜单”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
本文地址:https://www.shjdjh.com/news/112038.html
免责声明:本站内容仅用于学习参考,信息和图片素材来源于互联网,如内容侵权与违规,请联系我们进行删除,我们将在三个工作日内处理。联系邮箱:cloudinto#qq.com(把#换成@)