zoukankan      html  css  js  c++  java
  • 【精华】asp购物车原理及其源代码

    <%
    '==========================
    '购物车类 类名: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
    %>

    使用:
    第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, 物品单价, 物品名称, 物品数量

    <!--#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>


     

  • 相关阅读:
    Java 简单算法--打印乘法口诀(只使用一次循环)
    Java简单算法--求100以内素数
    ubuntu 16.04 chrome flash player 过期
    java 网络API访问 web 站点
    java scoket (UDP通信模型)简易聊天室
    leetcode1105 Filling Bookcase Shelves
    leetcode1140 Stone Game II
    leetcode1186 Maximum Subarray Sum with One Deletion
    leetcode31 Next Permutation
    leetcode834 Sum of Distances in Tree
  • 原文地址:https://www.cnblogs.com/cosiray/p/1630858.html
Copyright © 2011-2022 走看看