电子商务网站建设教程第14章.ppt
- 文档编号:4856884
- 上传时间:2023-05-07
- 格式:PPT
- 页数:101
- 大小:25.51MB
电子商务网站建设教程第14章.ppt
《电子商务网站建设教程第14章.ppt》由会员分享,可在线阅读,更多相关《电子商务网站建设教程第14章.ppt(101页珍藏版)》请在冰点文库上搜索。
第14章集成的购物车系统,14.1系统功能与组成14.2数据库设计14.3实现商品搜索功能14.4实现专门的放入购物车功能14.5完善购物车系统14.6实现下订单功能14.7本章摘要与重点回顾,本章讲解顾客购物系统的实现方法,以此引入更多的知识点和技巧。
一个真正的购物系统,其商品达到一定的数量,通过单纯的浏览功能找到一件商品是相当辛苦和损害视力的苦差使。
因此,提供根据特定条件搜索商品的功能是必不可少的,类似的搜索功能会在大多数电子商务网站上看到。
一个初级的商品搜索功能,提供顾客单纯的搜索,可以让顾客输入一定的条件来查到符合条件的商品,再根据查到的信息到购物功能的页面输入查到的商品信息来购物,也就是说,搜索和购物是分离的。
14.1系统功能与组成,更加方便的做法是把搜索和购物功能结合在一起,在搜索到的商品里直接提供了对商品的操作,比如选购,这样会更方便,当然实现起来也需要更多的技巧。
本章将先介绍实现初级的搜索功能,然后再把它改造得更加方便。
搜索到具体商品后,顾客可以通过购物页面来选择某一件商品,选购可能成功,也可能不成功,当库存数为空,再试图选择某商品时,选购也可能失败。
购物过程中,顾客可能想看一下到目前为止选了哪些商品,这个功能即典型的电子商务网站上的购物车功能。
回顾网上书店的整体数据库设计,如图14-1所示。
与本章密切相关的是ShopingCart表,该表用来存储顾客购物车的信息,也就是顾客到目前为止选了哪些商品,但这些商品仍未结账,其中各字段的意义如下。
Username:
字段类型为“字符型”,长度为20,存放内容为“顾客的账号”,用于区分不同顾客的购物车。
14.2数据库设计,图14-1网上书店的整体数据库结构,ProductID:
字段类型为“字符型”,长度为10,存放内容为“商品代码”,用于表示哪个商品放在购物车里。
Quantity:
字段类型为“整数型”,长度为4,存放内容为“该商品的数量”。
由于商品的其他信息在Catalog表里都有,因此ShopingCart表用这些字段就够了。
ShopingCart表以Username和ProductID为主键。
另一个与本章密切相关的是Order表,该表用来存储顾客的订单信息,也就是顾客最终购买了哪些商品。
其中各字段的意义如下。
OrderID:
字段类型为“字符型”,长度为10,存放内容为“一次购买的订单号”。
Username:
字段类型为“字符型”,长度为20,存放内容为“顾客账号”,说明是哪个顾客的订单。
ProductID:
字段类型为“字符型”,长度为10,存放内容为“商品代码”,用于表示购买了哪个商品。
Quantity:
字段类型为“整数型”,长度为4,存放内容为“该商品的数量”。
Listprice:
字段类型为“数值型”,长度为9,小数为2,存放内容为“该商品的单价”。
Orderdate:
字段类型为“日期型”,长度为8,存放内容为“下单的日期时间”。
由于商品的其他信息在Catalog表里都有,因此Order表用这些字段就够了。
Order表以OrderID和ProductID为主键,从商务的角度讲,订单号的编码规则必须保证OrderID是惟一的,任意两个订单的订单号都不能相同。
虽然在Catalog表里也有Listprice字段,但还要放进Order表中,这是因为Catalog表的商品单价随着时间的变化和促销手段的变化是会变的,而Order表中的商品单价,一旦下单就以下单时的单价为准而不变了。
因此凡是Catalog里需要瞬时定价不变的那些字段都应该放入Order表。
具体哪些字段应放入Order表,视商务应用设计的需要而定,对这个例子来说,认为Listprice是需要瞬时定价的。
在本节中将讨论以下4个问题:
如何使用高级方式的定义复杂的记录集;如何在记录集定义的SELECT语句中引用表单元素值;【显示区域】服务器行为;SELECT语句的具体应用。
14.3实现商品搜索功能14.3.1实现基本的搜索功能,这一节将给网上书店添加初级的搜索功能,能够让顾客按照关键字来搜索商品,具体实现的操作步骤如下。
1)创建商品搜索页面先创建一个新的支持ASPVBScript的动态页面。
2)定义购书系统的数据库连接由于同一应用可以共享数据库连接,因此这个页面仍然可以使用PurchaseSys数据库连接,不需要另外定义。
3)创建页面布局和页面元素,
(1)在新页面中加入如图14-2所示的基本元素,其中标题和其他静态部分,读者都可以根据自己的喜好用前面各章节描述的创作静态页面的方法来设计,使页面美观实用。
图14-2搜索商品的网页页面,表单部分是必须有的,用它来生成动态行为,如图14-2所示,添加一个表单,表单包含的元素类型和属性如表14-1所示。
表14-1表单元素类型、属性和说明见书323页。
(2)选择主菜单中的【文件】|【保存】命令,把这个页面保存到PurchaseSys子目录下,取名为searchcatalog.asp。
4)创建搜索结果页面先创建一个新的支持ASPVBScript的动态页面,保存为searchresult.asp。
5)定义购书系统的数据库连接由于同一应用可以共享数据库连接,因此这个页面仍然可以使用PurchaseSys数据库连接,不需要另外定义。
6)定义传递参数用的表单元素在【应用程序】浮动面板的【绑定】选项卡中,定义【名称】的类型为“请求”的请求变量“txtName”。
图14-3【记录集】对话框,7)创建搜索用的记录集rstSearchResult
(1)创建一个复杂的查询记录集,这个记录集将用于在提交表单后,真正的执行数据库查询功能。
如图14-3所示,在【记录集】对话框中,单击【高级】按钮,进入高级【记录集】对话框,如图14-4所示。
(2)在高级【记录集】对话框中,设置各个选项。
【记录集】对话框中的【名称】和【连接】两项参数的设置不需要再作解释,完成如图14-4所示的设置即可。
(3)高级记录集是基于高级SQL查询语句SELECT的。
首先,在变量设置区域中添加在SELECT语句中需要用到的变量,使用变量可以方便地引用表单元素的值。
图14-4高级【记录集】对话框,在这里变量有两类值:
【默认值】和【运行时值】。
【默认值】在表单提交前起作用,因为此时表单元素还没有有效的值,同时它还在测试时起作用,如果单击【测试】按钮,出现的查询结果就是以默认值为条件填入上面的SQL语句所得到的查询结果。
【运行时值】通常都是用表单元素值,在表单提交后起作用,当然,也可以用别的动态值。
这里添加的变量如表14-2所示。
表14-2变量的值和说明见书324页。
要点提示:
可以通过设置不同的默认值来测试复杂记录集的运行效果。
(4)接下来是到目前为止最难的一个任务,即编写SELECT查询语句,把它填入【SQL】文本框中,文本框中的完整的语句如下:
SELECT*FROMdbo.CatalogWHERE(NameLIKE%+LTRIM(RTRIM(mmNameStr)+%)OR(DescriptionLIKE%+LTRIM(RTRIM(mmNameStr)+%),变量在SQL语句中作为字符串值出现。
%是SQL字符串模式中的一个通配符,它能够与任何字符串等值。
加号用于连接两个字符串,并不表示做加法的意思。
因此,形式为“%+字符串A+%”的含义为包含字符串A的任何字符串。
“字符串ALIKE字符串B”的意思为:
字符串A符合字符串B的形式。
表单未提交时,应该一条记录都查不到才对。
因此,mmNameStr的默认值设为XXXXXXXXXX,一般商品名称和描述中不会有这样的字样,以便基本能保证表单未提交时,即使通过URL全路径直接访问该结果页面,找到的商品列表也是空的。
LTRIM和RTRIM两个函数联用,用于去掉字符串左右两边的空格,因为空格也算作字符串的一部分,因此在字符串的比较中如果不去掉两边的空格,那么Newton和Newton将被认为是不同的值,这显然不是用户所期望的。
忘了去掉两边的空格,这是初学者常犯的错误之一。
整个查询条件的含义是,返回Catalog表中所有Name字段包含txtName表单元素输入值的,或者Description字段包含txtName表单元素的那些记录。
(5)单击【确定】按钮,完成记录集定义。
8)布局返回结果
(1)在页面中表单的下方,用第13章中所述的服务器行为【重复区域】、【记录集分页】创建如图14-5所示的重复区域和导航条,设置重复区域和导航条时,应选择这些服务器行为针对rstSearchResult记录集起作用。
图14-5检索符合要求的商品列表,
(2)由于希望导航条在没有记录时不要出现,所以还要添加一个【显示区域】类的服务器行为,来控制整个导航条的显示。
在【设计视图】中用鼠标选择导航条,在【应用程序】浮动面板的【服务器行为】选项卡中,单击按钮,选择【显示区域】|【如果记录集不为空则显示区域】命令,可以看到如图14-6所示的对话框,设置参数后单击【确定】按钮。
图14-6【显示区域】类的服务器行为,(3)相反,希望网页下方的“抱歉,没有符合条件的商品!
”这一条提示信息仅在没有记录时出现,因此,还要添加另一个【显示区域】类的服务器行为。
用鼠标选择整行信息后,在【应用程序】浮动面板的【服务器行为】选项卡中,单击按钮,选择【显示区域】|【如果记录集为空则显示区域】命令,可以看到如图14-7所示的对话框,如图设置【记录集】参数为rstSearchResult后,单击【确定】按钮确认。
图14-7【显示区域】类的服务器行为,9)保存页面保存页面并更新主功能页面中的链接,指向搜索页面。
同步站点后,测试一下效果。
从主功能页面选择“搜索特定商品”,将看到如图14-8所示的页面。
查看名称或描述中包含“网络”两字的商品,结果如图14-9所示。
图14-8网站的主功能页面,图14-9商品查询结果,在本节中将介绍以下4个问题:
复习如何使用高级方式介绍定义复杂的记录集;继续使用更复杂的SELECT语句;如何实现多种查询条件;Request、Request.Form、Request.QueryString的区别。
作为一个完善的搜索功能,应该提供多种灵活的搜索方式,下面将扩展搜索功能,使它变得更灵活。
实现搜索功能的操作方法如下。
14.3.2实现复杂的搜索功能,
(1)在如图14-10所示的搜索页面searchcatalog.asp中,调整页面布局,添加表单元素,调整后的表单元素如表14-3所示。
表14-3表单元素类型、属性和说明见书327页。
(2)在【应用程序】浮动面板的【绑定】选项卡中,增加名称为radWhichCriteria和selCategory,类型为“请求”的请求变量。
(3)在结果页面searchresult.asp中,修改如图14-11所示的rstSearchResult记录集的设置。
图14-10搜索商品的网页页面,图14-11【记录集】对话框,其中,添加了用于在SELECT语句中引用表单中selCategory元素值的mmCategoryStr变量和用于引用radWhichCriteria元素值的mmWhichCriteriaStr变量。
另外,SELECT语句变得更加复杂,完整的SELECT语句如下:
SELECT*FROMdbo.CatalogWHERE(mmWhichCriteriaStr=bykeywordAND(NameLIKE%+LTRIM(RTRIM(mmNameStr)+%)OR(DescriptionLIKE%+LTRIM(RTRIM(mmNameStr)+%)OR(mmWhichCriteriaStr=bycategoryANDCategory=mmCategoryStr),由于两种搜索方式只取其一,因此对应的搜索条件表达式用OR连接,搜索条件1如下:
(mmWhichCriteriaStr=bykeywordAND(NameLIKE%+LTRIM(RTRIM(mmNameStr)+%)OR(DescriptionLIKE%+LTRIM(RTRIM(mmNameStr)+%)其中包含两个子条件,必须同时满足才算满足搜索条件1,因此两个子条件用AND相连。
第1个子条件mmWhichCriteriaStr=bykeyword表示单选按钮选中的是“根据关键字搜索”,第2个子条件就是原来那个根据关键字搜索用的搜索条件。
mmCategoryStr和mmWhichCriteriaStr变量的默认值设置,与原来mmNameStr变量的默认值设置目的是一样的,也是为了使搜索页面在未使用条件搜索之前应该不显示任何结果。
要点提示:
可以通过给变量设置不同的默认值的方式,单击【测试】按钮测试记录集的定义效果,即测试SELECT语句的效果。
(4)单击【确定】按钮完成记录集设置。
同步站点后,测试一下效果。
从主功能页面选择“搜索特定商品”,将看到如图14-12所示的页面。
默认情况下根据关键字查询,因此在关键字输入框输入“网络”将查到和前一小节同样的结果。
顾客也可以单击“根据种类查询”单选按钮,并在种类选择菜单中选择想查询的类别,例如“计算机”,即可得到如图14-13所示的结果。
如果输入不符合条件的商品,顾客将看到如图14-14所示的页面。
图14-12搜索特定商品的网页页面,要点提示:
本章只把搜索方式扩展到两个,因为如果要扩展到更多,使用的方法是一样的。
有兴趣的读者可以试一试定义更多的搜索方式。
另外,有关在页之间传递参数的方法,读者可能会产生这样的疑问:
为什么有的地方用Request.Form(“表单元素名”),有的地方用Request(“变量名”)呢?
到底这些写法有什么区别呢?
其实用Request请求变量来引用从表单或URL传递过来的参数时,有3种写法:
Request.Form(“表单元素名”)、Request.QueryString(“表单元素名”)和Request(“变量名”)。
图14-13查找商品的结果信息,图14-14查找商品的结果信息,Request.Form(“表单元素名”)用于获取通过POST方式提交的表单元素值。
Request.QueryString(“表单元素名”)用于获取通过GET方式提交的表单元素值,或者模拟GET方式的URL格式而手工编写的URL中的变量的值。
而Request(“变量名”)则最通用,两种方式的变量值都可以获取。
虽然一般情况下,获取POST方式提交的表单元素值,使用Request或Request.Form形式都可以。
但是,对于使用了【记录集分页】服务器行为的页面,要获取传过来的表单元素值,必须用Request形式。
这是因为DreamweaverMX在实现【记录集分页】,服务器行为的代码时,使用了模拟GET方式的URL来实现重复区域翻页,因此,如果使用Request.Form形式,只能在页面的第一次显示时取到正确的值,而在翻页以后就取不到正确的值了(通过Request.QueryString可以取到)。
在以上步骤中,对于在【应用程序】浮动面板的【绑定】选项卡上定义的请求变量,其实定义不定义都无所谓,并不是必须在【绑定】选项卡定义后才能引用请求变量。
在【应用程序】浮动面板的【绑定】选项卡中定义请求变量的作用是,提供方便的手段,可以在【设计视图】中随时以拖曳的方式来在页面中引用请求变量。
购物车这个名字来自于超级市场,其工作流程是当顾客选到了喜欢的商品后可放入购物车,需要时可显示购物车的信息,更新购物车中的商品信息,最后完成购物后到收银台付款。
购物车要实现的功能主要有:
将商品添加到购物车;显示购物车中的信息;更新或清空购物车中的商品信息。
14.4实现专门的放入购物车功能,在本节中将实现查看购物车的功能,主要讨论以下3个问题:
SELECT语句的深入应用;如何在SELECT语句中指定返回的字段;如何在SELECT语句中连接两个以上的表,返回多个表的内容。
先完成查看购物车商品清单的页面,将商品放入购物车成功后直接显示该页面,其操作步骤如下所述。
14.4.1实现查看购物车的功能,
(1)创建查看购物车页面。
先创建一个新的支持ASPVBScript的动态页面。
(2)定义购书系统的数据库连接。
由于同一应用可以共享数据库连接,因此这个页面仍然可以使用PurchaseSys数据库连接,不需要另外定义。
(3)创建记录集rstCart,定义如下所述。
其中完整的SQL语句为:
SELECTdbo.Catalog.ProductID,dbo.Catalog.Name,dbo.Catalog.Category,dbo.ShopingCart.Quantity,dbo.Catalog.Description,dbo.Catalog.Listprice,dbo.Catalog.ImageFROMdbo.Catalog,dbo.ShopingCartWHEREdbo.Catalog.ProductID=dbo.ShopingCart.ProductIDANDLTRIM(RTRIM(dbo.ShopingCart.Username)=LTRIM(RTRIM(mm_Username),此处SELECT语句又与前面见到的那些不同。
第一,它没有用SELECT*来返回所有的字段,而是依次指定每个返回的字段。
注意:
表和从属字段的写法。
第二,它的返回结果来自两个表,而这两个表通过重叠的ProductID字段连接在一起。
另外,在比较两个字符串值的时候,同样加了LTRIM(RTRIM()来去除左右两边可能有的多余空格,如图14-15所示。
图14-15创建记录集,(4)创建页面布局和页面元素。
按如图14-16所示的布局设置新页面,类似的布局在第13章中已经介绍过。
对于重复区域,这里设置为重复所有记录。
保存页面为showcart.asp。
(5)在mainmenu.asp功能菜单里设置菜单中查看购物车的超链接,使它指向showcart.asp。
同步站点后,测试一下效果。
这里假定放入购物车的功能已经做好,购物车里已经有内容。
做完14.4.2节的操作就满足条件了。
图14-16购物车商品列表,图14-17购物车的内容清单,在本节中复习利用隐藏区域补足新记录的字段,然后实现专门的放入购物车的动作,其操作方法如下所述。
14.4.2完成放入购物车的基本功能,1)创建放入购物车页面先创建一个新的支持ASPVBScript的动态页面。
2)定义购书系统的数据库连接由于同一应用可以共享数据库连接,因此这个页面仍然可以使用PurchaseSys数据库连接,不需要另外定义。
3)定义记录集将modifyCatalog.asp中的记录集rstCatalog复制、粘贴过来直接用。
4)创建页面布局和页面元素
(1)在新页面中,加入如图14-18所示的基本元素。
其中标题和其他静态部分,可以根据自己的喜好来创作静态页面。
表单部分是必须有的,将用它来生成动态行为,如图14-18所示。
添加一个表单,表单包含的元素如表14-4所示。
表14-4表单元素类型、属性和说明见书335页。
图14-18选择商品页面,
(2)选择主菜单中的【文件】|【保存】命令,把这个页面保存到PurchaseSys子目录下,取名为selectcatalog.asp。
5)实现功能
(1)保存选购信息同样是利用【插入记录】服务器行为来实现,设置信息如图14-19所示。
关于设置方法,读者应该已经很熟练了,如果不熟悉,请复习前几章的内容。
(2)将【插入后,转到】页面设置为showcart.asp查看购物车页面。
(3)保存页面。
同步站点,测试一下效果。
测试画面略。
图14-19【插入记录】对话框,在本节中将讨论下述2个问题:
如何查看服务器行为的对应脚本代码;如何扩展【用户身份验证】|【检查新用户名】服务器行为来检查多个字段作为主键的记录。
读者可能已经发现,如果向购物车多次放入同一种商品,会引发错误,浏览器上显示Web服务器内部错误,这是因为Username和ProductID是ShopingCart购物车表的主键,即同一用户的购物车中,每种商品只能出现一次。
14.4.3防止放入重复的商品,为了防止顾客的上述误操作,需要采取检验措施来处理这种情况,操作方法如下。
(1)将如图14-20所示的创建错误信息提示页面,保存为PurchaseSys下的alreadybuy.asp。
(2)打开selectcatalog.asp,放入购物车页面。
(3)添加一个【用户身份验证】|【检查新用户名】服务器行为,并按图14-21所示进行设置。
图14-20错误提示信息页面图14-21【检查新用户名】对话框,要点提示:
检查新用户名。
因为DreamweaverMX没有提供检查多个字段为主键的记录是否已存在的服务器行为,因此此处将利用【检查新用户名】服务器行为,并对DreamweaverMX自动生成的对应的脚本代码做简单的修改,来实现主键是否重复的检查功能。
(4)切换到【代码视图】,并且在【应用程序】浮动面板的【服务器行为】选项卡中,选中刚才添加的【检查新用户名】服务器行为,可以看到对应该服务器行为,DreamweaverMX生成了哪段脚本代码。
(5)找到MM_dupKeySQL=SELECTProductIDFROMdbo.ShopingCartWHEREProductID=&MM_dupKeyUsernameValue&这一句,将它改为:
MM_dupKeySQL=SELECTProductIDFROMdbo.ShopingCartWHEREProductID=&MM_dupKeyUsernameValue&ANDUsername=&CStr(Request.Form(hidUsername)&,这一句脚本语句的作用是生成SELECT语句字符串,待接下来的语句交给数据库来执行。
&运算符用于将两个字符串连接成一个长串。
读者可以自己演算一下,比较原来生成的SELECT语句和修改后生成的SELECT语句,有什么不同。
这样一改,就把检查某商品是否重复的SELECT语句扩展为符合要求的形式,从只检查ProductID字段,改为同时检查ProductID和Username字段。
(6)保存页面selectcatalog.asp。
同步站点,测试一下效果。
当试图向购物车放入车中已经有的商品时,将会得到如图14-22所示的错误提示信息。
图14-22重复购买提示信息,14.5.1集成的搜索和选购功能在本节中将介绍如何在返回结果中集成功能。
到目前为止,搜索功能和选购功能是互相独立的两个功能,如本章开头所述,更加方便的做法是把搜索和选购功能结合在一起,在搜索到的商品清单里直接提供了对商品的操作,比如选购,这样会更方便。
14.5完善购物车系统,现在就通过完善搜索页面来实现这一功能,其操作步骤如下。
(1)打开searchresult.asp。
(2)在重复区域中的返回记录表格中增加一行,在新行中添加一个表单,如图14-23所示,表单包含的元素如表14-5所示。
表14-5表单元素类型、属性和说明见书339页。
图14-23选购符合要求的商品,(3)添加一个如图14-24所示的【插入记录】服务器行为。
(4)保存页面。
同步站点后,测试一下效果。
开始查找之后,返回的商品清单的每一项后都带有一个【我要选购】的按钮,如图14-25所示。
如果用户想要选购商品,只要单击这个按钮即可。
要点提示:
这个选购动作,也要像上一节所述的那样,防止放入重复的商品。
对于具体做法不再赘述,请读者自己来完成这一步。
图14-24【插入记录】对话框,图14-25选购符合要求的商品,在本节中将讨论以下3个问题:
如何手写代码,实现复杂的功能;如何判断页面是被应用服务器正常地执行,还是由于表单提交被执行;UPDATE语句的应用。
14.5.2集成的购物车功能,读者可能早就想问了,如果不允许像购物车添加同一种商品的话,顾客第一次放入购物车的购买数量不够,想再买怎么办?
利用14.5.1节介绍的方法,可以在查看购物车的页面集成更多的功能,包括实现修改购物数量这一功能,其步骤如下。
(1)打
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子商务 网站 建设 教程 14