摘 要: 購(gòu)物車模塊是電子商務(wù)網(wǎng)站主要的核心模塊。介紹了常用的購(gòu)物車的設(shè)計(jì)技術(shù),運(yùn)用ASP中的Session對(duì)象實(shí)現(xiàn)購(gòu)物車的功能,并給出了重要部分的源代碼。
關(guān)鍵詞: 購(gòu)物車;Cookie對(duì)象;Session對(duì)象
1 購(gòu)物車簡(jiǎn)介
購(gòu)物車是電子商務(wù)網(wǎng)站與用戶交互的重要模塊,購(gòu)物網(wǎng)站要完成購(gòu)買轉(zhuǎn)化率,除了要有豐富、適合消費(fèi)者需求的產(chǎn)品外,對(duì)于購(gòu)物車的設(shè)計(jì)也要做到操作簡(jiǎn)便、流程清晰、付款方便等特點(diǎn)。它的主要作用是臨時(shí)存放用戶的購(gòu)物信息,用戶可以隨時(shí)增加商品、修改數(shù)量、刪除商品等操作。購(gòu)物車設(shè)計(jì)得好與壞,直接決定了用戶購(gòu)買的積極性,對(duì)于網(wǎng)站轉(zhuǎn)化率而言具有舉足輕重的意義。
2 購(gòu)物車設(shè)計(jì)方法
購(gòu)物車的內(nèi)容其實(shí)就是客戶的訂單的信息存放在哪里,用什么技術(shù)來(lái)進(jìn)行存放?一般購(gòu)物車的設(shè)計(jì)方法有以下三種:
(1)Cookie對(duì)象設(shè)計(jì)方法
Cookie是通過(guò)服務(wù)器端CGI、腳本或者客戶端腳本把信息保存在客戶機(jī)上,以便為服務(wù)器或客戶機(jī)再次使用這些信息提供方便。使用Cookie來(lái)保存購(gòu)物車信息的優(yōu)點(diǎn)是:即使當(dāng)用戶不小心關(guān)閉了瀏覽器窗口,購(gòu)物車中的信息也不會(huì)丟失,并且它占用很少的服務(wù)器端資源。缺點(diǎn)是:必須要求用戶端瀏覽器支持Cookie并且打開(kāi)它,如果用戶端瀏覽器不支持Cookie或者沒(méi)有打開(kāi)Cookie,則購(gòu)物功能就不能實(shí)現(xiàn)。
(2)Session對(duì)象設(shè)計(jì)方法
Session對(duì)象用于存儲(chǔ)特定用戶會(huì)話所需的信息。Session對(duì)象是在每一位訪問(wèn)者從Web站點(diǎn)或Web應(yīng)用程序中首次請(qǐng)求一個(gè)ASP頁(yè)時(shí)創(chuàng)建的,它將保留到默認(rèn)的期限結(jié)束或通過(guò)腳本設(shè)置中止的期限。這樣,當(dāng)用戶在應(yīng)用程序的Web頁(yè)之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session對(duì)象中的變量將不會(huì)丟失,而是在整個(gè)用戶會(huì)話中一直存在下去。利用Session的功能,可以將購(gòu)物信息(商品ID和購(gòu)買數(shù)量)存儲(chǔ)到Session變量中。
(3)數(shù)據(jù)庫(kù)的應(yīng)用設(shè)計(jì)方法
將用戶的購(gòu)物信息存入臨時(shí)表單的臨時(shí)文件中,當(dāng)用戶下訂單時(shí)再刪除臨時(shí)記錄并將信息保存在數(shù)據(jù)庫(kù)中。但這種方法需要頻繁地與數(shù)據(jù)庫(kù)或文件進(jìn)行數(shù)據(jù)交換,占用了大量的系統(tǒng)資源,對(duì)于大型網(wǎng)站,服務(wù)器的負(fù)擔(dān)過(guò)重,顯然這種辦法不合適。
以上三種購(gòu)物車的設(shè)計(jì)方法,各有利弊,本文重點(diǎn)介紹Session實(shí)現(xiàn)“購(gòu)物車”設(shè)計(jì)與實(shí)現(xiàn)。
3 Session購(gòu)物車設(shè)計(jì)與實(shí)現(xiàn)
(1)顯示購(gòu)物車
?、倥袛噘?gòu)物車是否為空。為空結(jié)束,不為空則調(diào)用數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中顯示保存在Session中變量商品ID的數(shù)量、價(jià)格等。
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
strsql="select * from shangpin where ID in ("&Session("ProductList")&") order by ID"′查詢保存在Session里的變量 ProductList(商品ID)
rs.open strsql,conn,1,1
%>
?、谂袛嘣摽蛻羰欠駷榈谝淮钨?gòu)物。根據(jù)從表單接收的商品數(shù)量是否為0來(lái)判定。
Quatity=Request.Form("Q_"& rs("ID")) ′接收表單提交的商品數(shù)量
下面表單部分介紹使用這種接收方法的目的:
If Quatity <= 0 Then ′判斷是否第一次購(gòu)物
(商品數(shù)量為什么會(huì)小于零,前面不是定義商品數(shù)量初始值為1了嗎?這是變量 Quatity 重復(fù)賦值的問(wèn)題)
′雖然定義過(guò)商品的數(shù)量,但是若又接收表單提交的商品數(shù)量,如果是第一次購(gòu)買商品的話,變量Quatity不會(huì)在接收表單時(shí)被賦予任何值
′Quatity=Session(rs("ID"))′對(duì)應(yīng)變量Quatity
進(jìn)行賦值(以前存儲(chǔ)的商品數(shù)量)
If Quatity<=0 Then Quatity=1′ 如果該商品是用戶第一次購(gòu)買,數(shù)量為1
End If
Session(rs("ID"))=Quatity′將商品數(shù)量存入Session里
Sum=Sum+rs("huiyuan")*Quatity′累加器的效果
(新價(jià)格總記=舊價(jià)格總記+商品價(jià)格×商品數(shù)量)
(2)購(gòu)物車中的商品及數(shù)量的修改
設(shè)計(jì)一變量Productlist,將多個(gè)商品ID以逗號(hào)分隔,組成一個(gè)字符串存放在變量中,運(yùn)用Vbscript中的函數(shù) Split,對(duì)字符串進(jìn)行拆分。
ProductList=Session("ProductList")′取得Session中的值(N個(gè)商品ID)賦值給變量ProductList
Products=Split(Request("Prodid"),",")′以逗號(hào)分割,賦值給變量Products(此時(shí)變量Products以數(shù)組形式存在)
For I=0 To UBound(Products) ′按數(shù)組的最大下標(biāo)進(jìn)行循環(huán)
PutToShopBag Products(I),ProductList′ 調(diào)用過(guò)程并返回參數(shù)(商品ID,保存商品ID的變量 ProductList)
Next
Session("ProductList")=ProductList′ 將處理后的變量 ProductList的值寫入到Session中
Sub PutToShopBag(Prodid,ProductList)
′定義過(guò)程,只有調(diào)用時(shí)才可以使用
If Len(ProductList)=0 Then′
如果變量ProductList的值長(zhǎng)度為0(等同與值為空)
ProductList=Prodid′將變量ProductList賦值為商品ID,
也就是第一次購(gòu)物的記錄
ElseIf InStr(ProductList,Prodid)<=0 Then′ 判斷變量ProductList里面是否有商品ID的存在
ProductList=ProductList&","&Prodid &""′多次購(gòu)物,將多個(gè)商品ID以逗號(hào)分隔組成一個(gè)字符串賦值給變量 ProductList
End If
End Sub
If Request(“update”) then
Productlist=””‘清空購(gòu)物車
Products=split(Request(“Prodid”),”’,”)′ 取得表單提交的商品ID并賦值
對(duì)產(chǎn)生的數(shù)組Products運(yùn)用循環(huán),將多個(gè)商品ID以逗號(hào)分隔,組成一串字符串賦值給變量Productlist。
Session(“Productlist”)=Productlist
End if
購(gòu)物車程序是網(wǎng)站商城的一個(gè)小模塊,也是必不可少的模塊。對(duì)于電子商務(wù)網(wǎng)站來(lái)說(shuō),購(gòu)物車的實(shí)現(xiàn)需要根據(jù)實(shí)際情況使用不同的技術(shù)。購(gòu)物車其實(shí)就是簡(jiǎn)單的技術(shù)和復(fù)雜的過(guò)程所構(gòu)成的,一定要在思路上理順關(guān)系,然后運(yùn)用技術(shù)解決。
參考文獻(xiàn)
[1] 鄒天思,孫明麗.ASP數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2006.
[2] 白金榮,鄒國(guó)忠,沐士光.購(gòu)物車功能的實(shí)現(xiàn)[J].科技信息,2009(15).
[3] 田曉玲.基于Session技術(shù)的購(gòu)物車的設(shè)計(jì)與實(shí)現(xiàn)[J].北京化工職業(yè)技術(shù)學(xué)院學(xué)報(bào),2009(1).
