麻辣家族討論版版's Archiver

小誌 發表於 2010-5-26 20:54

(實戰專題) 線上討論區 下篇

[color=DarkOrange][size=5][b]新討論主題處理程式[/b][/size][/color]

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

[attach]977[/attach]

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

Addnew.asp[code]<%
'建立資料庫連結物件
        Set conobject = Server.CreateObject("ADODB.Connection")
        DBPath = Server.MapPath("bbs.mdb")
'連結資料庫       
        conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件       
        Set RS=Server.CreateObject("ADODB.Recordset")
'打開資料表       
        RS.Open "主標題",conobject,1,3
'儲存資料        
   rs.AddNew
   rs("姓名") = Request("姓名")
   rs("Email") = Request("Email")
   rs("主題") = Request("主題")
   rs("內容") = Request("內容")
   rs("篇數") = 0
   rs.Update
Response.Redirect "index.asp"
%> [/code]

小誌 發表於 2010-5-26 20:57

[color=DarkOrange][size=5][b]單一討論主題程式網頁[/b][/size][/color]

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

[attach]978[/attach]

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

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

[attach]979[/attach]

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

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

[attach]980[/attach]

join.asp[code]<%
'建立資料庫連結物件
        Set conobject = Server.CreateObject("ADODB.Connection")
        DBPath = Server.MapPath("bbs.mdb")
'連結資料庫       
        conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件       
        Set RS=Server.CreateObject("ADODB.Recordset")
'打開資料表       
SQL = "Select * From 主標題 Where 主編號=" & request("ID")
        RS.Open SQL,conobject,1,3
'儲存資料        
%>
<HTML>
<BODY>
<h2 Align="Center"><img border="0" src="bbs.gif"></h2>
<!-- 以下為「討論主題」部分 -->                 
<TABLE Width="100%"><TR><TD Align=Center bgColor=#000080>                 
<B><font color="#FFFFFF" size="2">
問 題 討 論&nbsp;</font></B></TD></TR></TABLE>                        
<%                                
   Email = "<A HREF=mailto:" & rs("Email") & ">" & rs("Email") & "</A>"                        
%>                                          
<CENTER><TABLE width="100%">                        
<TR><TD width="10%" bgcolor="#00CCFF"><font color="#000080"><B>
<font size="2">作者:</font></B><font size="2">
<%=rs("姓名")%></font></font></TD>
<TD width="10%" bgcolor="#00CCFF"><B><font size="2" color="#000080">
Email:</font></B><font size="2" color="#000080"><%=Email%></font>        
    </TD><TD width="55%" bgcolor="#00CCFF"><B><font size="2">
<font color="#000080">主題:</font></font></B><font size="2">
<%=rs("主題")%></font> </TD>        
<TD width="20%" bgcolor="#00CCFF"><B><font color="#000080">
<font size="2">日期:</font></font></B>
<font size="2" color="#000080"><%=rs("發言日期")%></font>         
</TD></TR>        
<TR><TD BgColor=Cyan colspan="4"><font size="2"><%=rs("內容")%></font></TD></TR>        
</Table></CENTER>        
<HR>        
<!-- 以下為「參予討論文章」部分 -->        
<%         
RS.close        
SQL = "Select * From 次標題 Where 主編號=" & request("ID")        
SQL = SQL & " Order By 次編號 Desc"        
RS.Open SQL,conobject,1,3        
   While Not rs.EOF        
      Email = "<A HREF=mailto:" & rs("Email") & ">" & rs("Email") & "</A>"        
%>        
      <CENTER><TABLE width="100%">        
       <TR><TD width="10%" bgcolor="#00CC00"><B>
<font size="2" color="#000000">作者:</font></B>
<font size="2" color="#000000"><%=rs("姓名")%></font></TD>        
      <TD width="10%" bgcolor="#00CC00"><font color="#000000">
<B><font size="2">Email:</font></B>
<font size="2"><%=Email%></font></font></TD>        
      <TD width="55%" bgcolor="#00CC00"><B><font size="2">
<font color="#000000">主題:</font></font></B><font size="2">
<%=rs("主題")%></font></TD>        
      <TD width="20%" bgcolor="#00CC00"><B><font size="2">
<font color="#000000">日期:</font></font></B><font size="2">
<%=rs("發表時間")%></font></TD></TR>        
      <TR><TD BgColor=#99FF33 colspan="4"><font size="2">
<%=rs("內容")%></font></TD></TR>        
      </Table></CENTER><hr size="1" color="#008000">        
<%        
      rs.MoveNext        
   Wend        
%>        
<!-- 以下為「參與討論」輸入表單 -->        
<TABLE Width="100%"><TR><TD Align=Center bgColor=#000080>        
<B><font color="#FFFFFF" size="2">
參 與 本 問 題 討 論</font></B></TD></TR></TABLE>                                          
<FORM action=joinnew.asp method=POST>                          
<Input Type=Hidden Name=ID Value=<%=Request("ID")%>>                          
<CENTER><TABLE Border="1" bordercolor="#FF9933" cellspacing="0" bgcolor="#FFCC66">                          
<TR><TD><font size="2">姓名:</font></TD>                        
<TD><font size="2"><INPUT Type=Text Size="30" name="姓名"></font></TD></TR>                              
<TR><TD><font size="2">Email:</font></TD>                        
<TD><font size="2"><INPUT Type=Text Size="30" name="Email">
</font></TD></TR>           
<TR><TD><font size="2">主題:</font></TD>                        
<TD><font size="2"><INPUT Type=Text Size="60" name="主題">
</font></TD></TR>               
<TR><TD><font size="2">內容:</font></TD>                        
<TD><font size="2"><TEXTAREA name="內容" rows="8" cols="60">
</TEXTAREA></font></TD></TR>                        
</TABLE>                        
<INPUT Type="submit" value=" 送出討論內容 "></CENTER>                        
</Form>                        
<HR>         
<p align="right"><A HREF="index.asp">回討論區</A>                       
</BODY>                       
</HTML>[/code]

小誌 發表於 2010-5-26 21:01

[size=5][color=DarkOrange][b]參予討論文章處理程式[/b][/color][/size]

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

[attach]981[/attach]

請對照上圖部分的程式碼:
[list=1]
[*]rs("主編號")=ID:ID就是我們在參與目前主題討論的發言表單所傳送目前討論主題的『主編號』隱藏欄位值,其目的是用來作為主標題與次標題的『主從索引』。

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

[attach]982[/attach]
[/list]


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

[attach]983[/attach]

Juinnew.asp[code]<%
ID=Request("ID")

'建立資料庫連結物件
        Set conobject = Server.CreateObject("ADODB.Connection")
        DBPath = Server.MapPath("bbs.mdb")
'連結資料庫       
        conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件       
        Set RS=Server.CreateObject("ADODB.Recordset")
'打開資料表       
SQL = "Select * From 次標題"
        RS.Open SQL,conobject,1,3
'儲存資料        
   rs.AddNew
   rs("姓名") = Request("姓名")
   rs("Email") = Request("Email")
   rs("主題") = Request("主題")
   rs("內容") = Request("內容")
   rs("主編號") = ID
   rs.Update
   rs.close

SQL = "Select * From 主標題 Where 主編號=" & ID
          RS.Open SQL,conobject,1,3
          rs("篇數")=rs("篇數")+1
          RS.update
Response.Redirect "join.asp?ID=" & ID
%>[/code][color=RoyalBlue][size=5][b](實戰專題) 線上討論區 完整範例壓縮檔:[/b][/size][/color][attach]984[/attach]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供