这篇文章介绍了商业网站应用设计,包括特价商品线上查询系统、线上购物系统、房屋仲介线上查询系统、线上择友系统、线上买卖交易系统、线上徵求命名系统、杂志线上查询订讲系统、生活资讯线上查询系统、电影查询预约系统、电台线上查询系统、线上多人游戏系统等应用的点子、设计实例、以及详细解说,让您快速地设计出各种商业的网站应用。
商业网站资料库应用 商业上使用网站资料库,可以透过Internet、或Intranet提供以下的应用∶ * 特价商品线上查询* * 线上购物* * 房屋仲介线上查询* * 线上择友* * 线上买卖交易 * 线上徵求命名 * 线上杂志查询订讲 * 生活资讯线上查询 * 电影查询预约 * 电台线上查询 * 线上多人游戏 右上角标示*的应用,本节将提供设计的范例,并详加解说。 执行本章资料库的范例,所用的资料库可为Microsoft Access、Microsoft SQL Server、或Text档案(读者可修改成其他支援ODBC的资料库,详见1-6-5节),须於NT安装IIS 3.0,并於「控制台」中的「ODBC」,新建一个名称为「BookSamp」的资料来源,驱动程式为「Microsoft Access Driver」、「SQL Server」、或「Microsoft Text 驱动程式」。详见附录 范例磁片。
1 特价商品线上查询系统 「特价商品线上查询系统」,可以透过Internet,查询价商品的资讯。 透过Internet,连线上公司、百货公司、超市、量贩店的「特价商品线上查询系统」,即可线上查询今天特价商品的资讯,包括特价商品的价格、外观图片等。 设计实例 让我们执行一个实例。 ( 范例 data6.asp 特价商品线上查询 若要查询资料,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data6.asp,即可显示查询的结果如下,包括名称、外观图片、原价、特价∶
设计实例详细解说 建立资料表 首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表Goods。 於栏名GIF、NAME、PRICE1、PRICE2分别输入外观图片档名、名称、原价、特价,若为特价商品时,於MARK栏位输入「*」。 使用Microsoft Access建立一个资料表Goods,如下∶
或使用Microsoft SQL Server建立一个资料表Goods,如下∶
或使用Text档案建立一个资料表Goods,如下∶
查询资料库 接著,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再使用SELECT的SQL指令查询资料库的资料,设定SQL指令,查询资料表Goods中栏位MARK为「*」的特价商品,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 程式码如下∶ Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT NAME,GIF,PRICE1,PRICE2 FROM Goods WHERE MARK = '*'" Set RS = Conn.Execute(SQL) 接著,要显示查询的结果了。 首先,由「 IF RS.EOF THEN ...」判断是否找到栏位MARK为「*」的特价商品,若RS.EOF为TRUE,则显示「今日无特价商品」。 程式码,如下∶ 查询结果:<br> <% IF RS.EOF THEN %> <FONT COLOR="#FF0000">今日无特价商品</FONT> 若找到栏位MARK为「*」的特价商品,则显示特价商品之名称、外观图片、原价、特价,分别由RecordSets物件的RS(0)、RS(1) 、RS(2)、RS(3) 取得。 RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。 若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。 程式码,如下∶ <% ELSE %> <FONT COLOR="#0000ff">特价商品如下:</FONT>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>名称</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>外观</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>原价</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>特价</FONT></TD> </TR>
<% Do While Not RS.EOF %> <TR>
<% For i = 0 to RS.Fields.Count - 1 %> <TD BGCOLOR="f7efde" ALIGN=CENTER> <% If RS(i).Name = "GIF" Then %> <img src= <%= RS(i) %> width=50 height=50>
<% Else %> <FONT COLOR="#0000"><%= RS(i) %></FONT></TD> <% END IF %>
<% Next %> </TR> <% RS.MoveNext Loop
RS.Close Conn.Close %> </TABLE>
<% END IF %> 最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。 全部的程式码,如下∶ <HTML> <HEAD> <TITLE>特价商品线上查询系统</TITLE> <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5"> </HEAD> <CENTER>
<BODY BGCOLOR=#FFFFFF> <FONT SIZE=+2 COLOR="#0000FF">特价商品线上查询系统</FONT> <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT NAME,GIF,PRICE1,PRICE2 FROM Goods WHERE MARK = '*'" Set RS = Conn.Execute(SQL) %>
<HR> 查询结果:<br> <% IF RS.EOF THEN %> <FONT COLOR="#FF0000">今日无特价商品</FONT>
<% ELSE %> <FONT COLOR="#0000ff">特价商品如下:</FONT> <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>名称</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>外观</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>原价</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>特价</FONT></TD> </TR>
<% Do While Not RS.EOF %> <TR>
<% For i = 0 to RS.Fields.Count - 1 %> <TD BGCOLOR="f7efde" ALIGN=CENTER>
<% If RS(i).Name = "GIF" Then %> <img src= <%= RS(i) %> width=50 height=50>
<% Else %> <FONT COLOR="#0000"><%= RS(i) %></FONT></TD> <% END IF %>
<% Next %> </TR>
<% RS.MoveNext Loop RS.Close Conn.Close %>
</TABLE>
<% END IF %>
<HR> </CENTER> </BODY> </HTML> 学会了吗?
2 线上购物系统 「线上购物系统」,可以透过Internet,以使用信用卡付款的方式,订购商品。 一般客户,透过Internet,连线上公司的「线上购物系统」,输入订购商品与数量、信用卡付款资料,即可以完成线上订购商品的手续。 可线上查询商品的资讯,包括商品的价格、外观图片等。 订购时,线上购物系统提供可以增加、取消、查询订购的功能。 订购後,可线上查询处理的结果,包括检查存货情况,告之预定交货的时间、和交货数量。 自动印出每日的订购商品、和订购数量,给相关部门出货、向信用卡公司收款之用。 这个「线上购物系统」,也可用於连锁店、直销员、或经销商向总公司订货之用,在电脑输入密码、输入订购商品、与数量,即可以完成线上订购商品的手续。 设计实例 让我们执行一个实例。 ( 范例 data14.asp 线上购物 若要线上购物,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data14.asp,於「信用卡种类」等处选择和输入信用卡的资料,并输入、「消费总金额」、「商品代号」、「数量」後,按下「线上购物」按钮,即可显示线上购物的结果,包括信用卡的资料、订购的资料、订购单号码如下∶
取消购物 线上购物後,可以取消所订购的记录,於「订购单号码」处选择待取消的订购单号码,按下「取消购物」按钮,即可显示取消订购单的结果如下∶
若待取消的订购单尚未订购过,则取消订购单时将显示「找不到订购单」如下∶
查询购物单 线上购物後,可以查询所有订购的记录,仅须於「信用卡号」处输入信用卡号後,按下「查询购物单」按钮,即可显示查询所有订购的记录如下∶
查询购物单时,若尚未订购过,则查询购物单时将显示「找不到订购单」如下∶
设计实例详细解说 建立资料表 首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表GoodsTrans,储存订购单记录。 建立栏位ID、TYPE、VALID、GOODS、QTY、AMOUNT、SN,分别代表一个订购记录的信用卡号、信用卡种类、信用卡有效期限、持有人姓名、消费总金额、商品代号、数量、订购单号码。建立资料表时不必输入资料。 使用Microsoft Access建立一个资料表GoodsTrans,如下∶
或使用Microsoft SQL Server建立一个资料表GoodsTrans,如下∶
或使用Text档案建立一个资料表GoodsTrans,如下∶
设计输入的表单 接著,设计输入的表单form,线上购物时,当客户选择信用卡种类TYPE1,输入信用卡号ID1,信用卡有效期限VALID1,持有人姓名NAME1,消费总金额AMOUNT1,商品代号GOODS1,数量QTY1,按下「线上购物」按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data14.asp档案(与form为同一个ASP档案),程式码如下∶ 线上购物, 请输入以下资料:<br> <form action="data14.asp" method="post"> <FONT COLOR="#FF8080">■ </FONT>信用卡种类:
<select name="TYPE1"> <OPTION SELECTED>VISA <OPTION>American Exdivss <OPTION>Master Card </select><br> <FONT COLOR="#FF8080">■ </FONT>信用卡号: <INPUT TYPE=TEXT VALUE="1234-5678-9012-3456" NAME="ID1" SIZE=19><BR> <FONT COLOR="#FF8080">■ </FONT>信用卡有效期限: <INPUT TYPE=TEXT VALUE="8906" NAME="VALID1" SIZE=4><BR> <FONT COLOR="#FF8080">■ </FONT>持有人姓名: <INPUT TYPE=TEXT VALUE="李商隐" NAME="NAME1" SIZE=8><BR> <FONT COLOR="#FF8080">■ </FONT>消费总金额: <INPUT TYPE=TEXT VALUE="12000" NAME="AMOUNT1" SIZE=6><P> <FONT COLOR="#FF8080">■ </FONT>商品代号 (如123456): <INPUT TYPE=TEXT VALUE="123456" NAME="GOODS1" SIZE=10><BR> <FONT COLOR="#FF8080">■ </FONT>数量: <INPUT TYPE=TEXT VALUE="10" NAME="QTY1" SIZE=6><BR> <INPUT TYPE=submit VALUE="线上购物" name="Action"><p> <HR WIDTH = 30% ALIGN=LEFT> <FONT COLOR="#FF0000">■ </FONT>订购单号码: <INPUT TYPE=TEXT NAME="SN1" SIZE=12> <INPUT TYPE=submit VALUE="取消购物" name="Action"><P> <FONT COLOR="#00FF00">■ </FONT>信用卡号: <INPUT TYPE=TEXT VALUE="1234-5678-9012-3456" NAME="ID2" SIZE=19> <INPUT TYPE=submit VALUE="查询购物单" name="Action"><P> </form> <form> <FONT COLOR="#0000FF">■ </FONT><INPUT TYPE=button VALUE="查询特价商品" OnClick="location.href='data6.asp'"> </form> 取消线上购物时,客户输入订购单号码SN1,按下「取消购物」按钮submit送到网站伺服器。 查询购物单时,客户输入信用卡号ID2,按下「查询购物单」按钮submit送到网站伺服器。 若按下「查询特价商品」按钮,将执行data6.asp,以显示特价商品。 当网站伺服器执行data14.asp档案时,首先经由Request.Form("Action")取得所按submit按钮上的显示文字VALUE,Left(Request.Form("Action"),2)系只取前两个中文字,若Request.Form("Action")非空白时,表示为表单输入所呼叫执行。 由「SELECT CASE Left(Request.Form("Action"),2) 」判断是按了那个按钮。若按钮上前两个字为「线上」时,则执行AddGoods() 副程式;若为「取消」时,则执行DeleteGoods() 副程式;若为「查询」时,则执行CheckGoods() 副程式。 <% SELECT CASE Left(Request.Form("Action"),2) CASE "线上" AddGoods() CASE "取消" DeleteGoods() CASE "查询" CheckGoods() END SELECT %> 线上购物 按了「线上购物」按钮时,将执行AddGoods() 副程式。 首先,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 於GoodsTrans资料表,使用「INSERT INTO...」指令新增一笔资料。此笔新增资料的栏位ID、TYPE、VALID、GOODS、QTY、AMOUNT为所输入的表单资料。订购单号码栏位SN系设定为订购时的日期时间。 程式码如下∶ Sub AddGoods() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SNNO = YEAR(DATE()) & MONTH(DATE()) & DAY(DATE()) & HOUR(NOW) & MINUTE(NOW) & SECOND(NOW) SQL = "INSERT INTO GoodsTrans VALUES('" & Request.Form("ID1") & "','" & Request.Form("TYPE1") & "','" & Request.Form("VALID1") & "','" & LEFT(Request.Form("NAME1"),3) & "','" & Request.Form("GOODS1") & "','" & Request.Form("QTY1") & "','" & Request.Form("AMOUNT1") & "','" & SNNO & "')" Set RS = Conn.Execute(SQL) 接著,要显示执行的结果了。总计两个表格,一个为信用卡资料表,另一个为订购资料表。 显示执行的结果时,配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。 程式码,如下∶ <FONT COLOR="#0000FF">线上购物结果:</FONT><br> <FONT COLOR="#0000FF">订购 OK ! 订购单号码为 <% =SNNO %></FONT><BR> 信用卡资料:<BR> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>信用卡种类</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>信用卡号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>有效期限</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>姓名</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("TYPE1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("VALID1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("NAME1"),3) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("AMOUNT1") %></FONT></TD> </TR> </TABLE> <BR> 订购资料:<BR> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>商品代号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>订购单号码</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("GOODS1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("QTY1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("AMOUNT1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =SNNO %></FONT></TD> </TR> </TABLE> <% Conn.Close End Sub %> 最後,使用Conn.Close关闭资料库。 取消购物 按了「取消购物」按钮时,将执行DeleteGoods() 副程式。 首先,先寻找到所待取消的订购单,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再使用SELECT的SQL指令查询资料库的资料,於GoodsTrans资料表,设定SQL指令,查询订购单号码栏位符合所输入Request.Form("SN1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 由「IF RS.EOF THEN ...」判断是否找到所待取消的订购单,若RS.EOF为TRUE,表示找不到此订购单,则显示「找不到订购单」。 程式码如下∶ <% Sub DeleteGoods() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT GOODS,QTY,AMOUNT,SN FROM GoodsTrans WHERE SN = '" & Request.Form("SN1") & "'" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">取消订购单结果:</FONT><br> <% IF RS.EOF THEN '找不到 ! %> <FONT COLOR="#FF0000">找不到订购单 <% =Request.Form("SN1") %> !</FONT> 若找到所待取消的订购单,则於GoodsTrans资料表,使用「DELETE FROM...」指令删除此笔订购单资料。 接著,显示执行的结果,配合<TABLE>表格的HTML语法,将於GoodsTrans资料表删除的订购单资料,填入表格的各栏位当中,以显示出来。 程式码,如下∶ <% ELSE '取消订购单 ! %> <FONT COLOR="#FF0000">订购单 <% =Request.Form("SN1") %> 已经取消 !</FONT> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>商品代号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>订购单号码</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(0) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(2) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(3) %></FONT></TD> </TR> </TABLE> <% 'GoodsTrans删除一笔 SQL = "DELETE FROM GoodsTrans WHERE SN = '" & Request.Form("SN1") & "'" Set RS = Conn.Execute(SQL) END IF Conn.Close End Sub %> 最後,使用Conn.Close关闭资料库。 查询购物 按了「查询购物单」按钮时,执行CheckGoods() 副程式。 首先,先寻找到所待查询的购物单,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再使用SELECT的SQL指令查询资料库的资料,於GoodsTrans资料表,设定SQL指令,查询信用卡号ID符合所输入Request.Form("ID2")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 由「IF RS.EOF THEN ...」判断是否找到所待查询信用卡号的所有购物单记录,若RS.EOF为TRUE,表示找不到此信用卡号的购物单,则显示「信用卡号...找不到订购单」。 程式码如下∶ <% Sub CheckGoods() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT GOODS,QTY,AMOUNT,SN FROM GoodsTrans WHERE ID = '" & Request.Form("ID2") & "'" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">查询订购单结果:</FONT><br> <% IF RS.EOF THEN '找不到订购单 ! %> 信用卡号 <% =Request.Form("ID2") %> <FONT COLOR="#FF0000">找不到订购单 !</FONT> 若找到信用卡号ID符合所输入Request.Form("ID2")的资料,则显示查询的结果,包括商品代号、数量、消费总金额、订购单号码,分别由RecordSets物件的RS(0)、RS(1)、RS(2)、RS(3)取得。 RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。 由「If INT(j/2)*2 <> j Then... 」判断显示奇偶笔的订购单资料,奇偶列显示不同的颜色。 若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。 程式码,如下∶ <% ELSE %> <% '有订购单 ! %> 信用卡号 <% =Request.Form("ID2") %> <FONT COLOR="#0000ff">订购单如下:</FONT> <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>商品代号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>订购单号码</FONT></TD> </TR> <% j = 1 %> <% Do While Not RS.EOF %> <TR> <% For i = 0 to RS.Fields.Count - 1 %> <% If INT(j/2)*2 <> j Then %> <TD BGCOLOR="E8FFFF" ALIGN=CENTER> <FONT COLOR="#000000"><%= RS(i) %></FONT></TD> <% Else %> <TD ALIGN=CENTER BGCOLOR="#C0FFFF"> <FONT COLOR="#000000"><%= RS(i) %></FONT></TD> <% END IF %> <% Next %> </TR> <% RS.MoveNext j = j + 1 Loop %> </TABLE> <% END IF RS.Close Conn.Close End Sub %> 最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。 全部的程式码,如下∶ <HTML> <HEAD> <TITLE>线上购物系统</TITLE> <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5"> </HEAD> <BODY BGCOLOR=#FFFFFF> <FONT SIZE=+2 COLOR="#0000FF">线上购物系统</FONT> <% SELECT CASE Left(Request.Form("Action"),2) CASE "线上" AddGoods() CASE "取消" DeleteGoods() CASE "查询" CheckGoods() END SELECT Sub AddGoods() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SNNO = YEAR(DATE()) & MONTH(DATE()) & DAY(DATE()) & HOUR(NOW) & MINUTE(NOW) & SECOND(NOW) SQL = "INSERT INTO GoodsTrans VALUES('" & Request.Form("ID1") & "','" & Request.Form("TYPE1") & "','" & Request.Form("VALID1") & "','" & LEFT(Request.Form("NAME1"),3) & "','" & Request.Form("GOODS1") & "','" & Request.Form("QTY1") & "','" & Request.Form("AMOUNT1") & "','" & SNNO & "')" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">线上购物结果:</FONT><br> <FONT COLOR="#0000FF">订购 OK ! 订购单号码为 <% =SNNO %></FONT><BR> 信用卡资料:<BR> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>信用卡种类</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>信用卡号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>有效期限</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>姓名</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("TYPE1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("VALID1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("NAME1"),3) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("AMOUNT1") %></FONT></TD> </TR> </TABLE> <BR> 订购资料:<BR> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>商品代号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>订购单号码</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("GOODS1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("QTY1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("AMOUNT1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =SNNO %></FONT></TD> </TR> </TABLE> <% Conn.Close End Sub %> <% Sub DeleteGoods() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT GOODS,QTY,AMOUNT,SN FROM GoodsTrans WHERE SN = '" & Request.Form("SN1") & "'" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">取消订购单结果:</FONT><br> <% IF RS.EOF THEN '找不到 ! %> <FONT COLOR="#FF0000">找不到订购单 <% =Request.Form("SN1") %> !</FONT> <% ELSE '取消订购单 ! %> <FONT COLOR="#FF0000">订购单 <% =Request.Form("SN1") %> 已经取消 !</FONT> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>商品代号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>订购单号码</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(0) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(2) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(3) %></FONT></TD> </TR> </TABLE> <% 'GoodsTrans删除一笔 SQL = "DELETE FROM GoodsTrans WHERE SN = '" & Request.Form("SN1") & "'" Set RS = Conn.Execute(SQL) END IF Conn.Close End Sub %> <% Sub CheckGoods() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT GOODS,QTY,AMOUNT,SN FROM GoodsTrans WHERE ID = '" & Request.Form("ID2") & "'" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">查询订购单结果:</FONT><br> <% IF RS.EOF THEN '找不到订购单 ! %> 信用卡号 <% =Request.Form("ID2") %> <FONT COLOR="#FF0000">找不到订购单 !</FONT> <% ELSE %> <% '有订购单 ! %> 信用卡号 <% =Request.Form("ID2") %> <FONT COLOR="#0000ff">订购单如下:</FONT> <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>商品代号</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>消费总金额</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>订购单号码</FONT></TD> </TR> <% j = 1 %> <% Do While Not RS.EOF %> <TR> <% For i = 0 to RS.Fields.Count - 1 %> <% If INT(j/2)*2 <> j Then %> <TD BGCOLOR="E8FFFF" ALIGN=CENTER> <FONT COLOR="#000000"><%= RS(i) %></FONT></TD> <% Else %> <TD ALIGN=CENTER BGCOLOR="#C0FFFF"> <FONT COLOR="#000000"><%= RS(i) %></FONT></TD> <% END IF %> <% Next %> </TR> <% RS.MoveNext j = j + 1 Loop %> </TABLE> <% END IF RS.Close Conn.Close End Sub %> <HR> 线上购物, 请输入以下资料:<br> <form action="data14.asp" method="post"> <FONT COLOR="#FF8080">■ </FONT>信用卡种类: <select name="TYPE1"> <OPTION SELECTED>VISA <OPTION>American Exdivss <OPTION>Master Card </select><br> <FONT COLOR="#FF8080">■ </FONT>信用卡号: <INPUT TYPE=TEXT VALUE="1234-5678-9012-3456" NAME="ID1" SIZE=19><BR> <FONT COLOR="#FF8080">■ </FONT>信用卡有效期限: <INPUT TYPE=TEXT VALUE="8906" NAME="VALID1" SIZE=4><BR> <FONT COLOR="#FF8080">■ </FONT>持有人姓名: <INPUT TYPE=TEXT VALUE="李商隐" NAME="NAME1" SIZE=8><BR> <FONT COLOR="#FF8080">■ </FONT>消费总金额: <INPUT TYPE=TEXT VALUE="12000" NAME="AMOUNT1" SIZE=6><P> <FONT COLOR="#FF8080">■ </FONT>商品代号 (如123456): <INPUT TYPE=TEXT VALUE="123456" NAME="GOODS1" SIZE=10><BR> <FONT COLOR="#FF8080">■ </FONT>数量: <INPUT TYPE=TEXT VALUE="10" NAME="QTY1" SIZE=6><BR> <INPUT TYPE=submit VALUE="线上购物" name="Action"><p> <HR WIDTH = 30% ALIGN=LEFT> <FONT COLOR="#FF0000">■ </FONT>订购单号码: <INPUT TYPE=TEXT NAME="SN1" SIZE=12> <INPUT TYPE=submit VALUE="取消购物" name="Action"><P> <FONT COLOR="#00FF00">■ </FONT>信用卡号: <INPUT TYPE=TEXT VALUE="1234-5678-9012-3456" NAME="ID2" SIZE=19> <INPUT TYPE=submit VALUE="查询购物单" name="Action"><P> </form> <form> <FONT COLOR="#0000FF">■ </FONT><INPUT TYPE=button VALUE="查询特价商品" OnClick="location.href='data6.asp'"> </form> <HR> </BODY> </HTML>
3 房屋仲介线上查询系统 「房屋仲介线上查询系统」,可以透过Internet,查询到符合条件要卖的房子资讯。 想要买房子的人,透过Internet,连线上房屋仲介公司的「房屋仲介线上查询系统」,输入最高预算、地点、坪数等选择,即可以查询到符合条件要卖的房子资讯。 设计实例 让我们执行一个实例。 ( 范例 data5.asp 房屋仲介线上查询 若要查询资料,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data5.asp,於「地点」处选择购屋地点譬如台北市,於「最高预算」处输入购屋最高预算後譬如1000(万),按下「查榜」按钮,即可显示查询的结果如下,包括地点、外观图片、价格∶ 找不到符合地点和预算的房子时,必须告诉人家,譬如输入「最高预算」300时,将显示「找不到」如下∶
设计实例详细解说 建立资料表 首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表House。 使用Microsoft Access建立一个资料表House,如下∶ 於栏名GIF、PLACE、PRICE分别输入外观图片档案、地点、价格的资料。 或使用Microsoft SQL Server建立一个资料表House,如下∶ 或使用Text档案建立一个资料表House,如下∶ 设计输入表单 接著,设计输入表单form,以让查询者於选择购屋地点city,和输入最高预算money,按下「查询」按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data5.asp档案(与form为同一个ASP档案),程式码如下∶ <form action="data5.asp" method="post"> 地点: <select name="city"> <OPTION SELECTED>台北市 <OPTION>新店市 <OPTION>中和市 </select> 最高预算($万): <INPUT TYPE=TEXT VALUE="1500" NAME="money" SIZE=10> <INPUT TYPE=submit VALUE="查询" name="Action"> </form> 网站伺服器执行data5.asp档案,首先经由Request.Form("money") 取得查询者所输入的最高预算money,若money非空白时,表示为表单输入所呼叫执行。 查询资料库 使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再使用SELECT的SQL指令查询资料库的资料,设定SQL指令,查询符合购屋地点Request.Form("city")和最高预算Request.Form("money")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 程式码如下∶ IF Request.Form("money") THEN Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT PLACE,GIF,PRICE FROM House WHERE PRICE <= " & Request.Form("money") & " AND PLACE = '" & LEFT(Request.Form("city"),3) &"'" Set RS = Conn.Execute(SQL) 接著,要显示查询的结果了。 首先,由「 IF RS.EOF THEN ...」判断是否找到符合购屋地点Request.Form("city")和最高预算Request.Form("money")的资料,若RS.EOF为TRUE,则显示「找不到地点...或预算...万以下的房子 !」。 程式码,如下∶ 查询结果:<br> <% IF RS.EOF THEN %> <FONT COLOR="#FF0000">找不到地点 <% =LEFT(Request.Form("city"),3) %> <BR> 或预算 $ <% =Request.Form("money") %> 万 以下的房子 !</FONT> 若找到符合查询条件的资料,则显示查询的结果,包括地点、外观图片、价格,分别由RecordSets物件的RS(0)、RS(1) 、RS(2) 取得。 RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。 由「If RS(i).Name = "GIF" Then...」判断栏位是否为外观图片GIF,若是则由「<img src= <%= RS(i) %> width=50 height=50>」的HTML码显示外观图片。 若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。 程式码,如下∶ <% ELSE %> <FONT COLOR="#0000ff">地点 <% =LEFT(Request.Form("city"),3) %> <BR> 和预算 $ <% =Request.Form("money") %> 万 以下的房子如下:</FONT> <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>地点</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>外观</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格($万)</FONT></TD> </TR> <% Do While Not RS.EOF %> <TR> <% For i = 0 to RS.Fields.Count - 1 %> <TD BGCOLOR="f7efde" ALIGN=CENTER> <% If RS(i).Name = "GIF" Then %> <img src= <%= RS(i) %> width=50 height=50> <% Else %> <FONT COLOR="#0000"><%= RS(i) %></FONT></TD> <% END IF %> <% Next %> </TR> <% RS.MoveNext Loop RS.Close Conn.Close %> </TABLE> <% END IF %> 最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。 全部的程式码,如下∶ <HTML> <HEAD> <TITLE>房屋仲介线上查询系统</TITLE> <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5"> </HEAD> <CENTER> <BODY BGCOLOR=#FFFFFF> <FONT SIZE=+2 COLOR="#0000FF">房屋仲介线上查询系统</FONT> <% IF Request.Form("money") THEN Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT PLACE,GIF,PRICE FROM House WHERE PRICE <= " & Request.Form("money") & " AND PLACE = '" & LEFT(Request.Form("city"),3) &"'" Set RS = Conn.Execute(SQL) %> <HR> 查询结果:<br> <% IF RS.EOF THEN %> <FONT COLOR="#FF0000">找不到地点 <% =LEFT(Request.Form("city"),3) %> <BR> 或预算 $ <% =Request.Form("money") %> 万 以下的房子 !</FONT> <% ELSE %> <FONT COLOR="#0000ff">地点 <% =LEFT(Request.Form("city"),3) %> <BR> 和预算 $ <% =Request.Form("money") %> 万 以下的房子如下:</FONT> <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>地点</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>外观</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格($万)</FONT></TD> </TR> <% Do While Not RS.EOF %> <TR> <% For i = 0 to RS.Fields.Count - 1 %> <TD BGCOLOR="f7efde" ALIGN=CENTER> <% If RS(i).Name = "GIF" Then %> <img src= <%= RS(i) %> width=50 height=50> <% Else %> <FONT COLOR="#0000"><%= RS(i) %></FONT></TD> <% END IF %> <% Next %> </TR> <% RS.MoveNext Loop RS.Close Conn.Close %> </TABLE> <% END IF %> <HR> <% END IF %> <BR> <form action="data5.asp" method="post"> 地点: <select name="city"> <OPTION SELECTED>台北市 <OPTION>新店市 <OPTION>中和市 </select> 最高预算($万): <INPUT TYPE=TEXT VALUE="1500" NAME="money" SIZE=10> <INPUT TYPE=submit VALUE="查询" name="Action"> </form> <HR> </CENTER> </BODY> </HTML>
4 线上择友系统 「线上择友系统」,可以透过Internet,提供线上择友的功能。 想要被择友的人,透过Internet,连线上「线上择友系统」,根据分类,输入自己的学历、兴趣等分类,以及姓名、E-Mail位址。想要择友的人,依照分类,选择符合择友条件的分类,电脑将随机找出数名符合择友条件者的姓名、E-Mail位址,以供择友者与之连络。 设计实例 让我们执行一个实例。 ( 范例 data17.asp 线上择友 若要线上择友,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data17.asp,於「性别」、和「兴趣」处选择选择择友条件後,按下「线上择友」按钮,即可显示线上择友的结果如下∶ 将显示有几笔符合择友条件,再随机取得一笔,每次线上择友可能得到不同的结果,显示包括性别、E-Mail位址、性别、和兴趣等资料,直接按下蓝色的「E-Mail位址」即可自动启动E-Mail软体,并将此「E-Mail位址」复制到收件人的栏位当中,直接写E-Mail与之连络 若找不到符合择友条件的记录时,则线上择友时将显示「报歉! 找不到符合择友条件的朋友 !」,如下∶ 报名 若要加入「被择友」的行列,必须报名线上择友,於「姓名」、和「E-Mail位址」处输入自己的基本资料,於「性别」、和「兴趣」处选择选择被择友的条件後,按下「报名」按钮,即可显示报名线上择友的结果如下∶ 报名线上择友时,若已经报名过,则重覆报名时将显示「已经报名」如下∶ 取消报名 报名线上择友後,可以取消所报名的资料,仅须於「E-Mail位址」处输入E-Mail位址後,按下「取消报名」按钮,即可显示取消报名的结果如下∶ 若待取消的E-Mail位址资料尚未报名过,则取消报名时将显示「找不到」如下∶ 查询报名 报名线上择友後,可以查询报名的资料,仅须於「E-Mail位址」处输入E-Mail位址後,按下「查询报名」按钮,即可显示所有报名的资料如下∶ 查询报名时,若尚未报名,则查询报名时将显示「找不到」如下∶
设计实例详细解说 建立资料表 首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表Friend,储存线上择友的资料。建立栏位NAME、EMAIL、SEX、CLASS,分别代表一笔线上择友资料的姓名、E-Mail位址、性别、和兴趣。建立资料表时不必输入资料。 使用Microsoft Access建立一个资料表Friend,如下∶ 或使用Microsoft SQL Server建立一个资料表Friend,如下∶ 或使用Text档案建立一个资料表Friend,如下∶
设计输入的表单 接著,设计输入的表单form,线上择友时,当选择性别SEX2,和兴趣CLASS2,按下「线上择友」按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data17.asp档案(与form为同一个ASP档案)。 程式码如下∶ 线上择友, 请选择择友条件:<br> <form action="data17.asp" method="post"> <FONT COLOR="#FF8080">■ </FONT>性别: <select name="SEX2"> <OPTION SELECTED>男 <OPTION>女 </select> <BR> <FONT COLOR="#FF8080">■ </FONT>兴趣: <select name="CLASS2"> <OPTION SELECTED>运动 <OPTION>阅读 <OPTION>电脑 <OPTION>交友 <OPTION>股票 <OPTION>打扮 <OPTION>其他 </select> <br> <INPUT TYPE=submit VALUE="线上择友" name="Action"> </form> <HR> 报名线上择友时,当输入姓名NAME1和E-Mail位址EMAIL1,选择性别SEX2和兴趣CLASS2,按下「报名」等按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data17.asp档案,程式码如下∶ 报名线上择友, 请输入以下资料:<br> <form action="data17.asp" method="post"> <FONT COLOR="#FF8080">■ </FONT>姓名: <INPUT TYPE=TEXT VALUE="王国伟" NAME="NAME1" SIZE=10><BR> <FONT COLOR="#FF8080">■ </FONT>E-Mail位址: <INPUT TYPE=TEXT VALUE="wang@abc.net.tw" NAME="EMAIL1" SIZE=20><BR> <FONT COLOR="#FF8080">■ </FONT>性别: <select name="SEX1"> <OPTION SELECTED>男 <OPTION>女 </select> <BR> <FONT COLOR="#FF8080">■ </FONT>兴趣: <select name="CLASS1"> <OPTION SELECTED>运动 <OPTION>阅读 <OPTION>电脑 <OPTION>交友 <OPTION>股票 <OPTION>打扮 <OPTION>其他 </select> <br> <INPUT TYPE=submit VALUE="报名" name="Action"><br> <INPUT TYPE=submit VALUE="取消报名" name="Action"> 仅须填入E-Mail位址<br> <INPUT TYPE=submit VALUE="查询报名" name="Action"> 仅须填入E-Mail位址<br> </form> 网站伺服器执行data17.asp档案,首先经由Request.Form("Action")取得所按submit按钮上的显示文字VALUE,Left(Request.Form("Action"),2)系只取前两个中文字,若Request.Form("Action")非空白时,表示为表单输入所呼叫执行。 由「SELECT CASE Left(Request.Form("Action"),2) 」判断是按了那个按钮。若按钮上前两个字为「报名」时,则执行AddReg() 副程式;若为「取消」时,则执行DeleteReg() 副程式;若为「查询」时,则执行CheckReg() 副程式;若为「线上」时,则执行Find() 副程式。 <% SELECT CASE Left(Request.Form("Action"),2) CASE "报名" AddReg() CASE "取消" DeleteReg() CASE "查询" CheckReg() CASE "线上" Find() END SELECT %> 线上择友 按了「线上择友」按钮时,将执行Find() 副程式。 首先,先寻找符合择友条件的记录,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再使用SELECT的SQL指令查询资料库的资料,於Friend资料表,设定SQL指令,查询性别栏位SEX符合所输入Request.Form("SEX2"),和兴趣栏位CLASS符合所选择Request.Form("CLASS2")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 由「IF RS.EOF THEN ...」判断是否找到所待取消的报名记录,若RS.EOF为TRUE,表示找不到符合择友条件的朋友,则显示「找不到」。 程式码如下∶ <% Sub Find() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT * FROM Friend WHERE SEX = '" & LEFT(Request.Form("SEX2"),1) & "' AND CLASS = '" & LEFT(Request.Form("CLASS2"),2) & "'" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">线上择友结果:</FONT><br> <% IF RS.EOF THEN '找不到符合择友条件的朋友 ! %> <FONT COLOR="#FF0000">报歉! 找不到符合择友条件的朋友 !</FONT> 若找到符合择友条件的资料,则由「K = 0 Do While Not RS.EOF...」计算有几笔符合择友条件,再由「RND」随机取得一笔,以便每次线上择友可能得到不同的结果,显示包括性别、E-Mail位址、性别、和兴趣等资料,分别由RecordSets物件的RS(0)、RS(1)、RS(2)、RS(3) 取得。 配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。 程式码,如下∶ <% ELSE '有找到 ! K = 0 Do While Not RS.EOF RS.MoveNext K = K + 1 Loop Randomize j = INT(RND * K) RS.MoveFirst RS.Move j %>
<FONT COLOR="#0000ff">符合择友条件的朋友, 计 <% =K %> 位<BR> 其中第 <% =j+1 %> 位的资料如下:</FONT> <TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>姓名</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>E-Mail位址</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>性别</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>兴趣</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(0) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><A HREF="mailto:<% =RS(1) %>"><% =RS(1) %></A></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(2) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(3) %></FONT></TD> </TR> </TABLE> <% END IF RS.Close Conn.Close End Sub %> 最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。 报名 按了「报名」按钮时,将执行AddReg() 副程式。 首先,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再寻找所待新增的报名记录,以检查是否已经报过名,使用SELECT的SQL指令查询资料库的资料,於Friend资料表,设定SQL指令,查询E-Mail位址栏位EMAIL符合所输入Request.Form("EMAIL1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 程式码如下∶ Sub AddReg() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT * FROM Friend WHERE EMAIL = '" & Request.Form("EMAIL1") & "'" Set RS = Conn.Execute(SQL) 接著,要显示执行的结果了。 首先於Friend资料表,寻找报名的记录,由「IF RS.EOF THEN ...」判断是否找到。若RS.EOF为TRUE,表示尚未报名,则於Friend资料表,使用「INSERT INTO...」指令新增一笔资料。 显示执行的结果时,配合<TABLE>表格的HTML语法,将姓名、E-Mail位址、性别、和兴趣的资料,填入表格的各栏位当中显示出来。 程式码,如下∶ <% IF RS.EOF THEN 'Friend新增一笔 SQL = "INSERT INTO Friend(NAME, EMAIL, SEX, CLASS) VALUES('" & LEFT(Request.Form("NAME1"),3) & "','" & Request.Form("EMAIL1") & "','" & LEFT(Request.Form("SEX1"),1) & "','" & LEFT(Request.Form("CLASS1"),2) & "')" Set RS = Conn.Execute(SQL) %> <FONT COLOR="#0000FF">报名 OK !</FONT> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>姓名</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>E-Mail位址</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>性别</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>兴趣</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("NAME1"),3) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("EMAIL1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("SEX1"),1) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("CLASS1"),2) %></FONT></TD> </TR> </TABLE> 当於Friend资料表查询,由「IF RS.EOF THEN ...」判断是否找到报名的资料时,若RS.EOF为FALSE,表示已经报名,则显示「报歉! 已经报名!」。 接著,显示执行的结果,配合<TABLE>表格的HTML语法,将姓名、E-Mail位址、性别、和兴趣的资料,填入表格的各栏位当中显示出来。 程式码,如下∶ <% ELSE %> <% '已经报名 %> <FONT COLOR="#FF0000">报歉 ! 已经报名 !</FONT><br> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>姓名</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>E-Mail位址</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>性别</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>兴趣</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("NAME1"),3) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("EMAIL1") %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("SEX1"),1) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("CLASS1"),2) %></FONT></TD> </TR> </TABLE> <% END IF Conn.Close End Sub %> 最後,使用Conn.Close关闭资料库。 取消报名 按了「取消报名」按钮时,将执行DeleteReg() 副程式。 首先,先寻找到所待取消的报名记录,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。 再使用SELECT的SQL指令查询资料库的资料,於Friend资料表,设定SQL指令,查询E-Mail位址栏位EMAIL符合所输入Request.Form("EMAIL1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。 由「IF RS.EOF THEN ...」判断是否找到所待取消的报名记录,若RS.EOF为TRUE,表示尚未报名,则显示「找不到 ! 尚未报名 !」。 程式码如下∶ <% Sub DeleteReg() Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "BookSamp","sa","" SQL = "SELECT * FROM Friend WHERE EMAIL = '" & Request.Form("EMAIL1") & "'" Set RS = Conn.Execute(SQL) %> <HR> <FONT COLOR="#0000FF">取消报名结果:</FONT><br> <% IF RS.EOF THEN '找不到 ! 尚未报名 ! %> <FONT COLOR="#FF0000">找不到 ! 尚未报名 !</FONT> 若找到所待取消的报名记录,则於Friend资料表,使用「DELETE FROM...」指令删除此笔资料。 接著,显示执行的结果,配合<TABLE>表格的HTML语法,将於Friend资料表删除的资料,填入表格的各栏位当中,以显示出来。 程式码,如下∶ <% ELSE '取消报名 ! %> <FONT COLOR="#FF0000">报名已经取消 !</FONT> <TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> <TR> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>姓名</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>E-Mail位址</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>性别</FONT></TD> <TD ALIGN=CENTER BGCOLOR="#800000"><FONT>兴趣</FONT></TD> </TR> <TR> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(0) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD> <TD BGCOLOR="f7efde" ALIGN= |