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

來源:互聯網
上載者:User
   最近又拜讀了飛鳥的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^



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。