PHP动态导航菜单是指使用PHP脚本根据数据库或配置文件中的数据动态生成网页的导航菜单。这种菜单可以根据用户的权限、当前页面或其他条件动态显示或隐藏菜单项。
以下是一个简单的基于数据库的PHP动态导航菜单示例:
CREATE TABLE `menu_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`user_role` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
<?php
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取当前用户角色
$user_role = $_SESSION['user_role'];
// 查询菜单项
$sql = "SELECT * FROM menu_items WHERE user_role = '$user_role' ORDER BY parent_id, id";
$result = $conn->query($sql);
// 生成导航菜单
function generateMenu($items, $parent_id = 0) {
$html = '';
foreach ($items as $item) {
if ($item['parent_id'] == $parent_id) {
$html .= '<li>';
$html .= '<a href="' . $item['url'] . '">' . $item['name'] . '</a>';
$children = generateMenu($items, $item['id']);
if ($children) {
$html .= '<ul>' . $children . '</ul>';
}
$html .= '</li>';
}
}
return $html;
}
$menuItems = [];
while ($row = $result->fetch_assoc()) {
$menuItems[] = $row;
}
$navMenu = generateMenu($menuItems);
$conn->close();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态导航菜单</title>
<style>
ul {
list-style-type: none;
padding: 0;
}
li {
padding: 10px;
}
ul ul {
display: none;
}
li:hover > ul {
display: block;
}
</style>
</head>
<body>
<nav>
<ul>
<?php echo $navMenu; ?>
</ul>
</nav>
</body>
</html>
通过以上示例代码和常见问题解决方法,您可以实现一个灵活、可维护且安全的PHP动态导航菜单。
领取专属 10元无门槛券
手把手带您无忧上云