(實戰專題) 線上報名
『線上報名』顧名思義就是你坐在家中電腦前,只要透過網路連線就可以進行各項活動的報名,不管是旅遊活動或是各項研討會喔!本範例中的報名程式是針對校園活動而設計,管理者可訂定多個項目,報名者只要透過表單中的下拉式功能表選擇自己要參加的活動項目及填寫自己的姓名與學號即可線上報名,雖說是簡易版,但程式功能已與一般商業網站不相上下了喔。
[color=DarkOrange][size=5][b]程式流程[/b][/size][/color]
本程式範例共分為四個部分,分別是:
[list=1]
[*]活動報名首頁In.asp,此網頁是報名者填寫個人資料及選擇欲參加活動項目的主網頁!
[attach]1004[/attach]
[*]儲存報名者資料的add.asp程式網頁,本程式網頁負責將在報名網頁In.asp中所填寫的相關的資料寫入至資料庫檔案中,並且將報名結果顯示出來。
[attach]1005[/attach]
[*]參加人員清單列表程式網頁list.asp,當我們在儲存報名者資料的add.asp程式中點選了"查看已參加人員"按鈕後就會連結進入此一網頁,本程式網頁將會將已報名參加活動的人員列示出來。
[attach]1006[/attach]
[*]儲存報名資料的資料庫檔案report.mdb。
[/list]
[color=Red]請注意:[/color]
我們資料庫的設計是依據"活動項目"來設計,也就是說,有幾個活動項目在資料庫檔案中就有幾個資料表,例如本範例中可參加的研討會項目有"網頁設計"與"影像處理"兩個主題,因此在資料庫檔案中就存在有與項目名稱相同的"網頁設計"與"影像處理"這兩個資料表!如下圖所示:
[attach]1007[/attach]
資料表的結構很簡單,只有姓名與學號兩個欄位,你可以依需要報名者填寫的資料項目而自行增加其他欄位項目。
[attach]1008[/attach] [color=DarkOrange][size=5][b]活動報名首頁In.asp [/b][/size][/color]
[list=1]
[*]依照目前可讓報名者參加的活動項目建立一個下拉式功能表,讓報名者直接選取欲參加的活動項目:
[attach]1009[/attach]
[color=Red]注意 [/color]
在備選項目命名的部分,一定要配合資料庫的資料表名稱來設定Option標籤的『Value』屬性值,因為這個屬性質關係到我們資料庫資料表的開啟!因此Option標籤的『Value』屬性值必須是資料庫中已經存在的資料表名稱:
[attach]1010[/attach]
[*]當報名者填寫好個人資料與選定欲參加的活動項目後按下"確認參加"按鈕,則表單中的資料是交由add.asp程式網頁來處理,因此在FORM標籤中必須將action屬性設定為add.asp,同時,資料的傳送方式method屬性設定為POST。
[/list]
in.asp[code]<HTML>
<head>
<title>研討會報名單</title>
</head>
<BODY>
<p align="center"><img border="0" src="tit.gif"></p>
<hr width="80%" color="#FF9900">
<form method="POST" action="add.asp">
<div align="center">
<center>
<table border="1" bordercolor="#FFFFFF" bgcolor="#3399FF">
<tr>
<td width="50%"><font color="#FFFFFF" size="2">研討會課程選擇:</font></td>
<td width="50%"><font size="2"><select size="1" name="actname">
<option value="網頁設計">網頁設計</option>
<option value="影像處理">影像處理</option>
</select></font></td>
</tr>
<tr>
<td width="50%"><font color="#FFFFFF" size="2">姓名:</font></td>
<td width="50%"><font size="2"><input type="text" name="name" size="20"></font></td>
</tr>
<tr>
<td width="50%"><font color="#FFFFFF" size="2">學號:</font></td>
<td width="50%"><font size="2"><input type="text" name="id" size="20"></font></td>
</tr>
<tr>
<td width="100%" colspan="2">
<p align="center"><input type="submit" value="確認參加" style="background-color: #00FFFF; border-style: groove; border-color: #FFFFFF">
<input type="reset" value="清除重寫" style="background-color: #FF66CC; border-style: ridge; border-color: #FFFFFF"></p>
</td>
</tr>
</table>
</center>
</div>
</form>
<hr width="80%" color="#FF9900">
</BODY>
</HTML>[/code] [color=DarkOrange][size=5][b]資料儲存與狀態顯示[/b][/size][/color]
儲存報名者資料的add.asp程式網頁其任務有兩項:將資料寫入資料庫,顯示報名狀態與參加者清單列表連結。
[list=1]
[*]報名者在報名網頁In.asp中填寫好相關的資料,則表單中的資料將由本程式網頁來寫入至資料庫檔案中:
[attach]1011[/attach]
請特別注意到『actname』這個變數值,這個變數是用來接取報名者所要參加的活動項目(下欄選單的選項值)!我們利用此變數值來開啟相對應的資料庫資料表,而且將此變數值用來作為網頁顯示的標題;如下圖所示。
[attach]1012[/attach]
[*]查看已參加人員的連結設計是採用"表單"方式建立,雖然報名者所看到的網頁畫面只有"查看已參加人員"這個按鈕,但是,當報名者按下此一按鈕時卻有一項欄位資料被送出,不是按鈕的值(Value)喔,而是我們所建立的一個隱藏欄位:actname!
[attach]1014[/attach]
[*]當報名者按下"查看已參加人員"按鈕,則表單中的資料是交由list.asp程式網頁來處理,因此在FORM標籤中必須將action屬性設定為list.asp,同時,資料的傳送方式method屬性設定為POST。
[attach]1015[/attach]
[/list]
add.asp[code]<%
'接收資料
actname=Request("actname")
name=Request("name")
id=Request("id")
'建立資料庫連結物件
Set CN = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("report.mdb")
'連結資料庫
CN.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件
Set RS=Server.CreateObject("ADODB.Recordset")
'寫入資料
Function chgStr( data )
chgStr = "'" & Replace( data, "'", "''" ) & "'"
End Function
sql = "Insert Into " & actname &" (姓名, 學號) Values ("
sql = sql & chgStr(name) & ", "
sql = sql & chgStr(id) & ")"
CN.Execute sql
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>線上報名</title>
</head>
<body>
<p align="center"><img border="0" src="tit.gif" width="231" height="40"></p>
<p align="center">你已經順利完成<font color="#FF3300"><%=actname%></font>研討會報名</p>
<hr width="80%" color="#FF9900">
<form method="POST" action="list.asp">
<p align="center">
<input type="hidden" value="<%=actname%>" name="actname">
<input type="submit" value="查看已參加人員" style="background-color: #008000; color: #FFFFFF; border-style: groove"></p>
</form>
</body>
</html>[/code] [color=DarkOrange][size=5][b]已報名者清單列表[/b][/size][/color]
當報名者在資料儲存與狀態顯示網頁中按下"查看已參加人員"按鈕,則表單中的資料就由list.asp程式網頁作清單列表的動作:
[attach]1016[/attach]
[list=1]
[*]利用接收來自資料儲存與狀態顯示網頁中的活動項目選項資料開啟相對應的資料庫資料表:
[attach]1017[/attach]
在本程式中我們同樣要將actname變數作為網頁標題:
[attach]1019[/attach]
[attach]1020[/attach]
[*]已報名者資料讀取與列表
當資料庫被連結,相對應於活動項目的資料表開啟後,接著就是將資料表中的欄位資料讀取出來,同時配合表格網頁標籤的使用,以表格的方式列表出來:
[attach]1021[/attach]
利用While Wend 迴圈敘述將所有資料表中資料錄欄位的資料全部取出列表,迴圈敘述停止執行的條件為 not rs.eof,意思就是說動作中資料錄的位置,若超過資料錄最後一筆資料時就停止迴圈敘述,當然,在迴圈中敘述執行讀取一筆資料錄資料後,我們還必須利用資料錄的MoveNext方法將作用中資料錄的位置移至下一筆資料上!
[/list]
list.asp[code]<%
'接收查詢班級資料
actname=Request("actname")
'建立資料庫連結物件
Set conobject = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("report.mdb")
'連結資料庫
conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
'建立資料庫存取物件
Set RS=Server.CreateObject("ADODB.Recordset")
'打開資料表
SQL = "Select * From " & actname
RS.Open SQL,conobject,1,3
%>
<HTML>
<head>
<title><%=actname%>研討會報名人員清單</title>
</head>
<BODY>
<p align="center">
<img border="0" src="tit.gif">
<p Align="Center">
<font color="#FF9900"><%=actname%>研討會報名人員清單</font></p>
<div align="center">
<center>
<TABLE Border=1 Cellspacing=1 bordercolor="#800000">
<TR BgColor=#00FFFF>
<TD align="center" bgcolor="#0066FF"><font size="2" color="#FFFFFF">姓名</font></TD>
<TD align="center" bgcolor="#0066FF"><font size="2" color="#FFFFFF">學號</font></TD>
</TR>
<% While not rs.eof%>
<TR Valign=TOP>
<TD align="center">
<p align="center"><font size="2"><%=rs("姓名")%></font></TD>
<TD align="center">
<p align="center"><font size="2"><%=rs("學號")%></font></TD>
</TR>
<%
rs.MoveNext
Wend
%>
</TABLE>
</center>
</div>
<p align="center"><font size="2"><a href="in.asp">返回登錄頁</a></font></p>
</body>
</html>[/code][color=Red]注意[/color]
活動欄位選項數量、名稱必須與資料表數量、名稱相符:您可以自行增減活動項目,但是,活動欄位的名稱務必是資料庫檔案中已經存在的資料表:
[attach]1022[/attach]
[color=RoyalBlue][size=5][b](實戰專題) 線上報名 完整範例壓縮檔: [/b][/size][/color][attach]1023[/attach]
頁:
[1]