購物推車的設計
購物推車需要三個要素:一個VBScript 5的類class CartKit,一個多維陣列mudCart,一個session變數Session("Cart")。
這個VBScript 類,我們稱為CartKit,包含了8個方法,如上表所示。在本文我們只用了ID和Qty,分別表示商品編號和數量。
這樣我們就可以用一個二維數組來表達這個推車,象下面這樣:
商品編號 商品數量
ID-1 23
ID-3 10
ID-23 6
ID-2 1
然後我們把這個二維數組儲存到session變數中就可以了。
購物推車類CartKit的設計
請下載:CartKit.asp
CreateCart設計:
請看程式碼:
Class CartKit REM 開始類CartKit的定義
Sub CreateCart()
IF IsArray(Session("Cart")) = false THEN
Dim mudCart(19,1)
Session("Cart") = mudCart
END IF
End Sub
其中:Session("Cart")儲存的就是推車的內容。如果推車不存在,我們就定義一個二維數組mudCart來表達推車,並將它儲存到session("Cart")中。
CheckCart設計:
本函數判斷Cart是否已經建立。比較簡單。
Function CheckCart()
IF IsArray(Session("Cart")) THEN
CheckCart=True
ELSE
CheckCart=False
END IF
End Function
CheckItem設計:
請看代碼:
Function CheckItem(ID)
IF CheckCart=True THEN
varMudCart = Session("Cart")
FOR i = LBound(varMudCart)TO UBound(varMudCart)
IF varMudCart(i,0) = ID THEN
CheckItem=TRUE
Exit Function
ELSEIF varMudCart(i,0) <> ID THEN
CheckItem=FALSE
END IF
NEXT
END IF
End Function
首先判斷推車是否存在。然後將商品的編號ID和購物推車中的商品編號逐一比較。如果有相等的,返回真。否則為假。
AddItem(ID,Qty)設計:
請參考本文的附件CartKit.asp,這裡介紹的函數我們把它們封裝到一個名為CartKit的class中。下面的程式碼片段首先建立了一個CartKit對象,然後檢查推車是否已經存在。如果不存在,就建立推車並新增商品;否則,檢查商品編號是否已經存在於Cart中。如果是,就更新數量;否則,新增商品。
Function AddItem(ID, Qty)
Set CartObj = New CartKit
varCartStatus = CartObj.CheckCart
IF varCartStatus=false THEN
CartObj.CreateCart
mudCart=Session("Cart")
mudCart(0,0)=ID
mudCart(0,1)=Qty
Session("Cart")=mudCart
Exit Function
ELSEIF varCartStatus=true THEN
IF CartObj.CheckItem(ID) = true THEN
CartObj.UpdateItem ID,Qty
ELSEIF cartObj.CheckItem(ID) = false THEN
mudCart = Session("Cart")
FOR i = LBound(mudCart) TO UBound(mudCart)
IF mudCart(i,0) = "" THEN
mudCart(i,0) = ID
mudCart(i,1) = Qty
Session("Cart") = mudCart
Exit Function
END IF
NEXT
END IF
END IF
End Function
UpdateItem設計:
Function UpdateItem(ID, Qty)
mudCart = Session("Cart")
FOR i = LBound(mudCart) TO UBound(mudCart)
IF mudCart(i,0) = ID THEN
mudCart(i,1) = Qty
Session("cart")=mudCart
Exit Function
END IF
NEXT
End Function
ViewItem設計:
Function ViewItem()
mudCart=Session("Cart")
IF isArray(mudCart) THEN
%>
<table>
<tr>
<td>Item Name</td>
<td>Item Quantity</td>
<td></td>
</tr>
<%
FOR i = LBound(mudCart) TO UBound(mudCart)
IF mudCart(i,0) <> "" THEN
%>
<tr>
<td><%=%></td>
<%
Response.Write "Item ID: " & mudCart(i,0) & "<--"
Response.Write "<BR>"
Response.Write "Item Qty: " & mudCart(i,1) & "<--"
Response.Write "<BR>"
END IF
NEXT
ELSEIF isArray(mudCart) = False THEN
Response.Write "No item in your cart!"
Response.Write "<BR>"
Response.Write "Y don’t you do shop!"
END IF
End Function
RemoveItem(ID)設計:
Function RemoveItem(ID)
mudCart=Session("Cart")
’Find the Postion / Index of given ID.
For i = LBound(mudCart) TO Ubound(mudCart)
IF mudCart(i,0) = ID THEN
Pos=i
Exit For
END IF
Next
’Delete Process...
FOR i = Pos TO UBound(mudCart) - 1
IF Not mudCart(i,0) = "" THEN
mudCart(i,0) = mudCart(i+1,0)
END IF
Next
End Function
End Class REM 結束類CartKit的定義