快捷搜索:

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

近来又拜读了飞鸟的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 Announcewhere 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")

您可能还会对下面的文章感兴趣: