递归目录树,怎样套上UL LI
程序员文章站
2024-02-17 11:49:52
...
function nav($parent){
$sql = mysql_query("select * from menu where parent = '$parent'");
while($row = mysql_fetch_array($sql)){
echo '
'.$row['name'].'';
nav($row['id']);
echo ' ';
}
}
子类要怎么套上UL输出呢?
类似这样
'.$row['name'].''; echo ' '; }}
由于你在 nav 函数中是直接输出的,所以在没有子节点时,会产生空的
不过并不影响显示效果
'.$row['name'].''; $t = nav($row['id']); if(! empty($t)) $res .= " '; } return $res;}
调用时
echo nav($id);
我都是用 ajax 动态加载的,所以没有递归。
至少目前不适合你
$sql = mysql_query("select * from menu where parent = '$parent'");
while($row = mysql_fetch_array($sql)){
echo '
nav($row['id']);
echo '
}
}
子类要怎么套上UL输出呢?
类似这样
回复讨论(解决方案)
function nav($parent){ $sql = mysql_query("select * from menu where parent = '$parent'"); while($row = mysql_fetch_array($sql)){ echo '
- '; nav($row['id']); echo '
由于你在 nav 函数中是直接输出的,所以在没有子节点时,会产生空的
不过并不影响显示效果
就是会影响啊 我前端是折叠菜单 UL display为block的时候就麻烦了
网上找了一夜 中文英文 测试无数 就没有一个完美的 要么连数据库封装成类没法用 要么UL嵌套错误
要么遍历N次 要么几百行代码 看着都笨拙
不知道大牛们是怎么解决的,就没有一个完美的办法?
请版主老大把你常用的代码分享下
你边查询边输出,于是你就无法知道当前节点是否有子节点(因为还未读到)
所以你需要想将查询结果读到数组 http://bbs.csdn.net/topics/390364669
然后再递归输出
你也可以用变量缓存待输出的内容,等递归结束时再输出
function nav($parent){ $res = ''; $sql = mysql_query("select * from menu where parent = '$parent'"); while($row = mysql_fetch_array($sql)){ $res .= '
- $t
调用时
echo nav($id);
我都是用 ajax 动态加载的,所以没有递归。
至少目前不适合你
非常感谢,我慢慢去研究吧
上一篇: ThinkPHP单字母函数拾掇
下一篇: Mysql存储过程那些事_MySQL