频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

WWWboard4,我的一些看法和...

来源: 作者: 出处:巧巧读书 2006-09-26 进入讨论组
   最近又拜读了飞鸟的WWWBOARD 4大作,又有飞鸟的一些解释,比BOARD3好读多了,确实是个设计的挺优秀的PRG。我根据我的实际需要,写了一个简装版和一个全部版(内核可全是飞鸟的BOARD4),暂时还没UPLOAD,只是去掉了一些 If pwssys...,If winnt_chinese等。
后来觉得飞鸟的程序有的地方可以改一下,现写出来,另加上一些BOARD4的我的心得,供喜欢BOARD4的朋友参考。不知对不对,请飞鸟指正。

飞鸟的BOARD主要在数据库结构,结构的说明飞鸟已经讲了,我不在叙述。
List.ASP语句:
1、先取出根帖(字段Parentid=0),并将得到的记录集反序排列
Select announceid,boardid from announce Where boardid="&boardid&" and parentid=0 ORDER BY announceid DESC
2、利用Getrows从记录集中选出20条根帖,存入到rootid数组中。
3、选出rootid数组中的Announceid,形成如同(1,2,3,4,5,.....20)的格式,
    (飞鸟:有个判断语句:If Ubound(rootid)>1好象不要也可以吧)
4、因为每一组讨论的话题(根帖-父帖-子帖)它们都拥有一个相同的Rootid,Rootid之间的关系:
子帖(rootid)=父帖(rootid)=根帖的(rootid)=根帖的(announcdid),(这个在存储子帖时注意一下)明白这点很重要,所以飞鸟用:
select AnnounceID,parentID,child,boardID,userID,UserName,UserEmail,URL,URLTitle,URLPic,Topic,DateAndTime,hits,length,RootID,layer,orders from Announce  where BoardID="&cstr(boardID)&" and ( rootID in "&selStr& " ) ORDER BY rootID desc,orders "
将这20条根帖及其所有子帖一股脑儿的全带了出来,相同的Rootid靠Orders升序排序,
5、记住layer只是控制层的, eg:我给你写了一个回复帖,那么我就是你的子帖->layer+1,但还要把最新加入的帖子放在最上面显示,这就靠orders了,因为orders采用的是升序排列,那么就提取出父帖的rootid,orders 将同一组(rootid)且orders>父帖的orders的Orders值加+1,就可以实现了,只不过写的时候倒过写:
         conn.execute "update announce set orders=orders+1 where rootid="&cstr(RootID)&" and orders>"&cstr(iOrders)
         Orders=Orders+1
6、关于控制缩进的layer,那就用数值套进去算吧,马上就明白了。
7、飞鸟tree.inc有些变量没用上,删除吧!
8、飞鸟判断一个用户是否新用户,用了循环。我用:
        dim newuser,rs,SQL
        newuser=false
        Set rs=Server.CreateObject("ADODB.Recordset")
        SQL="Select * from user Where Ucase(username)='"&Ucase(username)&"'"
        rs.open SQL,connmdb,1,3
        If rs.eof then
            rs.addnew
                newuser=true
                rs("username")=username
                rs("userpassword")=userpassword
                rs.update
                If err then
                    founderr=true
                    message="对不起,操作数据库失败,请稍侯再试"
                    showmessage(message)
                Else
                    userid=rs("userid")
                End If
        Else
            If rs("userpassword")<>userpassword then
                founderr=true
                message="您的密码不正确(可能该名字被他人占用了,请尝试用别的名字)"
                showmessage(message)
            Else
                userid=rs("userid")
            End IF
        End If
9、对了飞鸟,Announce表中,"Userid"字段好象起不到作用,是不是可以CUT掉,因为表中已经有了"username","useremail"字段。

xixi,罗嗦了一通 ^O^打开: http://www.qqread.com/asp/2006/10/j230200.html进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章