北京过客 2011-03-24 22:24:42 5499次浏览 12条回复 0 0 0

谁有YII无级分类代码

能分享个吗,或者说说怎么实现也行啊

  • 回复于 2011-03-24 22:49 举报

    给你一个表结构:
    id(int) 主键
    parent (int) 父ID
    name(string) 分类名称

  • 回复于 2011-03-24 23:30 举报

    用递归来实现吗,那排序怎么办呢,有没有代码,PHP的也行

  • 回复于 2011-03-25 09:25 举报

    ShowTreeMenu($rs,$ID); //使用此方法就可以了

    function ShowTreeMenu($rs,$layer){
      $numrows=mysql_num_rows($rs); 
      echo "<table cellpadding='0' cellspacing='0' border='0' width='100'>\n"; 
      for($rows=0;$rows< $numrows;$rows++){
        $menu=mysql_fetch_array($rs);
        $sql="select * from t_category  where c_parent=$menu[c_id]";
        $rs_sub=mysql_query($sql);
        echo " <tr>"; 
        if(mysql_num_rows($rs_sub)>0){
          echo " <td width='20' height='25'><img src='img/closed.gif' id='s_Menu".$GLOBALS["ID"]."' border='0' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].",s_Menu".$GLOBALS["ID"].");'> </td>\n"; 
          echo " <td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].",s_Menu".$GLOBALS["ID"].");'>\n"; 
          echo $menu['c_name'];
        }else{
          echo " <td width='20' height='25'><img src='img/child.gif' border='0'></td>\n";
          echo " <td class='Menu'>\n"; 
          echo " <a href='".$menu['c_url']."' target='main'>".$menu['c_name']."</a>";
        }  
        echo " </td></tr>"; 
        if(mysql_num_rows($rs_sub)>0) 
        { 
          echo "<tr id='Menu".$GLOBALS["ID"]++."' style='display:none'>\n"; 
          echo "<td width='20'> </td>\n"; 
          echo "<td>\n";
          $layer++; 
          ShowTreeMenu($rs_sub,$layer); 
            echo "</td></tr>\n"; 
        }
        $layer--;
        @mysql_free_result($rs_sub);
      } 
      echo "</table>\n";
      mysql_free_result($rs);
    }
    
  • 回复于 2011-03-25 09:26 举报

    你可以在这个基础上去扩展或增删功能,看你的了,XEON,加油!

  • 回复于 2011-03-25 09:46 举报

    先把数据保存到多维数组里面,再遍历数组

  • 回复于 2011-05-28 17:19 举报

    哥研究这个好多年了。。。

  • 回复于 2011-05-29 01:28 举报

    你研究好多年了,发给我个吧

  • 回复于 2011-05-30 00:30 举报

    第一种是手动sql查询
    父子无限分类的sql看这篇文章
    http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
    配合yii的query caching
    第二种是全部查询出来,每次从缓存载入解析出自己要的数据,仅在分类数据量不大的时候可行.

  • 回复于 2011-05-30 10:56 举报

    楼上说的这种访问是很不错的,
    补充一个中文版的说明:
    http://tech.ddvip.com/2009-03/1237534469111885.html

  • 回复于 2011-05-31 13:23 举报

    上面的分类方法不错哦,但是没有注释,有点难理解!

  • 回复于 2011-05-31 14:40 举报

    不建议用递归,对数据库太查询操作过多,建议单独用一个path字段存储路径结构 parentid - parentid - id

  • 回复于 2011-05-31 21:02 举报

    3 得到某个节点下面的所有节点,且按照树状结构返回
     我们用B做例子

      select * from tree where lft>2 and right<11 order by lft
    

    貌似这种算法的,查询起来才会更省资源.虽然在改变结构的时候会操作数据库多次,但是一般网站,对目录结构应该修改次数比拉取次数要少NNNNN多吧?

您需要登录后才可以回复。登录 | 立即注册