明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

基于ACCESS數(shù)據(jù)庫的純asp論壇制作心得

[摘要]感覺做一個論壇不像想象中的那么容易,但也不像想象中的那么復雜:),經(jīng)過4天的浴血奮戰(zhàn),終于從對論壇制作一無所知到今天的論壇數(shù)據(jù)結構和組織形勢初步確定,中間參考了sunamd,bigeagled,廖家...
感覺做一個論壇不像想象中的那么容易,但也不像想象中的那么復雜:),經(jīng)過4天的浴血奮戰(zhàn),終于從對論壇制作一無所知到今天的論壇數(shù)據(jù)結構和組織形勢初步確定,中間參考了sunamd,bigeagled,廖家遠等的思路,并得到了賴皮王子,hooke,bigeagle大蝦的熱心幫助,謹以此文一并表示感謝。
    bigeagle的文章采用了sql數(shù)據(jù)庫的存儲過程來實現(xiàn),但現(xiàn)實中支持asp的免費站點本來就少,支持數(shù)據(jù)庫的免費站點更少,支持sql數(shù)據(jù)庫的免費站點。。。反正我沒見過,哪位知道告訴我一聲:),所以我等窮人只有用access了,我就是采用asp+access的形式實現(xiàn)了類似chinaasp的論壇。。閑話少說,言歸正傳。
    先說一下數(shù)據(jù)庫的結構,主要有兩個表,一個存儲用戶信息user,一個存儲論壇文章及信息mytext。用戶信息就不用多說了,主要就是mytext論壇文章的組織,要實現(xiàn)相同主題的帖子組織在一塊、跟貼緊隨父貼、后發(fā)帖居上、更重要的是要認清父貼,否則會造成一層回復一律排在一起,二層回復排在一起,三層。。。如下:
根貼
  回復1:根貼
  回復2:根貼
    回復:回復1:根貼
  。。。。
所以這里有幾個關鍵的字段:
id(自動):自動編號(作用:顯示后來居上)
rootid(整型):根貼的id(作用:實現(xiàn)相同主題的帖子排在一塊)
level(整型):貼子的層數(shù)(作用:顯示的時候實現(xiàn)縮進)
orderid(單精):相同主題帖子排序的基數(shù)(作用:相同主題帖子排序的先后依據(jù),即防止出現(xiàn)上例的情況)
fatherid(整型):父貼id,貼子的血緣關系
排序的sql語句:
select * from mytext orderby rootid desc,orderid,id desc

實現(xiàn)顯示縮進(修正后的"不用遞歸實現(xiàn)樹形結構.."):
  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>"      
%>     
注意:原"不用遞歸實現(xiàn)樹形結構..."文章有誤,這是修改后的代碼.

另外有一點經(jīng)驗要注意:就是在單精類型數(shù)據(jù)傳值的時候,如:orderid,request上來的數(shù)據(jù)要先replace(orderid," ","+"),再csng轉換,不然會報告"類型不匹配",我一開始百思不得其解,后來發(fā)現(xiàn)在傳值的時候必定會把單精數(shù)據(jù)"+"弄丟,變成空格,所以要先替換再轉型.

以上只是我個人的看法,如果有錯誤之處或有更好的方法歡迎交流gwlx@21cn.com,大家可以到211.90.159.61(開放時間:8:15~17:30)或http://www.21union.net/sqlbbs看實例并多多灌水呦:)..