想实现新闻目录的无限级,请教大家数据库表怎么设计???谢谢

解决方案 »

  1.   

    你不来都没有人回我的信息,呃~~你有没有比较成熟的cms系统?我想好好研究下,有的话请给我写下链接或是把它的名字留下来,网上太多,也不知道哪个比较好.谢谢喽,要个强大的,比较成熟的~
      

  2.   

    如果你不急著用CMS做項目,可以慢慢啃,研究框架的實現方式,裏面的一些細節,這樣可以學到好多東西。
      

  3.   

    id    menutree      count    typeid  1     1             0        0
    2     2             0        0
    3     1-1           0        1
    4     1-2           0        1
    5     2-1           0        2
    6     2-1-1         0        2
      

  4.   

    能给我稍微详细的讲解一下吗?我刚下了一个DedeCMS V5.3.1正式版,不知道下来怎么看~请指教喽~
      

  5.   

    menutree字段具体的函意可以给讲下吗?谢谢~
      

  6.   

    一个数据表,用两个字段,两个字段都是字符串类型,就能解决了。id      pid
    01      0
    02      0
    0101    01
    0102    01
    010101  0101
    010201  0102
    010202  0102id字段:两个数为一组,每层最多能容纳99个节点,若果你需要可以3个为一组,这样每层能容纳999个节点
    pid:parentid,父节点,标明这个节点的上一个节点是谁。由于好久不用了,导出Tree型结构的方法忘记了,大概的思路应该是循环遍历id字段(这就看你的sql学的怎么样了,如果sql写的好,遍历效率就高。而且很高,如果sql写的不好就差,很差),循环遍历id,查找pid,如果是pid = 0,证明是第一个节点,如果非0,证明是子节点(相应的操作,把这个节点添加到他的父节点那里。然后就递归吧。细节忘记了,大体就是这样。
      

  7.   

    [Quote=引用 9 楼 xiangzilhx 的回复:]
    一个数据表,用两个字段,两个字段都是字符串类型,就能解决了。 请问你这个id 字段的值要怎么计算,手工输入??
      

  8.   

    10L,你说的是添加新节点的时候吗?添加的时候你不可能不知道准备添加的位置吧,知道了位置之后剩下的事情不就简单了
    添加的时候肯定知道父节点,这样pid就有了,假设为0101,然后再查找父节点为0101的所有子节点的最大值,比较的时候要先截取最后的两位然后在比较就行了,比方说010101,010102,010103,截取最后两位03最大,然后新节点就是010104.(sql语句里面有截取字符串和比较的功能)
      

  9.   

    那我用的是三个字段
    id  father_id level
    1      0        1
    2      0        1
    3      1        2
    id是目录名的ID号,father_id是它的父目录,0表示一级目录.level是表示目录级别,这样可以吗?