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