| 网站首页 | | 网站简介 | | 公司新闻 | | 公司业务 | | 技术相关 | | 安全相关 | | 网络文章 | | 网站论坛 | | 典型案例 | | 客户留言 |  
 首页 >> 技术相关 >> ASP技术

基于ACCESS数据库的纯asp论坛制作心得

-树形结构


[日期:2005-9-3 22:33:02] [作者: 管理员] [字体大小:
    感觉做一个论坛不像想象中的那么容易,但也不像想象中的那么复杂:),经过4天的浴血奋战,终于从对论坛制作一无所知到今天的论坛数据结构和组织形势初步确定,中间参考了sunamd,bigeagled,廖家远等的思路,并得到了赖皮王子,hooke,bigeagle大虾的热心帮助,谨以此文一并表示感谢。
    bigeagle的文章采用了sql数据库的存储过程来实现,但现实中支持asp的免费站点本来就少,支持数据库的免费站点更少,支持sql数据库的免费站点。。。反正我没见过,哪位知道告诉我一声:),所以我等穷人只有用access了,我就是采用asp+access的形式实现了类似chinaasp的论坛。。闲话少说,言归正传。
    先说一下数据库的结构,主要有两个表,一个存储用户信息user,一个存储论坛文章及信息mytext。用户信息就不用多说了,主要就是mytext论坛文章的组织,要实现相同主题的帖子组织在一块、跟贴紧随父贴、后发帖居上、更重要的是要认清父贴,否则会造成一层回复一律排在一起,二层回复排在一起,三层。。。如下:
根贴
  回复1:根贴
  回复2:根贴
  回复:回复1:根贴
……
所以这里有几个关键的字段:
id(自动):自动编号(作用:显示后来居上)
rootid(整型):根贴的id(作用:实现相同主题的帖子排在一块)
level(整型):贴子的层数(作用:显示的时候实现缩进)
orderid(单精):相同主题帖子排序的基数(作用:相同主题帖子排序的先后依据,即防止出现上例的情况)
fatherid(整型):父贴id,贴子的血缘关系
排序的sql语句:
select * from mytext orderby rootid desc,orderid,id desc

实现显示缩进(修正后的"不用递归实现树形结构.."):
  level=0   
  response.write "<ul>"   
  do while not rs.eof            
    if rs("level")<level then   
      for i=rs("level") to level-1   
        response.write "</ul>"   
      next   
    end if   
    if rs("level")>level then   
      response.write "<ul>"   
    end if   
    response.write "<li>主题:。。</li>"   
  level=rs("level")   
  rs.movenext      
  loop
  response.write "</ul>"        
注意:原"不用递归实现树形结构..."文章有误,这是修改后的代码.

另外有一点经验要注意:就是在单精类型数据传值的时候,如:orderid,request上来的数据要先replace(orderid," ","+"),再csng转换,不然会报告"类型不匹配",我一开始百思不得其解,后来发现在传值的时候必定会把单精数据"+"弄丢,变成空格,所以要先替换再转型.
    [阅读次数:164]
 [新闻出处:]
 上一条新闻: 如何防止ASP木马在服务器上运行
 下一条新闻: 不用Global.asa和session实现在线人数统计
相关新闻:
站 内 搜 索
请输入查询的字符串:

 
点 击 排 行
页 面 广 告
 
关于我们 | 联系方式 | 支付方式 | 站点统计
版权所有 DoILike.Com Ltd.,地址:山东省济南市舜耕路22号综合楼101室
电 话:13065088567 联系人:许老师 设计制作:DoILike.COM