麻辣家族討論版版's Archiver

小誌 發表於 2010-5-18 00:42

(PHP+IIS+MsSQL教學第35篇) 實戰應用_簡易線上報名

『線上報名』顧名思義就是您在家中電腦前,只要透過網路連線就可以進行各項活動的報名,不管是旅遊活動或是各項研討會喔!

 本範例中的報名程式是針對研討會活動而設計,管理者可訂定多個項目,報名者只要透過表單中的下拉式功能表選擇自己要參加的活動項目及填寫自己的姓名與學號即可線上報名,雖說是簡易版,但程式功能已與一般商業網站不相上下了喔。

本程式範例共分為四個部分,分別是:
[list=1]
[*]活動報名首頁in.php,此網頁是報名者填寫個人資料及選擇欲參加活動項目的主網頁!
[attach]613[/attach]

[*]儲存報名者資料的add.php程式網頁,本程式網頁負責將在報名網頁in.php中所填寫的相關的資料寫入至資料庫檔案中,並且將報名結果顯示出來。
[attach]614[/attach]

[*]參加人員清單列表程式網頁list.php,當我們在儲存報名者資料的add.php程式中點選了"查看已參加人員"按鈕後就會連結進入此一網頁,本程式網頁將會將已報名參加活動的人員列示出來。
[attach]615[/attach]

[*]儲存報名資料的SQL資料庫檔案Report,在範例壓縮檔\DataBase目錄中有一個SQL資料庫「Report」,主資料檔Report_Data.mdf、記錄檔Report_Log.ldf,請您將檔案複製到您的硬碟裡並附加到SQL Server中,本章範例所使用的資料表皆放置其中,您可直接加以利用。
[/list]


[color=Red][b]請注意: [/b][/color]
 我們資料庫的設計是依據「研討會項目」來設計,也就是說,有幾個活動項目在資料庫檔案中就有幾個資料表,例如本範例中可參加的研討會項目有「網頁設計」與「影像處理」兩個主題,因此在資料庫檔案中就存在有與項目名稱相同的「網頁設計」與「影像處理」這兩個資料表!如下圖所示:
[attach]616[/attach]
 
資料表的結構很簡單,只有姓名與Email兩個欄位,您可以依需要報名者填寫的資料項目而自行增加其他欄位項目。
[attach]617[/attach]


[color=Blue][size=5][b]本實戰應用_簡易線上報名完整程式與資料庫下載:[/b][/size][/color][attach]618[/attach]

小誌 發表於 2010-5-18 00:52

[color=Green][size=4][b]活動報名首頁[/b][/size][/color]
依照目前可讓報名者參加的研討會項目建立一個下拉式功能表,讓報名者直接選取欲參加的活動項目:
[attach]619[/attach]


[color=Red][b]注意 [/b][/color]
[list=1]
[*]在備選項目命名的部分,一定要配合資料庫的資料表名稱來設定Option標籤的『Value』屬性值,因為這個屬性質關係到我們資料庫資料表的開啟!因此Option標籤的『Value』屬性值必須是資料庫中已經存在的資料表名稱:
[attach]620[/attach]

[*]當報名者填寫好個人資料與選定欲參加的活動項目後按下"確認參加"按鈕,則表單中的資料是交由add.php程式網頁來處理,因此在FORM標籤中必須將action屬性設定為add.php,同時,資料的傳送方式method屬性設定為POST。
[/list][code]<form method="POST" action="add.php">[/code]in.php[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.php">
<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">E-mail:</font></td>
<td width="50%"><font size="2">
<input type="text" name="email" 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]

小誌 發表於 2010-5-18 00:57

[color=Green][size=4][b]資料儲存與狀態顯示[/b][/size][/color]
儲存報名者資料的add.php程式網頁其任務有兩項:將資料寫入資料庫,顯示報名狀態與參加者清單列表連結。

[list=1]
[*]報名者在報名網頁in.php中填寫好相關的資料,則表單中的資料將由本程式網頁來寫入至資料庫中;請特別注意『actname』這個變數值,這個變數是用來接取報名者所要參加的活動項目(下拉選單的選項值)!我們利用此變數值來開啟相對應的資料庫資料表,而且將此變數值用來作為網頁顯示的標題;如下圖所示:
[attach]621[/attach]

[*]查看已參加人員的連結設計是採用「表單」方式建立,雖然報名者所看到的網頁畫面只有「查看已參加人員」這個按鈕,但是,當報名者按下此一按鈕時卻有一項欄位資料被送出,不是按鈕的值(Value)喔,而是我們所建立的一個隱藏欄位:actname![code]<form method="POST" action="list.php">
<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>[/code][*]當報名者按下"查看已參加人員"按鈕,則表單中的資料是交由list.php程式網頁來處理,因此在FORM標籤中必須將action屬性設定為list.php,同時,資料的傳送方式method屬性設定為POST。
[attach]622[/attach]
[/list]

add.php[code]<?
//接收資料
$name = $_REQUEST["name"];
$email = $_REQUEST["email"];
$actname = $_REQUEST["actname"];

//連結SQL Server
    $conn = mssql_connect("127.0.0.1", "sa", "12345");
//選擇資料庫
    mssql_select_db("Report", $conn);
//建立查詢字串用以判斷是否已經報名過
$SQL="Select 姓名 From " .$actname . " Where 姓名='" . $name . "'";
$RS=mssql_query($SQL);

if (!mssql_fetch_array($RS))
{
//如果沒有報名過則寫入資料
$sql = "Insert Into " .$actname . " (姓名, Email) Values ('";
$sql = $sql . $name . "', '";
$sql = $sql . $email . "')";
mssql_query($sql);
$msg="你已經順利完成<font color=#FF3300>" .$actname. "</font>研討會報名";
}
else  //已報名過
{
$msg="你已經報名過<font color=#FF3300>" .$actname. "</font>研討會";
}
?>

<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"><?=$msg?></p>
<hr width="80%" color="#FF9900">
<form method="POST" action="list.php">
<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]

小誌 發表於 2010-5-18 01:01

[color=Green][size=4][b]已報名者清單列表[/b][/size][/color]
當報名者在資料儲存與狀態顯示網頁中按下「查看已參加人員」按鈕,則表單中的資料就由list.php程式網頁作清單列表的動作:
[attach]623[/attach]

[list=1]
[*]利用接收來自資料儲存與狀態顯示網頁中的活動項目選項資料開啟相對應的資料庫資料表:[code]<?
//接收查詢研討會資料
$actname=$_REQUEST["actname"];
//連結SQL Server
    $conn = mssql_connect("127.0.0.1", "sa", "12345");
//選擇資料庫
    mssql_select_db("Report", $conn);
//建立查詢字串
$SQL="Select * From " . $actname ;
//執行查詢命令        
$RS=mssql_query($SQL);       
?>[/code]在本程式中我們同樣要將actname變數作為網頁標題[code]<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>[/code][*]已報名者資料讀取與列表:
當資料庫被連結,相對應於活動項目的資料表開啟後,接著就是將資料表中的欄位資料讀取出來,同時配合表格網頁標籤的使用,以表格的方式列表出來:[code]<?
//列出報名資料
while ($fields=mssql_fetch_array($RS))
{
?>  
   <TR Valign=TOP>   
   <TD align="center">   
    <p align="center"><font size="2"><?=$fields["姓名"];?></font></TD>   
   <TD align="center">   
    <p align="center"><font size="2"><?=$fields["Email"];?></font></TD>   
   </TR>   
<?   
}      
?>    [/code]利用While迴圈敘述將所有資料表中資料錄欄位的資料全部取出列表,迴圈敘述停止執行的條件為沒有資料可讀取了(mssql_fetch_array()函數回傳false),意思就是說動作中資料錄的位置,若超過資料錄最後一筆資料時就停止迴圈敘述!
[/list]


list.php[code]<?
//接收查詢研討會資料
$actname=$_REQUEST["actname"];
//連結SQL Server
    $conn = mssql_connect("127.0.0.1", "sa", "12345");
//選擇資料庫
    mssql_select_db("Report", $conn);
//建立查詢字串
$SQL="Select * From " . $actname ;
//執行查詢命令        
$RS=mssql_query($SQL);       
?>

<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">E-mail</font></TD>   
</TR>   
   
<?
//列出報名資料
while ($fields=mssql_fetch_array($RS))
{
?>  
   <TR Valign=TOP>   
   <TD align="center">   
    <p align="center"><font size="2"><?=$fields["姓名"];?></font></TD>   
   <TD align="center">   
    <p align="center"><font size="2"><?=$fields["Email"];?></font></TD>   
   </TR>   
<?   
}      
?>   

</TABLE>   
  </center>
</div>
<p align="center"><font size="2"><a href="in.ph">返回登錄頁</a></font></p>
</html>[/code][color=Red][b]注意[/b][/color]
活動欄位選項數量、名稱必須與資料表數量、名稱相符:您可以自行增減活動項目,但是,活動欄位的名稱務必是資料庫檔案中已經存在的資料表:
[attach]624[/attach]

carlkyo 發表於 2013-2-18 09:13

學長這個要怎麼防止別人F5一直報名啊
謝謝

php 發表於 2013-7-7 17:34

您好:
謝謝您所熱心分享的內容,讓像我這般的新手獲益良多!!!!!
但礙於權限的關係無法仔細瞭解程式內容,可以麻煩大大分享給我嗎><
真是感激不盡!!!!!!!!!!!!

pijht880 發表於 2013-8-3 13:31

請問可以加入以下功能嗎
1.上傳檔案或照片
2.填寫完成後將資料重新讀取出來做確認再送出
3.事後再用自己的某欄位或密碼做認證讀出自己的資料做修改
4.自己列印報名表(pdf或印表機)

因為目前查到或學到的都是分散的內容
一組合就一直有錯誤
初學又實在弄不清楚題出在哪
拜託大人指教

orscar 發表於 2014-1-9 14:38

這有檢查是否有重複申請嗎?

ladioussuapp 發表於 2017-4-15 16:10

您好:
謝謝您所熱心分享的內容,讓像我這般的新手獲益良多!!!!!

頁: [1]

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