|
导读最近又拜读了飞鸟的WWWBOARD 4大作,又有飞鸟的一些解释,比BOARD3好读多了,确实是个设计的挺优秀的PRG。我根据我的实际需要,写了一个简装版和一个全部版(内核可全是飞鸟的BOARD4),... 最近又拜读了飞鸟的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")<>userpassword then founderr=true message="您的密码不正确(可能该名字被他人占用了,请尝试用别的名字)" showmessage(message) Else userid=rs("userid") End IF End If 9、对了飞鸟,Announce表中,"Userid"字段好象起不到作用,是不是可以CUT掉,因为表中已经有了"username","useremail"字段。 xixi,罗嗦了一通 ^O^ |
温馨提示:喜欢本站的话,请收藏一下本站!