我需要一些PHP的帮助。我有一个多级css菜单,工作正常,但现在我想根据数据库中的记录生成。
菜单代码:
<div id="page-wrap">
<ul class="dropdown">
<li><a href="#">Link 1</a> </li>
<li><a href="#">Link 2</a> </li>
<li><a href="#">Link 3</a> </li>
<li><a href="#">Link 4</a>
<ul class="sub_menu">
<li><a href="#">Link 4 - 1</a></li>
<li><a href="#">Link 4 - 2</a></li>
<li><a href="#">Link 4 - 3</a></li>
</ul>
</li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a> </li>
</ul>
</div>
在数据库中,每个记录都有一个名为 main_manu 的字段,如果此字段的值为是,则该字段为主链接,如果值为否然后它有另一个字段( sub_menu ),表示应放置此链接的父菜单。查看截图。
DB Fields
那么,现在我不知道怎么做将获得记录的php片段,如果main_menu的值为yes,它将创建一个顶级菜单,如果 main_menu 的值不,它会根据 sub_menu 字段的值创建子级别菜单。
非常感谢
更新
这是我到目前为止的代码,它的工作原理。如果我可以使用单个查询而不是多个嵌套查询,那就太好了。
<div id='page-wrap'>
<ul class='dropdown'>
<?
$sql_menu = "SELECT * FROM content WHERE visible = '1' and main_menu='yes' ";
$result_menu = mysql_query($sql_menu);
while($row = mysql_fetch_assoc($result_menu))
{
$id=$row['id'];
$menu_top=$row['menu_name'];
$menu_url=$row['menu_url'];
print "<li><a href='$menu_url'>$menu_top</a>";
$sql_sub = "SELECT * FROM content WHERE sub_menu = '$menu_url' ";
$result_sub = mysql_query($sql_sub);
$num_rows = mysql_num_rows($result_sub);
while($row = mysql_fetch_assoc($result_sub))
{
$id=$row['id'];
$menu_sub=$row['menu_name'];
$sub_url=$row['menu_url'];
If ($num_rows != 0)
{
print "<ul class='sub_menu'>
<li><a href='$sub_url'>$menu_sub</a></li>
</ul>";
}
}
print "</li>";
}
?>
</ul>
</div>
答案 0 :(得分:0)
我认为这些链接会帮助你。如果没有,请告诉我,我会给你代码
答案 1 :(得分:0)
此代码如下所示(无论您与数据库交互的方式如何,都需要更改)。
// Here we do a query to get all the rows from the table
$db_result = db_execute_query('SELECT * FROM `menu_table` ORDER BY `order_no`');
// Here we take the rows and put it into a structured array
$items = array();
$hierarchy = array('' => array());
while ($row = db_fetch_row($db_result)) {
$items[$row['menu_name']] = $row['menu_name_en'];
if ($row['main_menu'] == 'yes') {
$hierarchy[''][] = $row['menu_name'];
} else {
if (!isset($hierarchy[$row['sub_menu']]) {
$hierarchy[$row['sub_menu']] = array();
}
$hierarchy[$row['sub_menu']][] = $row['menu_name'];
}
}
// Here we define a recursive function to run through our $hierarchy array;
function show_menu($name = '') {
if (isset($hierarchy[$name])) {
if ($name == '') {
echo '<ul class="dropdown">';
} else {
echo '<ul class="sub_menu">';
}
foreach ($hierarchy[$name] as $sub) {
echo '<li><a href="#">' . $items[$sub] . '</a>';
show_menu($sub);
echo '</li>';
}
echo '</ul>';
}
}
// Here we execute the recursive function on the main menu
show_menu('');
尝试了解我在这里做的事情,而不是逐字逐句地实施。一旦你了解了递归函数,就可以为你打开一个全新的世界。
另请注意,可以更改db表以使此代码更简单