功能很简单:
function showMenu( $level = 0 ) {
$sql = "SELECT * FROM `menus` WHERE `submenu`=".$level;
$result = mysql_query( $sql );
echo "<ul>";
while ( $node = mysql_fetch_array( $result ) ) {
echo "<li>". $node['name'];
$sql_ = "SELECT * FROM `menus` WHERE `submenu`=".$node['id'];
$hasChild = mysql_fetch_array( mysql_query( $sql_ ) ) != null;
if ( $hasChild ) {
showMenu( $node['id'] );
}
echo "</li>";
}
echo "</ul>";
}
但是当我使用1级或以上时的结果很奇怪。例如:
showMenu( 1 );
除了第一件商品外,会将所有商品退回给我。
答案 0 :(得分:2)
function showMenu( $level = 0 ) {
$sql = "SELECT * FROM `menus` WHERE `submenu`=".$level;
$result = mysql_query( $sql );
echo "<ul>";
$rows = "";
while ( $node = mysql_fetch_array( $result ) ) {
echo "<li>". $node['name'];
$sql_ = "SELECT * FROM `menus` WHERE `submenu`=".$node['id'];
$execute = mysql_query( $sql_ );
$rows = mysql_num_rows($execute);
if ( $rows>0 ) {
showMenu( $node['id'] );
}
echo "</li>";
}
echo "</ul>";
}
答案 1 :(得分:0)
首先,我认为伟大的程序员永远不会复制和粘贴代码。它意味着失败。
为什么我认为你必须获得所有菜单(包括子菜单)。它更好,因为你只发送一个数据包到sql。
现在您拥有对象中的所有菜单。 (嘿,我们在2013年:使用mysqli
面向对象)您可以在简单的if
语句天气中每次检查以构建新的<ul>
标记。
希望它有所帮助。