Maison > développement back-end > tutoriel php > 递归目录树,怎样套上UL LI

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

WBOY
Libérer: 2016-06-23 14:05:43
original
943 Les gens l'ont consulté

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>';  }}
    Copier après la connexion

    由于你在 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;}
      Copier après la connexion

      调用时
      echo nav($id);

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

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

      Étiquettes associées:
      source:php.cn
      Déclaration de ce site Web
      Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
      Tutoriels populaires
      Plus>
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal