Board logo

標題: [教學] (實戰專題) 資料庫聯絡簿 下篇 [打印本頁]

作者: 小誌    時間: 2010-5-26 01:13     標題: (實戰專題) 資料庫聯絡簿 下篇

留言處理程式

當學生家長在『意見發表表單』中填寫好相關資料然後按下『送出意見』按鈕,表單中的資料內容就會以『POST』的方式由SEVER端讀取,因為我們在表單傳送的Action參數指定Server端處理此一表單資料內容的程式為『add.asp』,因此我們就必須來撰寫能夠處理這些意見資料的ASP程式『add.asp』。

將在這個處理意見資料的ASP程式,我們可分為下列幾個部分:




add.asp
  1. <%
  2. '接收addmsg.asp傳來的資訊
  3. subject=Request("subject")
  4. parent = Request("parent")
  5. email = Request("email")
  6. dadmam=Request("dadmam")
  7. memo = Request("memo")
  8. personal = Request("personal")
  9. If personal = "大家來討論" or len(personal)  = 0 Then
  10.      personal = "NO"
  11. Else
  12.      personal = "YES"
  13. End If
  14. '與資料庫連線
  15. Set CN = Server.CreateObject("ADODB.Connection")
  16. CN.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("message.mdb")

  17. '將單引號置換為雙引號
  18. Function chgStr( data )
  19.    chgStr = "'" & Replace( data, "'", "''" ) & "'"
  20. End Function
  21. '將資料寫入資料庫
  22. sql = "Insert Into allmessage (家長姓名, 留言主題, 聯絡信箱, 留言內容, 私人公開, 爸媽) Values ("
  23. sql = sql & chgStr(parent) & ", "
  24. sql = sql & chgStr(subject) & ", "
  25. sql = sql & chgStr(email) & ", "
  26. sql = sql & chgStr(memo) & ", "
  27. sql = sql & chgStr(personal) & ", "
  28. sql = sql & chgStr(dadmam) & ")"
  29. CN.Execute sql
  30. '將網頁轉向至顯示留言意見的網頁guest.asp
  31. Response.Redirect "guest.asp"
  32. %>
複製代碼

作者: 小誌    時間: 2010-5-26 01:19

回覆表單程式網頁
還記得『顯示留言意見』網頁中如果老師以密碼登入成為管理模式時,必須讓老師們可以針對某位特定學生家長所發表的意見作出獨立的回應嗎?

[attach]940[/attach]

要讓老師們可以針對某位特定學生家長所發表的意見作出獨立的回應,我們當然也必須設計一個『老師回覆表單』,讓老師能夠在上面回覆發言,並且要能將這些意見資料送給我們處理老師回覆資料的ASP程式『anssave.asp』來紀錄以及處理這些回覆資料。

    在這個『老師回覆表單』網頁中我們必須再另外撰寫一個ASP程式將特定的家長發言資料秀在其中,好讓老師能夠對應家長發言來作出回覆:

[attach]941[/attach]
  1. <%
  2. ID = Request.Querystring("ID")
  3. Set CN = Server.CreateObject("ADODB.Connection")
  4. DBPath = Server.MapPath("message.mdb")
  5. CN.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
  6. Set RS = Server.CreateObject("ADODB.Recordset")
  7. SQL="SELECT*FROM allmessage WHERE (編號="&ID&")"
  8. RS.Open SQL,CN,1,3
  9. %>
複製代碼
上列這個ASP程式內容您應該不陌生吧!之前我們就已經談了很多,現在就針對我們尚未介紹的SQL語言『Select...From...Where』來作說明:

Select...From...Where篩選敘述

    之前我們所談的Select...From敘述它所選取的資料錄式資料表中全部的資料,如果我們只要選取某些特定條件的資料錄時該怎麼辦,例如在學生成績資料表中,我們只要篩選出英文成績不及格的同學,那我們的指令敘述如何撰寫?

    首先我們必須先把我們的選取條件定出來,比方說,我們要挑出英文成績低於60分的同學,則我們的條件式應為『英文成績<60』,接著再於這個條件式之前加上Where保留字,最後再將這段組合敘述放在Select...From後面就行了:

[attach]942[/attach]

知道如何將特定的家長發言資料秀在表單中嗎?其實很簡單,我們不過是將資料庫中的資料取出來,然後秀在表單欄位中而已:

『家長姓名』欄位網頁敘述標籤
  1. <td bgcolor="#CCCCFF"><font size="2">
  2. <%=RS("家長姓名")%></font></td>
複製代碼
『留言主題』欄位網頁敘述標籤
  1. <td bgcolor="#CCCCFF"><font size="2">
  2. <%=RS("留言主題")%></font></td>
複製代碼
『留言內容』欄位網頁敘述標籤
  1. <td bgcolor="#CCCCFF"><font size="2">
  2. <%= RS("留言內容") %></font></td>
複製代碼
其實我們『老師回覆表單』的重點是在老師回覆欄位上,老師在回覆欄位中所填入的資料,必須送給我們處理老師回覆資料的ASP程式『anssave.asp』來紀錄以及處理這些回覆資料。當老師填寫好回覆發言的資料後按下『送出回覆』按鈕後,表單中的資料內容就會以『POST』的方式由SEVER端讀取,然後將資料內容交由處理老師回覆資料的ASP程式『anssave.asp』來將資料內容寫入資料庫。
  1. <form method="POST" action="anssave.asp">
複製代碼
 

特別注意:當我們將資料從資料庫讀出後,必須於結束後將打開的資料表關閉起來,同時中斷與資料庫的連結,所以我們必須在網頁中再加入下列這段ASP程式敘述:
  1. <%
  2. RS.CLOSE
  3. CN.CLOSE
  4. %>
複製代碼
teachans.asp
  1. <%
  2. ID = Request.Querystring("ID")
  3. Set CN = Server.CreateObject("ADODB.Connection")
  4. DBPath = Server.MapPath("message.mdb")
  5. CN.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
  6. Set RS = Server.CreateObject("ADODB.Recordset")
  7. SQL="SELECT*FROM allmessage WHERE (編號="&ID&")"
  8. RS.Open SQL,CN,1,3        
  9. %>

  10. <html>
  11. <head><title>家庭聯絡簿</title>
  12. <meta http-equiv="Content-Type" content="text/html; charset=big5">
  13. </head>
  14. <body>


  15. <form method="POST" action="anssave.asp">

  16.   <input type="hidden" name="ID" value="<% =ID %>">
  17.   <div align="center"><center><p><strong><font size="5">
  18. 老師意見回覆</font></strong></p>
  19.   </center></div><div align="center"><center>
  20. <table border="0">

  21.       <center></center>
  22.       <TR>
  23.       <td bgcolor="#CCCCFF"><font color="blue" size="2">
  24. 家長姓名</font></td>
  25.       <td bgcolor="#CCCCFF"><font size="2">
  26. <%=RS("家長姓名")%></font></td>
  27.     </tr>
  28.     <tr>
  29.       <td bgcolor="#CCCCFF"><font color="blue" size="2" >
  30. 留言主題</font></td>
  31.       <td bgcolor="#CCCCFF"><font size="2">
  32. <%=RS("留言主題")%></font></td>
  33.     </tr>
  34.    
  35.     <tr>
  36.       <td bgcolor="#CCCCFF"><font color="blue" size="2" >
  37. 留言內容</font></td>
  38.       <td bgcolor="#CCCCFF"><font size="2">
  39. <%= RS("留言內容") %></font></td>
  40.     </tr>
  41.     <tr>
  42.       <td bgcolor="#CCCCFF"><font color="blue" size="2" >
  43. 老師答覆</font></td>
  44.       <td bgcolor="#CCCCFF"><font size="2"><textarea rows="5" name="teachans" cols="39"><%= RS("老師回覆") %></textarea></font></td>
  45.     </tr>
  46.   </table>
  47.   </center></div><div align="center"><center><input type="submit"
  48.   value="送出回覆">
  49.   </center></div>
  50.   <div align="center"><center>&nbsp;
  51. [<a href="guest.asp"><font color="#FF0000">
  52. <font onmouseover="this.style.color='#0000BB'"
  53. onmouseout="this.style.color='red'">返回聯絡簿</font></font></a>]
  54.   </center></div>
  55. </form>
  56. <%
  57.   RS.CLOSE
  58.   CN.CLOSE
  59. %>
  60. </body>
  61. </html>
複製代碼

作者: 小誌    時間: 2010-5-26 01:21

回覆留言處理程式

當老師在『老師回覆表單』中填寫好回覆資料然後按下『送出回覆』按鈕,表單中的資料內容就會以『POST』的方式由SEVER端讀取,因為我們在表單傳送的Action參數指定Server端處理此一表單資料內容的程式為『anssave.asp』,因此我們就必須來撰寫能夠處理這些意見資料的ASP程式『anssave.asp』。

要以下就是ASP程式『anssave.asp』完整的程式內容:
anssave.asp
  1. <%
  2. ID = Request.Form("ID")
  3. teachans=Request.Form("teachans")
  4. Set CN = Server.CreateObject("ADODB.Connection")
  5. DBPath = Server.MapPath("message.mdb")
  6. CN.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
  7. Set RS = Server.CreateObject("ADODB.Recordset")
  8. SQL = "SELECT * FROM allmessage WHERE (編號 = " & ID & ")"
  9. RS.Open SQL,CN,1,3
  10. teachans = Replace(teachans,vbCrLf,"<br>")
  11. RS("老師回覆") =teachans
  12. RS.Update
  13. RS.Close
  14. CN.CLose
  15. Response.Redirect "guest.asp"
  16. %>
複製代碼
資料庫結構

這個處理老師回覆資料的ASP程式中所使用到的ASP物件與方法,我們都已經介紹過了,因此,我們的『家庭聯絡簿』到此算是一個段落了。至於資料庫檔案『message.mdb』中的資料表『allmessage』的欄位設定,請參考下圖:
[attach]943[/attach]


(實戰專題) 資料庫聯絡簿 完整範例壓縮檔:[attach]944[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)