仔细看了一下它生成的html源码.
在这个成串的回复的处理是这样的,每回复一次,就在div内部追加一个div,依此类推.主要技术难点在于dom节点操作div以及ajax提交.分析HTML<p>我再发!</p>
<p class="thdrpy">[<a href="javascript:void(0)" onclick="movecfm(event,1308,1,'tietie');">回复</a>]</p>
<div class="comment-childs chalt" id="comment-1310">
 <img alt='' src='' class='avatar avatar-32' height='32' width='32' /><p><cite>tietie</cite> Reply:<br /><small class="commentmetadata">10月 23rd, 2008 at 3:34 pm</small></p>
<p>@tietie, 呵呵,不骗你!</p><p class="thdrpy">[<a href="javascript:void(0)" onclick="movecfm(event,1310,1,'tietie');">回复</a>]</p>
<div class="comment-childs chalt" id="comment-1311">
 <img alt='' src='' class='avatar avatar-32' height='32' width='32' /><p><cite>tietie</cite> Reply:<br /><small class="commentmetadata">10月 23rd, 2008 at 4:53 pm</small></p><p>@tietie, 再发一个!</p>
<p class="thdrpy">[<a href="javascript:void(0)" onclick="movecfm(event,1311,1,'tietie');">回复</a>]</p>
</div>
</div>
一个规则的回复串是这样的<div class="comment-childs chalt" id="comment-回复id">
<p><cite>标题</cite> Reply:<br /><small class="commentmetadata">时间</small></p>
<p>@tietie,</p>
<p class="thdrpy">[<a href="javascript:void(0)" onclick="movecfm(event,回复id,1,'tietie');">回复</a>]</p>
</div>每一次添加回复,首先构造形如上面的div节点,然后就会在id为"comment-回复id"的结点里添加一个子节点,并得用 appendChild函数来完成节点添加的过程.

解决方案 »

  1.   

    我先说下我的思路
    首先数据库结构如下:
    id
    content
    parent_id(为0,表示这是顶级的)
    然后将数据(第一级只读取parent_id为0的记录)读入一个数组中,数组结构类似下面[这个里面用嵌套函数不断的从数据库取记录,当然还会有更好的算法,结束的条件是,根据当前的id值没有找到与parent_id对应的记录.有的话就存入数组库,再取此记录的id,作为条件,这样不断嵌套]
    array{
       id
       content
       child_array{
          id
          content
          child_array{
           ...........
          }
       }
    }
    array{
       id
       content
       child_array{
          id,content
       }
    }现在这个数组中按评论层次结构存了数据的评论数据
    下面同样做一个嵌套函数来将数组的内容显示出来
    ps:不要跟我说你不懂嵌套函数
    最后要注意的一点是:数组中的结构顺序从里到外从跟评论数据相反的,这时候嵌套函数有一点点技巧,你要根据上一次函数的返回值来显示此函数中的内容.这样就能保证数据的样式是你想要的样式
    你先照着上面写代码看,有行不通的说下, 有时间我也写写看
      

  2.   

    这个是典型的树结构吧和树论坛差不多
    只是在显示时看在父子关系上,如果是子,则在div内部append一个child节点,同时显示内容显示时可以递归显示!数据结构和论坛结构一样 id, parent,title,content ,或加一下是否有子节点等等添加时用ajax操作,比较复杂了,可以说是评论,也可以说是论坛系统了
      

  3.   

    感谢大家的回复,
    2楼
    我觉得你说的挺好,你一针见血的说出了这个问题的难点,确实难在dom节点操作div, 用XML来完成这项任务不失为一个好的方法.有时间我得试试!
    3楼
    其实这个问题的难点不是你上面说的那个,把它组成一个什么样的数组,把它组起来应该算是小Kiss,由此可以看出你没有深入的想一下这个问题,我最开始也认为是这样的,但是后来深入的想了一下,难点在于对Dom节点的操作,也就是怎样把DIV给串起来,你可以往下面想一下,怎样来利用这一个数组?如果有想出来,还请不惜赐教。
    5楼
    这个确实是树结构的讨论,说实话,我最开始是仿照 加拿大枫下论坛(http://www.rolia.net/) 来写的, 但是后来要改成成串显示,因为那样,要以AJAX来实现把新加的评论放在其下面,实在是有点难。于是就改成了现在的我所描述的那个样子,那样往下面的节点添加数据要简单得多。
    同时希望更多高手参与进来,目前我已经把这部分给完成了,只是希望高手们给出更好的意见!要考虑来搜索数据库的速度,和内存分配,选出最优算法!
      

  4.   

    1 dom节点操作div,这个我以前完成过,只是没有你哪么多嵌套而矣.我只增加了管理员回复这一层.其实我挺反感用太多div的.
     给你个http://www.xulplanet.com/references/objref/HTMLTableRowElement.html网站,这上面有各种div的详细情况.
    2 树型数据库的搜索,的确是比较头疼,尤其是在深度未知的情况,选择算法的确很重要.可以考虑对于已经存在的评论或者回复,生成静态文本,保存在数据库中,不用每次都去查询数据库构造.
     或者利用模板的cache功能.每次都查询数据库,负载是很大的.
      

  5.   

    这个是wordpress后台吧?这个回复系统我没有用过,不过应该是一个插件或者widget。LZ先去搜索一下,然后看看能不能学习源码……
      

  6.   

    JQuery搞定,操作DOM很方便的或者使用xajax,这个和php结合的很好。
      

  7.   

    源码我看过了,只是用处不大,这种方法也只能用于blog, 谢谢大家的回复,我采用的方法是首节点和尾节点用<!--command_{id}-->这样子替换,可以做出来,具体方法,这两天会写在我的blog, www.smartmm.cn里面,如果有需要的朋友可以过来看看。
      

  8.   

    如果是数据结构的话,如下:1.一个主题拥有n个回复
    2.一个回复归属于1个主题
    3.回复满足条件2的同时,拥有0或1个亲回复下面是一个简单的例子,不要拿它当代码跑
    例如,主题表thead和回复表post可以如下定义create table thread(
     id int  primary key,
     name varchar not null,
    )create table post(
     id int  primary key,
     name varchar not null,
     parentThread int not null,
     parentPost int,
    )提取数据的时候,将主题下的所有回复放到一个字串,
    显示子恢复的时候,通过相应的parentPost值就可以知道亲子关系了。最简单的方法是用php的foreach循环数组,
    如果lz有能力,最好将post和thread以目标的形势提取,
    直接把子恢复放到各个亲回复的目标当中。