asp购物车原理及其源代码asp

/ / 2018-01-23   阅读:2493
<% '========================== '购物车类 类名:UserCart '作者:Cosiray '基本原理:此类用服务器Session变量保存商品数据,商品用一个数组表示.此类里面保存了三中商品价格. '========================== ...
<%
'==========================
'购物车类 类名:UserCart
'作者:Cosiray
'基本原理:此类用服务器Session变量保存商品数据,商品用一个数组表示.此类里面保存了三中商品价格.
'==========================
Class UserCart
    '建立购物车
    Sub CreateCart()
        dim CFlag,i
        dim mCart(6,0)
        CFlag=CheckCart()
        if CFlag=false then
            For i=LBound(mCart,2) to UBound(mCart,2)
                mCart(0,i)=""
            next 
            Session("User_Cart")=mCart
        end if 
    End Sub
    '检查购物车
    Public Function CheckCart()
        IF IsArray(Session("User_Cart")) Then
            CheckCart=true
        Else
            CheckCart=false 
        End If
    End Function
    '检查购物车是否为空
    Function CheckEmtpy()
        dim mCart,i
        mCart=Session("User_Cart")
        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,i
        AddItem=false
        if CheckItem(aID)=false then
            '无此商品
            mCart=Session("User_Cart")
            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("User_Cart")=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("User_Cart")=mCart
            AddItem=True
        Else
            '有此商品,则商品数量+1
            ModifItem aID,aCount,0
            AddItem=True
        End if
    End Function
    '删除商品数量
    Sub DelItem(mID)  '改进2008-12-25by tommy 增加删除商品过程
        dim mCart,i,j,mount
        response.Write(mID)
        mCart=Session("User_Cart")
        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("User_Cart")=mCart
    End Sub
    '修改商品数量
    Sub ModifItem(mID,mCount,mFlag)
        'mFlag-标志 0-添加 1-删除,2-修改 3-清空
        'mID-商品ID
        'mCount-修改商品的数量
        dim mCart,i
        mCart=Session("User_Cart")
        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("User_Cart")=mCart
                exit Sub
            end if
        next 
    End Sub
    '查看推车
    Function ViewCart()
        dim mCart
        mCart=Session("User_Cart")
        ViewCart=mCart
    End Function
    '检查商品
    Function CheckItem(cID)
        dim mCart,i
        mCart=Session("User_Cart")
        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,i
        mCart=Session("User_Cart")
        For i=LBound(mCart,2) to UBound(mCart,2)
            mCart(0,i)=""
        next 
        Session("User_Cart")=mCart
    End Sub 
    '商品总价值
    Function TPrice()
        dim mCart,i
        dim OutPrice(3)
        mCart=Session("User_Cart")
        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
%>

使用:
第一
'=================================================
'建立购物车对象,该对象用于直接在程序中调用
'=================================================
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, 物品单价, 物品名称, 物品数量

<!--#include file="../inc/Conn.asp"-->
<!--#include file="../Inc/Cls.Common.asp"-->
<!--#include file="../Inc/Cls.Templates.asp"-->
<!--#include file="Cls.UserCart.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>
</head>
<body>
    <form name="form1" action="AddToCart.asp?action=save" 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 action
    action=request("action")    
    If action="save" Then
        Dim aId,aName,aPrice,aCount
        aId=request.Form("produceId")
        aName=request.Form("produceName")
        aPrice=request.Form("producePrice")
        aCount=request.Form("buynum")        
        uCart.CreateCart       
        if uCart.AddItem(aId,aName,aPrice,0,0,aCount,0) then 
            CALL COSIRAY.ErrView("","","<li>添加成功!<script>function Close(){parent.closeWithIframe();}setTimeout(""location.href='AddToCart.asp';Close();"",1000)</script>",1)
        else
            CALL COSIRAY.ErrView("","","<li>操作错误<li>此界面 3 秒钟后自动关闭<script>function Close(){parent.closeWithIframe();}setTimeout(""history.go(-1);Close();"",1000)</script>",0)
        end if
    ElseIf action="del" Then
        aId=request("produceId")
        aa=uCart.DelItem(aId)
        response.Redirect("AddToCart.asp")
    End If
    
    
    if true then 
    dim i,MyPrice,myCart
    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="AddToCart.asp?action=del&produceId=<%=MyCart(0,i)%>" onclick="return confirm('你确定要删除吗?');">
                    删除</a>
            </td>
        </tr>
        <%
        End If
        Next
        MyPrice=uCart.TPrice()
        %>
        <tr>
            <td>总价格:<%=MyPrice(0)%></td>
            <td colspan="3">产品总数量:<%=MyPrice(3)%></td>
        </tr>
    </table>
    <%end if%>
</body>
</html>

我要评论

昵称:
验证码:

最新评论

共0条 共0页 10条/页 首页 上一页 下一页 尾页
意见反馈