我的设想是这样的比如添加了一个一级类别【网站新闻】[ismain=0],其classid是1,mainid=0;然后在这个大类下添加个二级类别【通知公告】[ismain=1],它的classid比如说是2;-->它的mainid就是1;再在【通知公告】这个二级类别下添加三级类别【最近通知】[ismain=2],它的classid比如是3->mainid是2;
如果再要添加一级类别【站点广告】[ismain=0],其classid比如是4,因为是大类,所有mainid=0;
在这个大类下添加二级类别【flash广告】[ismain=1],其classid比如是6,从属于【站点广告】所以mainid就是4;还可以添加更小的类别。。这个表的结构的意思就是mainid代表当前classid所从属的那个上级类别的classid值
而ismain是判断这个类别的级数的,0是一级类别,1为二级类别,2为三级类别依次类推
不知道我说明白了没#14

解决方案 »

  1.   

    看了一下,其实你的结构可以简化
    1. 只需三个字段 ID parentID title 
                    1    0       root
                    2    1       news
                    3    1       ad
                    4    2       announce
                    5    4       recent announce  
    所有结点都是root结点的子结点
    除了root每个结点都有父结点,一级分类的父结点为1
    有了这样的结构你可以使用递归方法来取得整个树
    当树不是很大的时候使用这种方法简单,但需多次查询数据库function listTree($parentID = 0)
    {
       $sql = "select * from tree where parentID = $parentID";
       $res = mysql_query($sql);
       while($arr = mysql_fetch_array($res))
       {
           // 输出当前结点信息
            echo $arr['id'] ."---".$arr['title'];
           
            //查询该结点的子节点
            listTree($arr['parentID']);
       }
    }上面代码没测试, 使用递归的方法遍历树的简单例子
      

  2.   

    哦,写错了个地方
    function listTree($parentID = 0)
    {
       $sql = "select * from tree where parentID = $parentID";
       $res = mysql_query($sql);
       while($arr = mysql_fetch_array($res))
       {
           // 输出当前结点信息
          echo "" . str_repeat( "&nbsp;&nbsp;", $arr['parentID'] ) . "- " . $arr['title'] . "<br/>";
           
            //查询该结点的子节点
            listTree($arr['ID']);
       }
    }