Board logo

標題: [教學] (實戰專題) 教職員專區 線上新增使用者篇 [打印本頁]

作者: 小誌    時間: 2010-5-26 21:32     標題: (實戰專題) 教職員專區 線上新增使用者篇

關於建立一個『教職員專區』,我們之前已經介紹過該如何將網頁鎖碼,然後經由進行『登入(Login)』的動作,確認身分為校內教職員後才將網頁解除鎖碼;同時,我們也解說了如何將Access資料庫檔案編碼與加密!但是,對於教職員身分確認的資料庫檔案我們該如何進行維護呢?

 對於教職員身分確認的資料庫維護方式有兩種:一是由負責學校網站設置的教師來負責,當然這種方式是最保險的,因為由負責學校網站設置的教師來進行資料庫的管理可針對每個教職員的身分進行確認的工作,不過這樣做負責學校網站設置的教師可能會很累!另外一種方式就是由教職員們自己來登錄個人資料,如此一來,負責學校網站設置的教師就不不用辛苦的打開資料庫一筆一筆的輸入資料了。

線上新增的程式機制

如何建立線上新增教職員的機制?我們已經學習過了ACCESS資料庫檔案的編碼與加密,還記得我們上次編碼加密過的教職員身分確認資料庫檔案叫什麼名稱嗎?要開啟加密的資料庫該如何處理呢?該如何驗證表單中的欄位有沒有輸入資料呢?新增的部分請您學習!已經介紹過的部分請您複習呦。


下圖為線上新增教職員的組成與關聯性說明圖:
[attach]993[/attach]
作者: 小誌    時間: 2010-5-26 21:35

線上新增教職員表單網頁

當我們要在網頁中提供一個可以讓連線的教職員填寫資料的資料欄位區域,我們必須設計一個『線上新增教職員表單』,讓連線的教職員可以在上面填寫個人資料,並且要能將這些個人資料資料送給我們處理新增教職員資料的ASP程式『addin.asp』來紀錄以及處理這些教職員資料。

將現在我們就來製作一個可以讓可以讓連線的教職員填寫資料的表單網頁『adduser.htm』:

[attach]994[/attach]

編號

欄位

欄位名稱

表單元件

尊姓大名

Name

單行文字方塊

職稱

Job

單行文字方塊

登入名稱

ID

單行文字方塊

登入密碼

Password

密碼欄位

線上新增

Submit

按鈕




『尊姓大名』網頁敘述標籤
  1. <input type="text" name="Name" size="20">
複製代碼
『職稱』網頁敘述標籤
  1. <input type="text" name="Job" size="20" >
複製代碼
『登入名稱』網頁敘述標籤
  1. <input type="text" name="ID" size="20">
複製代碼
『登入密碼』網頁敘述標籤
  1. <input type="password" name="Password" size="20">
複製代碼
請特別注意:表單內容資料的傳送方式我們設定為『Post』,而且當這些意見資料被送達到 IIS/PWS 後,IIS/PWS 的網路伺服器端負責處理意見資料的ASP程式是『addin.asp』.
  1. <form  method="POST" action="addin.asp">
複製代碼

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

資料欄位驗證

當連線的教職員於『線上新增教職員表單』中填寫好相關資料,按下『線上新增』按鈕之後,填寫好的資料將交由紀錄以及處理新增教職員資料的ASP程式『addin.asp』,來寫入資料庫檔案,填寫好的資料寫入資料庫之前,我們必須先驗證連線的教職員在『線上新增教職員表單』中各個欄位中是否都有填寫資料。

 若『線上新增教職員表單』中的欄位有未填入資料而留白者,將不予接受,不但資料將不會寫入資料庫檔案,而且將產生一段錯誤訊息的網頁,我們以未填寫密碼欄位為例:
在線上新增教職員網頁中,密碼欄位未填入資料,如下圖:

[attach]995[/attach]

按下線上新增按鈕時將出現出現錯誤訊息網頁如下圖:

[attach]996[/attach]

在『線上新增教職員表單』中共有四個欄位必須資料驗證,分別是Name(尊姓大名)、Job(職稱)、ID(登入名稱)與Password(登入密碼)等四個欄位,當我們的紀錄以及處理新增教職員資料ASP程式addin.asp,接收到來自『線上新增教職員表單』的欄位資料後,只要透過『IF』判斷敘述來驗證欄位資料內容是否為『Empty』就可知道資料欄位內容是否留白,若資料欄位內容留白則呼叫『msg』副程式來產生一個錯誤訊息的網頁:

透過四個『IF』判斷敘述來驗證欄位資料內容是否為『Empty』,若資料欄位留白就呼叫『msg』副程式,同時傳給『msg』副程式一個錯誤訊息字串參數。

[attach]997[/attach]

當『IF』判斷敘述驗證欄位資料內容是否為『Empty』,也就是說資料欄位內容是否留白時,則呼叫『msg』副程式來產生一個錯誤訊息的網頁,『msg』副程式非常簡短,不過,呼叫『msg』副程式的同時,必須傳給『msg』副程式一個錯誤訊息字串參數,這個錯誤訊息字串參數將顯示在錯誤訊息的網頁中:

[attach]998[/attach]

最後,我們來看看『msg』副程式是如何來產生一個錯誤訊息的網頁:

[attach]999[/attach]

當『msg』副程式被呼叫時將,輸出一段網頁html敘述(上圖綠色部分的區段),同時將『IF』判斷敘述呼叫『msg』副程式所傳來的錯誤訊息字串參數內容(info),加到網頁html敘述中顯示出來,同時執行『Response.End』敘述終止程式的執行。
作者: 小誌    時間: 2010-5-26 21:40

鎖碼資料庫存取

在完成欄位資料內容驗證後,若『線上新增教職員表單』各個欄位中都有輸入資料,則我們就要開啟資料庫檔案來新增資料,但是,請不要忘記我們的資料庫可是一個個設定密碼上鎖的資料庫檔案喔,所以我們還必須在Connection物件的Open方法中再增加一個『Pwd』的參數:

[attach]1000[/attach]

『Pwd=1234』就是代表在連結開啟資料庫時同時傳送出一組密碼『1234』,就如同用Access開啟上鎖的資料庫檔案時於『需要密碼』的對話視窗中填入密碼是相同的意思。

請注意:密碼『1234』是小誌自己的呦!!可不是標準答案啊!因為本範例中的資料庫檔案『newteach.mdb』鎖碼的密碼設定是『1234』,所以『Pwd』參數的密碼值等於『1234』!
作者: 小誌    時間: 2010-5-26 21:43

處理登錄資料
終於來到我們『addin.asp』程式撰寫的最後階段,我們在驗證『線上新增教職員表單』中的欄位資料,都有填寫及順利的開啟密碼加鎖的資料庫檔案後,則接下來就是要將接收自『線上新增教職員表單』中的欄位資料寫入資料庫檔案中,如下圖所示:

[attach]1001[/attach]

chgStr函數的使用
chgStr函數是用來將欄位資料中含有單引號的資料轉換為雙引號,避免欄位資料中入有單引號資料時,在與Insert Into指令組合時產生錯誤。


addin.asp
  1. <%
  2. '接收來自『線上新增教職員表單』中的欄位資料
  3. name=Request("Name")
  4. job = Request("Job")
  5. id=Request("ID")
  6. password = Request("Password")
  7. '判斷欄位資料是否為空白
  8. '若欄位資料空白則呼叫msg副程式
  9. If name=Empty Then msg "您忘記輸入大名啦!!"
  10. If job=Empty Then msg "您忘記輸入職稱啦!!"
  11. If id=Empty Then msg "您忘記填寫登入名稱啦!!"
  12. If password=Empty Then msg "您忘記填寫登入密碼啦!!"

  13.         Set CN = Server.CreateObject("ADODB.Connection")
  14.         DBPath = Server.MapPath("newteach.mdb")
  15.         CN.Open "Driver={Microsoft Access Driver (*.mdb)};pwd=1234;DBQ="&DBPath
  16.          
  17. Function chgStr( data )
  18.    chgStr = "'" & Replace( data, "'", "''" ) & "'"
  19. End Function

  20. sql = "Insert Into 教職員認證 (ID, Password, Name, Job) Values ("
  21. sql = sql & chgStr(id) & ", "
  22. sql = sql & chgStr(password) & ", "
  23. sql = sql & chgStr(name) & ", "
  24. sql = sql & chgStr(job) & ")"
  25. msg "線上新增教職員成功!!"
  26. %>

  27. <%
  28. Sub msg( info )
  29. %>
  30.    <CENTER>
  31.    <H2><Font Color=red><%=info%><HR size="1" color="#FF0066">
  32.    <FORM><INPUT Type=Button Value="上一頁" OnClick="history.back();">
  33.    </FORM>
  34.    </CENTER>
  35. <%
  36.    Response.End
  37. End Sub
  38. %>
複製代碼
(實戰專題) 教職員專區 線上新增使用者篇 完整範例壓縮檔:[attach]1002[/attach]




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