【发布时间】:2021-09-13 00:07:40
【问题描述】:
我正在尝试使用 php 从 mysql 表创建一个动态菜单,但我不知道如何创建非类别菜单,这是我目前所拥有的,并且仅使用带有子菜单的类别,但非类别那些没有在 echo 上显示的。
MySQL分类菜单表:
catid name group
1 category name 1 0 -> whithout submenu
2 category name 2 1 -> category
3 category name 3 1 -> category
4 category name 4 0 -> whithout submenu
5 category name 5 0 -> whithout submenu
MySQL子菜单表:
id name parentid -> catid (category menu table)
1 name 1 2
2 name 2 3
3 name 3 3
4 name 4 3
5 name 5 2
我的 PHP 代码:
<?php
function loop($array = array(), $parentID = 0) {
if (!empty($array[$parentID])) {
echo '<ul>';
foreach ($array[$parentID] as $items) {
echo '<li>';
echo $items['name'];
loop($array, $items['catid']);
echo '</li>';
}
echo '</ul>';
}
}
function menu() {
$query = $db->query("SELECT m.name, m.parentid, c.group FROM `submenus` m LEFT JOIN( SELECT catid, group, parentid, ico, STATUS , MIN(name) AS category FROM `menu_categories` GROUP BY catid ) c ON m.parentid = c.catid");
$array = array();
if ($db->numRows($query)) {
while ($rows = $db->fetch($query)) {
$array[$rows['parentid']][] = $rows;
}
loop($array);
}
}
echo menu();
?>
【问题讨论】:
-
我用你的代码和我的更改更新了我的答案。你知道什么错误?
-
#1064 - 'FULL JOIN(SELECT 附近的错误
-
您对类别表的子选择包含 parentid,根据您上面的描述,它位于子菜单表中。也不要在表名或字段名中使用保留字,如“名称”或“组”等。