asp购物车类及修改

类来自网络,但有几个缺点,不断修改中

shop_class_inc.asp

————————————————————————————————————

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'==========================
'购物车类 类名:UserCart
'作者:gameing
'基本原理:此类用服务器Session变量保存商品数据,商品用一个数组表示.此类里面保存了三中商品价格.

'1、2008-11-25修改Function AddItem()  by tommy 商品增加在最后
'2、2008-11-25修改by tommy 增加删除商品过程 Sub DelItem()
'3、2008-11-25转换一些数据类型才能运算
'==========================
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)  '2008-12-25改进 by tommy 商品增加在最后
        dim mCart
        AddItem=false
        if CheckItem(aID)=false then
            '无此商品
            mCart=Session("UserCart")
            i =UBound(mCart,2)
            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 DelItem(mID)  '改进2008-12-25by tommy 增加删除商品过程
        dim mCart
  response.Write(mID)
        mCart = Session("UserCart")
  mount=UBound(mCart,2)
  If mID=mount Then
     mount=mount-1
     mCart(0,mount+1)=""
     ReDim Preserve mCart(6,mount)
  Else
     mount=mount-1
     For i=mID To mount
         For j=0 To 6
            mCart(j,i)=mCart(j,i+1)
      Next
     Next
     mCart(0,mount+1)=""
     ReDim Preserve mCart(6,mount)
    End If
       session("UserCart")=mCart
 End Sub
 
    '修改商品数量 
    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(0,i)=Int(mCart(5,i))-Int(mCount)
                case 0
                    mCart(5,i)= Int(mCart(5,i))+Int(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) = Int(Outprice(0)) + Int(mCart(2,i))*Int(mCart(5,i))
                Outprice(1) = Int(Outprice(1)) + Int(mCart(3,i))*Int(mCart(5,i))
                Outprice(2) = Int(Outprice(2)) + Int(mCart(4,i))*Int(mCart(5,i))
                Outprice(3) = Int(OutPrice(3)) + Int(mCart(5,i))
            end if
        next
        TPrice=OutPrice
    End Function
End Class

%>

————————————————————————————————————————————

shop.asp


--

<!--#include file="shop_class_inc.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
</script>
</head>

<body>
<form name="form1" action="shop.asp" method="post">
产品Id:<input type="text" name="produceId" />
产品名称:<input type="text" name="produceName" />
产品单价:<input type="text" name="producePrice" />
产品数量:<input type="text" name="buynum" />
<input type="submit" />
</form>
<br>
<%
dim uCart
If isEmpty(uCart) Then
 set uCart= new UserCart
 uCart.CreateCart
End If
action=request("action")
If action="" Then
 Dim aId,aName,aPrice,aCount
 aId=request.Form("produceId")
 aName=request.Form("produceName")
 aPrice=request.Form("producePrice")
 aCount=request.Form("buynum")
 aa=uCart.AddItem(aId,aName,aPrice,0,0,aCount,0)
ElseIf action="del" Then
    aId=request("produceId")
 aa=uCart.DelItem(aId)
 response.Redirect("shop.asp")
End If
myCart=uCart.ViewCart
%>
<table border="1">
  <tr>
    <th>产品编号</th>
    <th>产品名称</th>
    <th>产品价格</th>
    <th>产品数量</th> 
    <th>操作</th> 
  </tr>
<%
For i=LBound(myCart,2) To UBound(myCart,2)
 If myCart(0,i)<>"" Then '以前的判断语句
%>
<tr>
   <td><%=MyCart(0,i)%></td>
   <td><%=MyCart(1,i)%></td>
   <td><%=MyCart(2,i)%></td>
   <td><%=MyCart(5,i)%></td>
   <td><a href="shop.asp?action=del&produceId=<%=MyCart(0,i)%>" οnclick="return confirm('你确定要删除吗?');">删除</a></td>
</tr>
<%
 End If
Next
myprice=uCart.TPrice()
%>
<tr>
   <td>总价格:<%=myprice(0)%></td>
   <td colspan="3">产品总数量:<%=myprice(3)%></td>
</tr>
</table>
<br>
<br>
</body>
</html>

使用: 第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, 物品单价, 物品名称, 物品数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值