仔细看了一下它生成的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函数来完成节点添加的过程.
在这个成串的回复的处理是这样的,每回复一次,就在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函数来完成节点添加的过程.
解决方案 »
- 怎么做个登录后显示消息提示窗。
- phpmyadmin乱码问题求教?
- 如何用正则或其他方法取得 <?xml version="1.0" encoding="utf-8"?> 中的 utf-8
- [高分求助]Curl如何不get整个文件就获得文件的真实大小
- 为什么在本地能实现功能的网页上传到空间后不能实现呢?
- 头一次写递归函数,烦请各位看看错哪里了
- 新手系列之六:请大家帮我看下这个if语句哪里出了问题???
- ◆◇用apache配置过php的虚拟web的请进▲△ 兄弟快要抓狂了 :(
- 初接触php,有个非常小的 print 问题请教!关于正确书写!
- 一个网站有多个后台,如何让它们不相干?
- 急 IFRAME应用需求 不知道能不能实现
- fread() 一次只能读8 KB??
首先数据库结构如下:
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:不要跟我说你不懂嵌套函数
最后要注意的一点是:数组中的结构顺序从里到外从跟评论数据相反的,这时候嵌套函数有一点点技巧,你要根据上一次函数的返回值来显示此函数中的内容.这样就能保证数据的样式是你想要的样式
你先照着上面写代码看,有行不通的说下, 有时间我也写写看
只是在显示时看在父子关系上,如果是子,则在div内部append一个child节点,同时显示内容显示时可以递归显示!数据结构和论坛结构一样 id, parent,title,content ,或加一下是否有子节点等等添加时用ajax操作,比较复杂了,可以说是评论,也可以说是论坛系统了
2楼
我觉得你说的挺好,你一针见血的说出了这个问题的难点,确实难在dom节点操作div, 用XML来完成这项任务不失为一个好的方法.有时间我得试试!
3楼
其实这个问题的难点不是你上面说的那个,把它组成一个什么样的数组,把它组起来应该算是小Kiss,由此可以看出你没有深入的想一下这个问题,我最开始也认为是这样的,但是后来深入的想了一下,难点在于对Dom节点的操作,也就是怎样把DIV给串起来,你可以往下面想一下,怎样来利用这一个数组?如果有想出来,还请不惜赐教。
5楼
这个确实是树结构的讨论,说实话,我最开始是仿照 加拿大枫下论坛(http://www.rolia.net/) 来写的, 但是后来要改成成串显示,因为那样,要以AJAX来实现把新加的评论放在其下面,实在是有点难。于是就改成了现在的我所描述的那个样子,那样往下面的节点添加数据要简单得多。
同时希望更多高手参与进来,目前我已经把这部分给完成了,只是希望高手们给出更好的意见!要考虑来搜索数据库的速度,和内存分配,选出最优算法!
给你个http://www.xulplanet.com/references/objref/HTMLTableRowElement.html网站,这上面有各种div的详细情况.
2 树型数据库的搜索,的确是比较头疼,尤其是在深度未知的情况,选择算法的确很重要.可以考虑对于已经存在的评论或者回复,生成静态文本,保存在数据库中,不用每次都去查询数据库构造.
或者利用模板的cache功能.每次都查询数据库,负载是很大的.
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以目标的形势提取,
直接把子恢复放到各个亲回复的目标当中。