购物车源码

2012-01-18 10:28  评论 0 条

<%
'==========================
'购物车类 类名:UserCart
'基本原理:此类用服务器Session变量保存商品数据,商品用一个数组表示.此类里面保存了三中商品价格.
'==========================
Class UserCart
'建立购物车
Sub CreateCart()
Dim CFlag
dim mCart(6,0)
CFlag=CheckCart()
if CFlag=false then
For iCount =LBound(mCart,2) to UBound(mCart,2)
mCart(0,iCount)=""
next
Session("UserCart")=mCart
end if
End Sub
'检查购物车
Public Function CheckCart()
IF IsArray(Session("UserCart")) THEN
CheckCart = true
ELSE
CheckCart = false
END IF
End Function
'检查购物车是否为空
Function CheckEmtpy()
dim mCart
mCart=Session("UserCart")
For i =LBound(mCart,2) to UBound(mCart,2)
if mCart(0,i)<>"" then
CheckEmtpy=false
Exit Function
end if
next
CheckEmtpy=True
End Function
'添加商品
Function AddItem(aID,aName,aPrice1,aPrice2,aPrice3,aCount,aImage)
dim mCart
AddItem=false
if CheckItem(aID)=false then
'无此商品
mCart=Session("UserCart")
For i =LBound(mCart,2) to UBound(mCart,2)
if mCart(0,i)="" then
mCart(0,i)=aID
mCart(1,i)=aName
mCart(2,i)=aPrice1
mCart(3,i)=aPrice2
mCart(4,i)=aPrice3
mCart(5,i)=aCount
mCart(6,i)=aImage
session("UserCart")=mCart
AddItem=true
exit Function
end if
next
i=i+1
Redim preserve mCart(6,i)
mCart(0,i)=aID
mCart(1,i)=aName
mCart(2,i)=aPrice1
mCart(3,i)=aPrice2
mCart(4,i)=aPrice3
mCart(5,i)=aCount
mCart(6,i)=aImage
session("UserCart")=mCart
AddItem=True
Else
'有此商品,则商品数量+1
ModifItem aID,aCount,0
AddItem=True
End if
End Function
'修改商品数量
Sub ModifItem(mID,mCount,mFlag)
'mFlag-标志 0-添加 1-删除,2-修改 3-清空
'mID-商品ID
'mCount-修改商品的数量
dim mCart
mCart = Session("UserCart")
For i =LBound(mCart,2) to UBound(mCart,2)
if mCart(0,i)=mID then
select case mFlag
case 1
mCart(5,i)= mCart(5,i)-mCount
case 0
mCart(5,i)= mCart(5,i)+mCount
case 2
if mCount=0 then
mCart(5,i)=0
mCart(0,i)=""
else
mCart(5,i)=mCount
end if
case 3
mCart(5,i)=0
mCart(0,i)=""
end select
session("UserCart")=mCart
exit Sub
end if
next
End Sub
'查看推车
Function ViewCart()
dim mCart
mCart=session("UserCart")
ViewCart=mCart
End Function
'检查商品
Function CheckItem(cID)
dim mCart
mCart =Session("UserCart")
For i =LBound(mCart,2) to UBound(mCart,2)
if mCart(0,i)=cID then
CheckItem=True
exit Function
end if
next
CheckItem=false
End Function
'清空购物车
Sub RemoveAll()
dim mCart
mCart = Session("UserCart")
For i =LBound(mCart,2) to UBound(mCart,2)
mCart(0,i)=""
next
Session("UserCart")=mCart
End Sub
'商品总价值
Function TPrice()
dim mCart,i
dim OutPrice(3)
mCart=session("UserCart")
for i=LBound(mCart,2) to UBound(mCart,2)
if mCart(0,i)<>"" then
Outprice(0) = Outprice(0) + mCart(2,i)*mCart(5,i)
Outprice(1) = Outprice(1) + mCart(3,i)*mCart(5,i)
Outprice(2) = Outprice(2) + mCart(4,i)*mCart(5,i)
Outprice(3) = OutPrice(3) + mCart(5,i)
end if
next
TPrice=OutPrice
End Function
End Class
'=================================================
'建立购物车对象,该对象用于直接在程序中调用
'=================================================
dim uCart
set uCart= new UserCart
uCart.CreateCart
%>

使用:
第1
'=================================================
'建立购物车对象,该对象用于直接在程序中调用
'=================================================
dim uCart
set uCart= new UserCart

第二
建立一个购物车
uCart.CreateCart       (可以重复建立,因为里面有IsArray判断。所以建议这句在建立购物车对象后必写)

第三
增加购物车里的商品,在客户端点了某产品后,服务器端处理的ASP文件中接受传过来的产品标志,并访问数据库。分别把AddItem(aID产品标

志如ID,aName产品名称,aPrice1产品价格一,如单价,aPrice2产品价格二如会员价,aPrice3产品价格三如金牌会员价,如果没这么多可以置空

或置0,aCount购买数量,一般是一个,多个的话后面可以用修改函数修改,aImage产品图片地址)
使用方法:aa=uCart.AddItem(aID产品标志如ID,aName产品名称,aPrice1产品价格一,如单价,aPrice2产品价格二如会员价,aPrice3产品价格

三如金牌会员价,如果没这么多可以置空或置0,aCount购买数量,一般是一个,多个的话后面可以用修改函数修改,aImage产品图片地址),返回

true表示成功,false表示失败

第四
增加了以后进如显示页面,就要用到查看购物车
mycart=uCart.ViewCart()
For i =LBound(myCart,2) to UBound(myCart,2)
if myCart(0,i)<>"" then
myCart(0,i) '获取标号
myCart(1,i)  '获取单价
。。。以此类推
end if
next

第五
查看了,可以修改购物车,如更改数量等,或是删除其中的
call uCart.ModifItem(mID唯一标志号,mCount产品数量,mFlag-标志 0-添加 1-删除,2-修改 3-清空)    '先用给后面参数赋值
修改其中的商品
可以用第四个显示,先接受session的值,然后循环修改

或清空购物车
uCart.RemoveAll()

然后结帐,很简单
myprice=uCart.TPrice()
然后myprice(0)是产品单价的总价格,myprice(1)是产品会员价的总价格,myprice(2)是高级会员的总价格,myprice(3)是产品总数量

将商品装入购物车,这时需要用cookie或session来做一个不同页面间传递的全局变量,也就是说关了浏览器(针对session)或清楚了cookie等原因,本次购物车会消失,就象你今天在商场买了一车的东西,最后没结帐,明天肯定没了,又归位了,当然要有特殊需要保存,可以写数据库!所以这里记录的只需要是该商品的相关信息就可以了,这里我们记录他的 物品ID, 物品单价, 物品名称, 物品数量

就得到下面的代码,新建一个buy.asp
<%call buy("1","1","1","1","1")%>
<%Sub Buy(CarName, goodID, goodNum, goodPrice, goodName)%>
<input type="image" src="image/buy.gif" name="Submit" value="购买" title="购买" onClick="writeCookie(<%=CarName%>, <%=goodID%>, <%=goodNum%>, <%=goodPrice%>, <%=goodName%>)">
<%End Sub%>
<script language="javascript">
// Example:

// writeCookie("myCookie", "my name");
//name,购物车名称 value1物品ID, value2物品单价, value3物品名称, value4物品数量
function writeCookie(name, value1, value2, value3, value4)

{

document.cookie = name + "=" + readCookie(name) + "," + escape(value1) + "_" + escape(value2) + "_" + escape(value3) + "_" + escape(value4);
alert ('购买成功');

}
// Example:

// alert( readCookie("myCookie") );
//name购物车名称
function readCookie(name)

{

var cookieValue = "";

var search = name + "=";

if(document.cookie.length > 0)

{

offset = document.cookie.indexOf(search);

if (offset != -1)

{

offset += search.length;

end = document.cookie.indexOf(";", offset);

if (end == -1) end = document.cookie.length;

cookieValue = unescape(document.cookie.substring(offset, end))

}

}

return cookieValue;

}
</script>

然后是购物车查看模块
由于有全局变量的作用,所以什么时候访问都有效,通过读取客户端的cookie或是服务器端的session,就可以了,然后根据id显示出购买的所有商品,就行成购物车了
新建index.asp
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>在线购买</title>
<style type="text/css">
.tb_b {
border-bottom-width: 1px;
border-bottom-style: dotted;
border-bottom-color: #00A600;
}
.tb_t {
border-bottom-width: 1px;
border-bottom-style: dotted;
border-bottom-color: #00A600;
}
.tb_tb {
border-bottom-width: 1px;
border-bottom-style: dotted;
border-bottom-color: #00A600;
border-top-width: 1px;
border-top-style: dotted;
border-top-color: #00A600;
}
.tb_tbl {
border-top-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-style: dotted;
border-bottom-style: dotted;
border-left-style: dotted;
border-top-color: #00A600;
border-bottom-color: #00A600;
border-left-color: #00A600;
}
.tb_bl {
border-bottom-width: 1px;
border-left-width: 1px;
border-bottom-style: dotted;
border-left-style: dotted;
border-bottom-color: #00a600;
border-left-color: #00a600;
}
</style>
<script language="javascript">
// Example:

// alert( readCookie("myCookie") );
//name购物车名称
function readCookie(name)

{

var cookieValue = "";

var search = name + "=";

if(document.cookie.length > 0)

{

offset = document.cookie.indexOf(search);

if (offset != -1)

{

offset += search.length;

end = document.cookie.indexOf(";", offset);

if (end == -1) end = document.cookie.length;

cookieValue = unescape(document.cookie.substring(offset, end))

}

}

return cookieValue;

}

function stringToInteger (inputString)

{

return parseInt(inputString);

}

function isNotaNumber (inputString)

{

return isNaN(inputString);

}

function UpdateCookie(name, value)

{

var vvv="";
vvv=readCookie(name);
vvv=vvv.replace(','+value,"");
document.cookie = name + "=" + vvv;

}

function ModifyCookie(name, valuex, value1, value2, value3, value4)

{

var vvv="";
vvv=readCookie(name);
vvv=vvv.replace(','+valuex,"");
document.cookie = name + "=" + vvv + "," + escape(value1) + "_" + escape(value2) + "_" + escape(value3) + "_" + escape(value4);

}

</script>

</head>

<body>
<table width="800" border="1" align="center" cellpadding="0" cellspacing="0" bordercolorlight="#00A600" bordercolordark="#FFFFFF">
<tr>
<td height="25" align="center"><img src="image/title_ico_01.gif" alt="购物车" width="165" height="68"></td>
</tr>
<tr>
<td height="25"><img src="image/Buy_ico.gif" width="26" height="17"><%=request.Cookies("1")%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="4%" height="25" align="center" class="tb_tb">序号</td>
<td width="44%" align="center" class="tb_tbl">物品名称</td>
<td width="12%" align="center" class="tb_tbl">物品数量</td>
<td width="15%" align="center" class="tb_tbl">物品单价/元</td>
<td width="16%" align="center" class="tb_tbl">物品总价/元</td>
<td width="9%" align="center" class="tb_tbl">操作</td>
</tr>
<%
buylist=request.Cookies("1")
buylist_v=split(buylist,",")
for x=1 to ubound(buylist_v)
buylist_v_v=split(buylist_v(x),"_")
buylist_v_x=buylist_v(x)
if buylist_v(x)<>"" then
buylist_v_v_a=buylist_v_v(0)
buylist_v_v_b=buylist_v_v(1)
buylist_v_v_c=buylist_v_v(2)
buylist_v_v_d=buylist_v_v(3)
%>
<tr onMouseOver="this.style.backgroundColor='#F0FFEC'" onMouseOut="this.style.backgroundColor=''">
<td height="25" align="center"  class="tb_b"><%=x%>
<input type="hidden" name="ID_<%=x%>" value="<%=buylist_v_v_a%>"></td>
<td align="center"  class="tb_bl"> <%=buylist_v_v_c%>
<input type="hidden" name="buy_<%=x%>" value="<%=buylist_v(x)%>"></td>
<td align="center"  class="tb_bl"><input name="textfield" type="text" size="10" value="<%=buylist_v_v_d%>" onChange="if(isNotaNumber(this.value)==true){alert('请输入整数数字');this.value=1;}else{this.value=stringToInteger(this.value);};ModifyCookie('1','<%=buylist_v(x)%>','<%=buylist_v_v_a%>','<%=buylist_v_v_b%>','<%=buylist_v_v_c%>',this.value);"></td>
<td align="center"  class="tb_bl"> <%=buylist_v_v_b%></td>
<td align="center"  class="tb_bl"> <%=buylist_v_v_b*buylist_v_v_d%></td>
<td align="center"  class="tb_bl"><input type="button" name="Submit" value="放弃" onClick="UpdateCookie('1', buy_<%=x%>.value);location.href='?';"></td>
</tr>
<%
end if
next
%>
</table></td>
</tr>

<tr>
<td height="25" align="center"><img src="image/okay.gif" width="60" height="25"> <img src="image/cancel.gif" width="60" height="25"></td>
</tr>
</table>
</body>
</html>

本文地址:http://blog.zd178.com/?p=608
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
新年快乐
新年快乐

发表评论


表情