Heim > Backend-Entwicklung > PHP-Tutorial > 递归目录树,怎样套上UL LI

递归目录树,怎样套上UL LI

WBOY
Freigeben: 2016-06-23 14:05:43
Original
943 Leute haben es durchsucht

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输出呢?   

    类似这样


    • 音乐
           
      • 流行

      •          
      • 经典
                      

                        
        • 80年代

        •               
        • 90年代

        •               

                  

      •      


    • 电影

    • 书籍




    回复讨论(解决方案)

    function nav($parent){  $sql = mysql_query("select * from menu where parent = '$parent'");  while($row = mysql_fetch_array($sql)){    echo '<li><a href="'.$row['id'].'">'.$row['name'].'</a>';    echo '<ul>';    nav($row['id']);    echo '</ul>';    echo '</li>';  }}
    Nach dem Login kopieren

    由于你在 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 .= '<li><a href="'.$row['id'].'">'.$row['name'].'</a>';    $t = nav($row['id']);    if(! empty($t)) $res .= "<ul>$t</ul>";    $res .= '</li>';  }  return $res;}
      Nach dem Login kopieren

      调用时
      echo nav($id);

      我都是用 ajax 动态加载的,所以没有递归。
      至少目前不适合你

      非常感谢,我慢慢去研究吧

      Verwandte Etiketten:
      Quelle:php.cn
      Erklärung dieser Website
      Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
      Beliebte Tutorials
      Mehr>
      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage