返回列表 上一主題 發帖

[教學] (實戰專題) 線上討論區 下篇

[教學] (實戰專題) 線上討論區 下篇

新討論主題處理程式

之前談到:如果想要發表新的討論項目,就可直接在程式網頁(Index.asp)下方的發言表單中輸入資料來建立新的討論主題,但是,Index.asp網頁程式並不負責處理新討論主題建立與寫入資料庫中的任務,而是將相關的資料於填寫完按下『送出討論主題』按鈕後交由addnew.asp程式來處理:

12-20.png
2010-5-26 20:54


注意:

  • 要在資料表中新增一筆資料,請使用資料錄的AddNew方法新增資料錄。
  • 利用rs("欄位名稱")=欄位值,將欄位資料寫入相對應的欄位,這樣的動作並沒有真正的將資料寫入資料庫中,只是將資料寫入至緩衝區,我們必須再呼叫Update方法,才能將資料真正的寫入資料庫中,切記。
  • 完成新增資料錄並利用Update方法將資料寫入資料庫後,記得將網頁連結轉向回Index.asp程式網頁,否則瀏覽者所見到的將只是一個空白網頁。


Addnew.asp
  1. <%
  2. '建立資料庫連結物件
  3.         Set conobject = Server.CreateObject("ADODB.Connection")
  4.         DBPath = Server.MapPath("bbs.mdb")
  5. '連結資料庫       
  6.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  7. '建立資料庫存取物件       
  8.         Set RS=Server.CreateObject("ADODB.Recordset")
  9. '打開資料表       
  10.         RS.Open "主標題",conobject,1,3
  11. '儲存資料        
  12.    rs.AddNew
  13.    rs("姓名") = Request("姓名")
  14.    rs("Email") = Request("Email")
  15.    rs("主題") = Request("主題")
  16.    rs("內容") = Request("內容")
  17.    rs("篇數") = 0
  18.    rs.Update
  19. Response.Redirect "index.asp"
  20. %>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

單一討論主題程式網頁

當我們在討論項目列表程式網頁index.asp中,點選了某一個已存在的討論項目『主題』超連結,就會連結進入該討論主題的對應討論網頁join.asp,此程式網頁同樣分為兩個部分,一個是目前全部的討論文章列表(下圖A部分),另一是參與目前主題討論的發言表單(下圖B部分):

12-21.png
2010-5-26 20:56


特別注意:
我們連結進入討論網頁join.asp的網址,在其網址尾端含有一個『ID=X』的參數,這個參數值X就是討論主題的編號,也就是資料表中『主編號』欄位的資料值。

在目前主題全部的討論文章列表的部分,我們必須分別讀取資料庫中的『主標題』資料表來讀取『討論主題』的發言(下圖A部分),及資料庫中的『次標題』資料表來讀取『參予討論』的發言資料(下圖B部分):

12-22.png
2010-5-26 20:57


 因為資料讀取的方式與討論項目列表程式網頁相同,所以小誌贅述,不過提醒你不必重新建立資料庫的Connection物件喔!只要在『主標題』資料表中的資料讀取完畢後將資料錄物件Close起來,然後再重新使用Open方法打開『次標題』資料表來讀取資料即可!

參與目前主題討論的發言表單與一般的表單製作相同,當按下『送出討論內容』按鈕後,表單資料將送交joinnew.asp程式處理,但是我們在表單中還另外增加了一個傳送目前討論主題的『主編號』隱藏欄位,為何要有這個隱藏欄位?小誌後續單元說明。

12-23.png
2010-5-26 20:57


join.asp
  1. <%
  2. '建立資料庫連結物件
  3.         Set conobject = Server.CreateObject("ADODB.Connection")
  4.         DBPath = Server.MapPath("bbs.mdb")
  5. '連結資料庫       
  6.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  7. '建立資料庫存取物件       
  8.         Set RS=Server.CreateObject("ADODB.Recordset")
  9. '打開資料表       
  10. SQL = "Select * From 主標題 Where 主編號=" & request("ID")
  11.         RS.Open SQL,conobject,1,3
  12. '儲存資料        
  13. %>
  14. <HTML>
  15. <BODY>
  16. <h2 Align="Center"><img border="0" src="bbs.gif"></h2>
  17. <!-- 以下為「討論主題」部分 -->                 
  18. <TABLE Width="100%"><TR><TD Align=Center bgColor=#000080>                 
  19. <B><font color="#FFFFFF" size="2">
  20. 問 題 討 論&nbsp;</font></B></TD></TR></TABLE>                        
  21. <%                                
  22.    Email = "<A HREF=mailto:" & rs("Email") & ">" & rs("Email") & "</A>"                        
  23. %>                                          
  24. <CENTER><TABLE width="100%">                        
  25. <TR><TD width="10%" bgcolor="#00CCFF"><font color="#000080"><B>
  26. <font size="2">作者:</font></B><font size="2">
  27. <%=rs("姓名")%></font></font></TD>
  28. <TD width="10%" bgcolor="#00CCFF"><B><font size="2" color="#000080">
  29. Email:</font></B><font size="2" color="#000080"><%=Email%></font>        
  30.     </TD><TD width="55%" bgcolor="#00CCFF"><B><font size="2">
  31. <font color="#000080">主題:</font></font></B><font size="2">
  32. <%=rs("主題")%></font> </TD>        
  33. <TD width="20%" bgcolor="#00CCFF"><B><font color="#000080">
  34. <font size="2">日期:</font></font></B>
  35. <font size="2" color="#000080"><%=rs("發言日期")%></font>         
  36. </TD></TR>        
  37. <TR><TD BgColor=Cyan colspan="4"><font size="2"><%=rs("內容")%></font></TD></TR>        
  38. </Table></CENTER>        
  39. <HR>        
  40. <!-- 以下為「參予討論文章」部分 -->        
  41. <%         
  42. RS.close        
  43. SQL = "Select * From 次標題 Where 主編號=" & request("ID")        
  44. SQL = SQL & " Order By 次編號 Desc"        
  45. RS.Open SQL,conobject,1,3        
  46.    While Not rs.EOF        
  47.       Email = "<A HREF=mailto:" & rs("Email") & ">" & rs("Email") & "</A>"        
  48. %>        
  49.       <CENTER><TABLE width="100%">        
  50.        <TR><TD width="10%" bgcolor="#00CC00"><B>
  51. <font size="2" color="#000000">作者:</font></B>
  52. <font size="2" color="#000000"><%=rs("姓名")%></font></TD>        
  53.       <TD width="10%" bgcolor="#00CC00"><font color="#000000">
  54. <B><font size="2">Email:</font></B>
  55. <font size="2"><%=Email%></font></font></TD>        
  56.       <TD width="55%" bgcolor="#00CC00"><B><font size="2">
  57. <font color="#000000">主題:</font></font></B><font size="2">
  58. <%=rs("主題")%></font></TD>        
  59.       <TD width="20%" bgcolor="#00CC00"><B><font size="2">
  60. <font color="#000000">日期:</font></font></B><font size="2">
  61. <%=rs("發表時間")%></font></TD></TR>        
  62.       <TR><TD BgColor=#99FF33 colspan="4"><font size="2">
  63. <%=rs("內容")%></font></TD></TR>        
  64.       </Table></CENTER><hr size="1" color="#008000">        
  65. <%        
  66.       rs.MoveNext        
  67.    Wend        
  68. %>        
  69. <!-- 以下為「參與討論」輸入表單 -->        
  70. <TABLE Width="100%"><TR><TD Align=Center bgColor=#000080>        
  71. <B><font color="#FFFFFF" size="2">
  72. 參 與 本 問 題 討 論</font></B></TD></TR></TABLE>                                          
  73. <FORM action=joinnew.asp method=POST>                          
  74. <Input Type=Hidden Name=ID Value=<%=Request("ID")%>>                          
  75. <CENTER><TABLE Border="1" bordercolor="#FF9933" cellspacing="0" bgcolor="#FFCC66">                          
  76. <TR><TD><font size="2">姓名:</font></TD>                        
  77. <TD><font size="2"><INPUT Type=Text Size="30" name="姓名"></font></TD></TR>                              
  78. <TR><TD><font size="2">Email:</font></TD>                        
  79. <TD><font size="2"><INPUT Type=Text Size="30" name="Email">
  80. </font></TD></TR>           
  81. <TR><TD><font size="2">主題:</font></TD>                        
  82. <TD><font size="2"><INPUT Type=Text Size="60" name="主題">
  83. </font></TD></TR>               
  84. <TR><TD><font size="2">內容:</font></TD>                        
  85. <TD><font size="2"><TEXTAREA name="內容" rows="8" cols="60">
  86. </TEXTAREA></font></TD></TR>                        
  87. </TABLE>                        
  88. <INPUT Type="submit" value=" 送出討論內容 "></CENTER>                        
  89. </Form>                        
  90. <HR>         
  91. <p align="right"><A HREF="index.asp">回討論區</A>                       
  92. </BODY>                       
  93. </HTML>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

參予討論文章處理程式

當瀏覽者在進入某一討論主題並發表參與討論的意見後(join.asp),其所發表的資料就會送交參予討論文章處理程式joinnew.asp處理,此程式第一件要做的事是將討論文章的內容寫入到『次標題』資料表中:

12-24.png
2010-5-26 20:59


請對照上圖部分的程式碼:

  • rs("主編號")=ID:ID就是我們在參與目前主題討論的發言表單所傳送目前討論主題的『主編號』隱藏欄位值,其目的是用來作為主標題與次標題的『主從索引』。

  • 在將討論內容利用Update方法寫入資料庫後,我們利用Close方法暫時將資料錄關閉起來,為何要這樣?別忘了!在主標題資料表中我們還必須更新『篇數』欄位的資料值(參予討論的文章計數),所以還會再利用Open方法來打開主標題資料表。

    12-25.png
    2010-5-26 21:00




我們打開主標題資料表要更新『篇數』欄位的資料值,當然要先找出特定主題的資料錄嘍!因此我們要在開啟資料表的同時,加上『"Where 主編號=" & ID』才行(ID就是發言表單中的隱藏欄位值),如果我們沒有加上這個條件式,則主標題資料表中所有資料錄的『篇數』欄位都會被更新資料喔!

12-26.png
2010-5-26 21:00


Juinnew.asp
  1. <%
  2. ID=Request("ID")

  3. '建立資料庫連結物件
  4.         Set conobject = Server.CreateObject("ADODB.Connection")
  5.         DBPath = Server.MapPath("bbs.mdb")
  6. '連結資料庫       
  7.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  8. '建立資料庫存取物件       
  9.         Set RS=Server.CreateObject("ADODB.Recordset")
  10. '打開資料表       
  11. SQL = "Select * From 次標題"
  12.         RS.Open SQL,conobject,1,3
  13. '儲存資料        
  14.    rs.AddNew
  15.    rs("姓名") = Request("姓名")
  16.    rs("Email") = Request("Email")
  17.    rs("主題") = Request("主題")
  18.    rs("內容") = Request("內容")
  19.    rs("主編號") = ID
  20.    rs.Update
  21.    rs.close

  22. SQL = "Select * From 主標題 Where 主編號=" & ID
  23.           RS.Open SQL,conobject,1,3
  24.           rs("篇數")=rs("篇數")+1
  25.           RS.update
  26. Response.Redirect "join.asp?ID=" & ID
  27. %>
複製代碼
(實戰專題) 線上討論區 完整範例壓縮檔: bbs.zip (27.18 KB)
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 愛不是要求對方,而是要由自身的付出。
返回列表 上一主題