本教程适用于高级的UltraDev用户,你必须具备一些基本的知识,如果你还对UltraDev不熟悉,那么请先打好基础。你学习本教程你必须熟悉怎样创建记录集(recordsets)、重复区域(repeat regions)以及表单(forms)。本教程没有一步一步地教你,而是只是粗略地介绍店面的的制作。
创建一个电子商务应用程序有难以置信的选项范围。在本教程中不可能覆盖所有的内容,所以在本教程中我将向你介绍我所成功使用的一种方法。你要尽力使用适于你使用的方法来满足你的商业模型以及数据库的设计。我将详细介绍每一个主要页面、数据绑定以及服务器行为,这样你就可以很清楚地知道每一网页实现的功能。当看不见的内容(比如隐藏的区域以及加到网页的ASP代码),我已经在屏幕上圈上了圆圈并用数字标志了它。在屏幕下面是每一项内容的解释。
本教程适用的数据库是SQL Server 7。所以你需要对基本的关系型数据库的设计比较熟悉,并且如果你知道如何写存储过程那将是很有用的。
在开始电子商务项目之前,你应该坐下来用纸张和铅笔来描述以下的内容。这些是为从页到页创建正确的流程的几个你必须要回答的问题。
1.这个网站是否对所有的人开放,或者只对有会员资格的开放。如果没有会员资格,你必须强迫他(她)首先访问初始的注册网页,使他(她)先成为会员,再访问网页的其它内容;或者通过COOKIES来将用户信息保存到用户的的个人电脑中。
2.你的产品是否有不同的颜色或者尺寸?
3.你是再哪儿获得顾客的信息(比如发票地址、转运地址、信用卡信息等等)?
4.你是否需要负责装运费用、销售税等等?
注册页面
特定的商店应用程序是一个只有成员可以访问的店面,它需要用户再访问商店之前先注册。在本教程中使用标准的注册页面,如图1 所示,其上面有CustomerID(用户ID)和Password(用户密码),如果注册成功,这两项内容起到重定向到Search.asp的作用;如果注册失败则连接到LoginFailed.asp上,并且recordset(记录集)是空的。当用户注册了,几项内容(如CustomerID、FullName)将被写到Session变量中去,这样它们将在以后的使用中可以维护。通过服务器数据绑定可以创建Session变量,如图2所示。这些变量在整个网站中将以有效的Session变量出现。这些Session变量在之后将被插入到Orders表中。
|||||
|
注册检验代码在Login.asp网页中,该网页同时创建Session变量用于以后之用。这些代码评估表单数值是否传给网页中的存储过程以创建一个记录集(recordset),如果是这样的话,Session变量将从记录集区域数值中创建。如果不是的话,将被连接到LoginFailed.asp注册失败的网页。具体顾客注册代码如下:
<%
If rsLogin__CustomerID <> "zzz" Then
If Not rsLogin.EOF Then
Session ("CustomerID") = (rsLogin.Fields.Item("CustomerID").Value)
Session ("FirstName") = (rsLogin.Fields.Item("FirstName").Value)
Session ("LastName") = (rsLogin.Fields.Item("LastName").Value)
Session ("FullName") = (rsLogin.Fields.Item("FullName").Value)
Session ("Class") = (rsLogin.Fields.Item("Class").Value)
Session ("Email") = (rsLogin.Fields.Item("Email").Value)
Session ("Voicemail") = (rsLogin.Fields.Item("Voicemail").Value)
If (rsLogin.Fields.Item("Logins").Value) > 0 Then
Response.Redirect ("../store/Search.asp")
Else
Response.Redirect ("EditUser.asp")
End If
Else
Response.Redirect ("LoginFailed.asp")
End If
End If
%>
而顾客注册存储过程代码如下:
Alter Procedure spCustomerLogin
@CustomerID varchar(25),
@Password varchar (25)
As
set nocount on
SELECT CustomerID, FirstName, LastName, (FirstName + ' ' + LastName) AS FullName, Class, Address1, Address2, City, PostalCode, State, Room, Building, AccessLevel
FROM Customers
WHERE CustomerID = @CustomerID
AND Password = @Password
return
||||||
搜索页面
|||||| 如图3所示,Search.asp页面包含了两个动态的列表框,一个用于供应者,一个用于设备分类。这两个都允许多重选择。这两个列表框中的数值将被传递给List.asp网页中的存储过程。这个搜索网页使用了动态存储过程来评估可能的多重列表框数值并在IN程序语句中创建正确的AND/OR操作。(动态存储过程搜索的过程将在下一教程中提到)。如图4所示你将可以看到基本的页面布局以及页面的数据绑定和服务器行为。当然你也可以看到存储过程为两个动态的列表框创建记录集(命名为SupplierID以及CategoryID),这个记录集将它们的数值传递给在List.asp和Details.asp网页的存储过程。
具体的分类存储过程代码如下:
Alter PROCEDURE spCategory
AS
set nocount on
SELECT CategoryID, Category
FROM Category
WHERE Active = 1
ORDER BY Category
而供应商列表存储过程代码为:
Alter PROCEDURE spSuppliersActive
AS
set nocount on
SELECT CompanyName AS Company, URL, SupplierID, CurrentOrder, SizeURL
FROM Suppliers
WHERE (CurrentOrder = 1)
ORDER BY Suppliers.Company