麻辣家族討論版版's Archiver

小誌 發表於 2010-5-25 19:29

(實戰專題) 文字檔聯絡簿 上篇

在開始之前小誌要做個小小的說明:本篇與下一篇的內容分別為文字檔與資料庫的使用示範,而使用的範例是以校園應用為主題,因此在名稱的定義上都稱為「聯絡簿」,其實這裡的「聯絡簿」就是各位常常於網路上所見的「留言版」,只是稱呼上有所不同,實質上的內容與意義是相同的!希望大家不要因為稱呼的不同而誤會了呦!

拜科技網路進步之賜,現在的網路e教師除了透過傳統的方式(電話或家庭聯絡簿)與家長聯繫之外,又多了一項利器:『網路家長聯絡簿』,學生家長有任何需要協助或意見發表的時候,都將可以即時於網路上留下寶貴的意見給教師們。 當然,網路e教師們也可以即時在網路聯絡簿上向學生家長反映學生們在學校中的生活點滴。

本範例就是要為各位網路e教師示範一個可以讓學生家長於網上發表意見與反映的『網路家長聯絡簿』(留言版)!

[color=DarkOrange][size=5][b]聯絡簿組成構造[/b][/size][/color]
要設計一個與家長溝通的線上聯絡簿必須要了解ASP物件與Html表單的設計,別緊張!我們一步一步來解說與實作。

[list]
[*]設計一個可以讓學生家長留言的『意見發表表單』的網頁,在本例中我們將這個網頁檔案名稱定為:『issue.asp』。
[*]再設計一個能夠讓學生家長觀看意見發表後的結果網頁,這個能夠『觀看意見留言結果』的網頁我們將它的檔案名稱定為:『message.asp』。
[*]我們設計好了『意見發表表單』的網頁與『觀看意見留言結果』的網頁後,這兩張網頁都是獨立而毫無關係的,我們必須再設計一個用來紀錄以及處理留言的ASP程式,這個紀錄以及處理留言的ASP程式網頁檔案我們將它定名為:『handel.asp』,此ASP程式不僅僅是要負責『意見發表表單』網頁與『觀看意見留言結果』網頁的關係連結,同時還必須控制將留言資料從『留言紀錄資料檔案』中取出留言資料或是寫入留言資料。
[*]最後,還有一個必要的檔案必須被建立,那就是『留言紀錄資料檔案』,這個檔案負責存放留言的資料記錄,在本範例中這個留言紀錄資料檔案為一文字檔,我們將它定名為:『information.txt』。
[/list]

簡言之,我們聯絡簿的構成共有下列四大部分:

[list]
[*]意見發表網頁:用來接受家長意見反映的資料。
[*]意見留言結果網頁:也就是聯絡簿的主體,在這個網頁中可以看到全部的學生家長反映意見。
[*]紀錄資料處理ASP程式:處理家長意見反映的資料,同時將這些意見資料紀錄起來。
[*]留言紀錄資料檔案:用來儲存意見反映留言的資料記錄。
[/list]

下圖為家長聯絡簿的組成與關聯性說明圖:

[attach]902[/attach]

小誌 發表於 2010-5-25 19:32

[color=darkorange][size=5][b]意見發表網頁[/b][/size][/color]
當我們要在網頁中提供一個可以讓學生家長發表意見或反映的聯絡簿時,我們首先必須設計一個『意見發表表單』,讓學生家長可以在上面發表意見,並且要能將這些意見資料送給網路伺服器的 IIS/PWS ,而且當這些意見資料被送達到 IIS/PWS 後,IIS/PWS 的網路伺服器端也必須存在有一個相對應的ASP程式來紀錄以及處理這些意見資料。

現在我們就來製作一個可以讓學生家長可以在上面發表意見的表單網頁『issue.asp』:

[attach]903[/attach]

[table]
[tr][td=1,1,40][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]編號[/size][/font][/font][/p][/td][td=1,1,139][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]欄位[/size][/font][/font][/p][/td][td=1,1,81][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]欄位名稱[/size][/font][/font][/p][/td][td=1,1,200][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]表單元件[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,40][p=30, 2, center][b][font=全真中細圓體][font=Courier New][size=2]A[/size][/font][/font][/b][/p][/td][td=1,1,139][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]家長姓名[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,81][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]name[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,200][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]單行文字方塊[color=green][/color][/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,40][p=30, 2, center][b][font=全真中細圓體][font=Courier New][size=2]B[/size][/font][/font][/b][/p][/td][td=1,1,139][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]聯絡Email[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,81][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]email[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,200][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]單行文字方塊[color=green][/color][/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,40][p=30, 2, center][b][font=全真中細圓體][font=Courier New][size=2]C[/size][/font][/font][/b][/p][/td][td=1,1,139][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]意見主題[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,81][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]subject[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,200][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]單行文字方塊[color=green][/color][/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,40][p=30, 2, center][b][font=全真中細圓體][font=Courier New][size=2]D[/size][/font][/font][/b][/p][/td][td=1,1,139][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]意見反映內容[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,81][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]textmemo[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,200][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]多行式文字方塊[color=green][/color][/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,40][p=30, 2, center][b][font=全真中細圓體][font=Courier New][size=2]F[/size][/font][/font][/b][/p][/td][td=1,1,139][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]送出意見[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,81][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]SENT[color=green][/color][/size][/font][/color][/font][/p][/td][td=1,1,200][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]按鈕[color=green][/color][/size][/font][/color][/font][/p][/td][/tr]
[tr][td=1,1,40][p=30, 2, center][b][font=全真中細圓體][font=Courier New][size=2]G[/size][/font][/font][/b][/p][/td][td=1,1,139][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]清除重寫[/size][/font][/color][/font][/p][/td][td=1,1,81][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]/[/size][/font][/color][/font][/p][/td][td=1,1,200][p=30, 2, left][font=全真中細圓體][color=#000000][font=Courier New][size=2]按鈕[/size][/font][/color][/font][/p][/td][/tr]
[/table]

上圖代號H的超連結文字為連結至message.asp,也就是連結至『觀看意見留言結果』的網頁。

以下為完整的『issue.asp』表單網頁內容:
issue.asp[code]<HTML>
<HEAD>
   <TITLE>網路家長聯絡簿</TITLE>
</HEAD>
<BODY>
<p align="center"><B><FONT SIZE=+2>網路家長聯絡簿</FONT></B></p>
<FORM Action="handel.asp" Method="POST">
<div align="center">
<center>
<TABLE BORDER=1 WIDTH="353" cellspacing="0" cellpadding="0" bordercolor="#0000FF" >
<TR><TD width="109"><FONT COLOR="#000080" size="2">家長姓名:</FONT></TD>
<TD width="238"><INPUT TYPE=TEXT NAME=name SIZE=20></TD></TR>
<TR><TD width="109"><FONT COLOR="#000080" size="2">聯絡Email:</FONT></TD>
<TD width="238"><INPUT NAME=email SIZE=30></TD></TR>
<TR><TD width="109"><FONT COLOR="#000080" size="2">意見主題:</FONT></TD>
<TD width="238"><INPUT NAME=subject SIZE=30></TD></TR>
<TR><TD VALIGN=TOP width="109"><FONT COLOR="#000080" size="2">意見反映內容:</FONT> </TD>
<TD width="238"><TEXTAREA NAME=textmemo ROWS=5 COLS=30></TEXTAREA></TD>
</TR>
</TABLE>
  </center>
</div>
<CENTER><TABLE>
<TR ALIGN=CENTER><TD width="197"><INPUT TYPE=Submit NAME=SEND VALUE="送出意見"><INPUT TYPE=RESET VALUE="清除重寫"></TD>
</TR></TABLE></CENTER>
</FORM>
<p align="center"><A HREF="message.asp">觀看其他家長反映意見</A></p>
</BODY>
</HTML>[/code][color=Red]請特別注意:[/color]網頁敘述『[color=Red]Action=”handel.asp”[/color]』,方才我們說過:表單意見資料送給網路伺服器的 IIS/PWS ,而且當這些意見資料被送達到 IIS/PWS 後,IIS/PWS 的網路伺服器端也必須存在有一個相對應的ASP程式來紀錄以及處理這些意見資料,在本範例中負責處理意見資料的ASP程式正是『Action=”handel.asp”』。

小誌 發表於 2010-5-25 19:40

[color=DarkOrange][size=5][b]建立與開啟記錄資料檔[/b][/size][/color]
我們之前談過,即使設計好了『意見發表表單』的網頁與『觀看意見留言結果』的網頁後,這兩張網頁還都只是都是獨立的個體是毫無關係的,我們必須再設計一個用來紀錄以及處理留言的ASP程式『handel.asp』。

在ASP程式中,我們若要進行檔案的存取動作必須先建立一個 FileSystemObject 的物件(File/檔案物件),然後再利用我們建立出來的這個檔案物件來進行檔案的各項處理作用。當檔案物件被建立出來之後我們就可以呼叫它的CreateTextFile(建立檔案)方法或是OpenTextFile(開啟檔案)方法來建立或開啟檔案,然後,當ASP程式將記錄資料處理完畢後,我們就可以再呼叫WriteLine方法與ReadLine方法來存取資料記錄檔案。

首先我們先來看看紀錄以及處理留言的ASP程式是如何建立或開啟一個資料記錄檔案:

[color=Green][size=4][b] 如何建立及開啟檔案[/b][/size][/color]

  File物件是 FileSystemObject 物件的子物件,換言之,File物件必須透過FileSystemObject物件來產生。

[attach]904[/attach]

[color=RoyalBlue]如何使用CreateTextFile方法來建立檔案[/color]
[list=1]
[*]建立檔案的CreateTextFile方法標準用法:[code]Set 檔案物件名 = FileSystemObject物件名.CreateTextFile[/code](欲建立的檔案完整的真實路徑,若檔案已存在是否覆蓋)。

[*]參數使用說明:
[list]
[*]檔案完整的真實路徑:使用FileSystemObject 物件來操作檔案,我們給FileSystemObject 物件的檔案名稱必須是『真實路徑』的檔案表示法!我們要取得檔案的真實完整路徑可使用Server物件的MapPath方法。

將網址虛擬路徑轉為真實的檔案路徑,用法如下:[code]真實的路徑=Server.MapPath("虛擬路徑")[/code]例如:我們所安裝的 PWS/IIS 網路伺服器模擬機制的 www 根目錄(網址虛擬根目錄)為『c:\Inetpub\wwwroot』,我們若使用Server.MapPath("/")呼叫敘述,則回傳的資料值將是『c:\Inetpub\wwwroot』;我們若使用Server.MapPath("/information.txt")呼叫敘述,則回傳的資料值將是『c:\Inetpub\wwwroot\information.txt』。

[*]檔案已存在是否覆蓋:此參數值有兩個選擇『True』與『False』,若我們給的參數值是『True』則若有相同檔名的檔案存在,那這原本就存在的檔案資料就會被刪除而成為一個內容空白的新檔案;若我們給的參數值是『False』,則當有相同檔名的檔案存在時,ASP程式就將會引發錯誤。這個參數我們可以省略不填,若不填則預設值為『True』,也就是說我們不填這個參數值,若有相同檔名的檔案存在,那這原本就存在的檔案資料就會被刪除而成為一個內容空白的新檔案。

[attach]905[/attach]
[/list][/list]

小誌 發表於 2010-5-25 19:45

[color=RoyalBlue]如何使用OpenTextFile方法來開啟檔案[/color]
[list=1]
[*]開啟檔案的OpenTextFile方法標準用法:[code]Set 檔案物件名 = FileSystemObject物件名.OpenTextFile[/code](欲開啟的檔案完整的真實路徑,輸出入模式,若檔案不存在是否自動建立)

[*]參數使用說明:
[list]
[*]檔案完整的真實路徑:使用方式與CreateTextFile方法相同。
[*]輸出入模式:此參數值有兩個選擇『ForReading(程式撰寫值為1)』與『ForAppending(程式撰寫值為8)』,若我們給的參數值是『ForReading(程式撰寫值為1)』則我們開啟的檔案屬性將是唯讀的,也就是說我們將不能寫入任何資料到這個開啟的檔案中;若我們給的參數值是『ForAppending(程式撰寫值為8)』,則我們開啟的檔案屬性是可寫入資料的,但是將會從檔案的最尾端寫入資料,這個參數我們也可以省略不填,若不填則預設值為『ForReading(程式撰寫值為1)』,也就是說我們不填這個參數值,則預設我們開啟的檔案是不能寫入任何資料的。
[*]檔案不存在是否建立:此參數值也有兩個選擇『True』與『False』,若我們給的參數值是『True』則當我們要開啟的檔案不存在時,將由ASP程式自動幫我們建立一個新檔案;若我們給的參數值是『False』,則當我們要開啟的檔案不存在時,ASP程式就將會引發錯誤。這個參數我們也可以省略不填,若不填則預設值為『False』。
[/list]
下圖為開啟檔案的OpenTextFile方法使用例:
[attach]906[/attach]
[/list]


[color=Red]注意[/color]
ASP程式中的VB Script 程式敘述撰寫中並沒有『ForAppending(程式撰寫值為8)』這個已定義的程式撰寫常數,所以我們必須自己進行定義:Const ForAppending=8

小誌 發表於 2010-5-25 19:49

[color=Blue]如何讀取及寫入檔案[/color]

上一階段內容中我們已經了解了如何CreateTextFile(建立檔案)方法或是OpenTextFile(開啟檔案)方法來建立或開啟檔案,我們接著來學習如何在我們已經建立或開啟檔案中讀取及儲存資料。

我們利用CreateTextFile(建立檔案)方法或是OpenTextFile(開啟檔案)方法所建立或開啟檔案是一個純文字檔(.TXT),而要讀取或儲存文字檔資料,最常使用的方式就是:逐行讀取與逐行寫入,在逐行讀取資料的時候我們採用檔案物件的ReadLine方法,而逐行寫入資料時我們則採用WriteLine方法。

逐行讀取資料的ReadLine方法與逐行寫入資料的WriteLine方法並不需要任何參數,不過很重要的一點是:我們必須使用一個變數來裝載我們所讀入的資料即將這個變數中所裝載的資料寫入到檔案中。
下列即為逐行讀取資料ReadLine方法與逐行寫入資料WriteLine 方法的的使用例:

[attach]907[/attach]

[color=RoyalBlue]一次全部讀取檔案資料的ReadAll方法[/color]

我們的聯絡簿中家長的發言一定很多不會只有一行,如果我們採用單行讀取的方法就必須建立一個讀取資料的迴圈敘述來將檔案中所有的資料讀出,而且我們還得增加一個判斷讀取位置是否已到檔案結尾的敘述,然後再將資料一行一行的寫入檔案,這樣做似乎太麻煩了一些,因此我們可以改用ReadAll方法來寫作我們的ASP程式。

[attach]908[/attach]

在上例中,當我們的ReadAll方法在讀取檔案資料時,若我們讀取的檔案內容是空的(空白的資料檔)將會造成ASP程式執行時的錯誤,因此,為了避免ReadAll方法無法讀取檔案資料的錯誤,我們可以在ReadAll方法的程式敘述之前加上『On Error Resume Next』這行程式敘述來這個錯誤的發生:

[attach]909[/attach]

頁: [1]

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