我有一个数据库中的3个表,我想加入为了建立一个3级嵌套列表(这将用作菜单的一部分)。到目前为止,我已经计算出如何从下表中选择表中的数据。我想一些帮助生成菜单的第三级,在PHP部分:从数据库表建立一个php嵌套列表
SQL表:
page_list:的pageID(primary_key)PAGE_NAME PAGEURL
level2_menu :的generalID(primary_key)gener_name的pageID(foreign_key);
level3_menu:deepID使用(primary_key)的generalID(foreign_key)deep_title
:
<?php
get_menu("SELECT page_list.pageID as pageID, page_list.page_name as page_name, page_list.pageURL as pageURL, level2_menu.GeneralID as GeneralID, level2_menu.gener_name as general_name, level3_menu.deepID as deepID, level3_menu.deep_title as deep_title
FROM page_list
LEFT OUTER JOIN level2_menu ON page_list.pageID = level2_menu.pageID
LEFT OUTER JOIN level3_menu ON level2_menu.GeneralID = level3_menu.generalID
UNION
SELECT page_list.pageID as pageID, page_list.page_name as page_name, page_list.pageURL as pageURL, level2_menu.GeneralID as GeneralID, level2_menu.gener_name as general_name, level3_menu.deepID as deepID, level3_menu.deep_title as deep_title
FROM page_list
RIGHT OUTER JOIN level2_menu ON page_list.pageID = level2_menu.pageID
RIGHT OUTER JOIN level3_menu ON level2_menu.GeneralID = level3_menu.generalID
ORDER BY pageID desc
");
?>
这给出了以下SQL结果:http://sqlfiddle.com/#!9/927a0
+--------------------+------------+----------+-----------+---------------+--------+------------+
| pageID Ascending 1 | page_name | pageURL | GeneralID | general_name | deepID | deep_title |
+--------------------+------------+----------+-----------+---------------+--------+------------+
| 7 | get quote | 0 | NULL | NULL | NULL | NULL |
| 4 | tjanster | info.php | 9 | Title | NULL | NULL |
| 3 | products | info.php | 5 | Title 2 | 8 | Subtitle |
+--------------------+------------+----------+-----------+---------------+--------+------------+
,以及获得用于数据级别1列表和级别2列表,使用:
function get_menu($sql)
{
include 'connect.php';
$result = $conn->query($sql);
if ($result->num_rows > 0)
;
$current_album = "";
echo "<div id='menu'><div class='menu_pos'><ul class='main-navigation'>\n";
while ($row = $result->fetch_assoc()) {
if ($current_album <> "" && $current_album <> $row['pageID'])
echo "</ul></li>";
if ($current_album <> $row['pageID']) {
echo "<li id='qoute'><a href='#'>" . $row['page_name'] . "</a><ul>\n";
$current_album = $row['pageID'];
}
if ($row['GeneralID'] == 'NULL') {
echo "bob";
} else {
echo "<li><a href='#'>" . $row['general_name'] . "</a></li>\n";
}
}
echo "</ul></div></div>";
}
这导致The first menu example shown here这是一个2级的列表,但是我想要3级列表,如第二个菜单示例,显示在jsfiddle中。
有人能帮我解答吗? – ChriChri
添加大数据查询结果的数据样本 – Blag
您可以在这里找到:http://jsfiddle.net/981f8bgs/,其中涵盖了可能生成的所有数据类型。 – ChriChri