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)

            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)

                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,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)

        End If

        Session("User_Cart")=mCart

    End Sub

    '修改商品数量

    Sub ModifItem(mID,mCount,mFlag)

        'mFlag-标志 0-添加 1-删除,2-修改 3-清空

        'mID-商品ID

        'mCount-修改商品的数量

        dim mCart,i)=mID then

                select case mFlag

                case 1

                    mCart(5,i)=mCart(5,i)-mCount

                case 0

                    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)=cID then

                CheckItem=True

                exit Function

            end if

        next 

        CheckItem=false

    End Function

    '清空购物车

    Sub RemoveAll()

        dim 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,i)<>"" then 

                Outprice(0)=Outprice(0) + mCart(2,i)*mCart(5,i)

                Outprice(1)=Outprice(1) + mCart(3,i)

                Outprice(2)=Outprice(2) + mCart(4,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,aPrice3产品价格

三如金牌会员价,如果没这么多可以置空或置0,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,aPrice,aCount

        aId=request.Form("produceId")

        aName=request.Form("produceName")

        aPrice=request.Form("producePrice")

        aCount=request.Form("buynum")        

        uCart.CreateCart       

        if uCart.AddItem(aId,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();"",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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


数组的定义 Dim MyArray MyArray = Array(1‚5‚123‚12‚98) 可扩展数组 Dim MyArray() for i = 0 to 10
\'参数: \'code:要检测的代码 \'leixing:html或者ubb \'nopic:代码没有图片时默认值
演示效果: 代码下载: 点击下载
环境:winxp sp2 ,mysql5.0.18,mysql odbc 3.51 driver 表采用 myisam引擎。access 2003  不同的地方: 
其实说起AJAX的初级应用是非常简单的,通俗的说就是客户端(javascript)与服务端(asp或php等)脚本语言的数据交互。
<% ’判断文件名是否合法 Function isFilename(aFilename)  Dim sErrorStr,iNameLength,i  isFilename=TRUE
在调用的时候加入判断就行了. {aspcms:navlist type=0 } {if:[navlist:i]<6} < li><a href=\"[navlist:link]\" target=\"_top\">[navlist:name]</a> </li>
导航栏调用 {aspcms:navlist type=0}     <a href=\"[navlist:link]\">[navlist:name]</a>
1.引入外部文件: {aspcms:template src=infobar.html} 2.二级下拉菜单 <ul class=\"nav\">
downpic.asp页面:  <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
Cookies是数据包,可以让网页具有记忆功能,在某台电脑上记忆一定的信息。Cookies的工作原理是,第一次由服务器端写入到客户端的系统中。以后每次访问这个网页,都是先由客户端将Cookies发送到服务器端,再由服务器端
很简单,在需要调用的地方用这种模式 {aspcms:content sort={aspcms:sortid} num=17 order=isrecommend}
网站系统使用ACCESS数据库时,查询时怎么比较日期和时间呢?为什么常常比较出来却是错误的呢?比如早的日期比迟的日期大?
str1=\"1235,12,23,34,123,21,56,74,1232\" str2=\"12\" 问题:如何判断str2是否存在str1中,要求准确找出12,不能找出str1中的1235、123、1232
实例为最新版本的kindeditor 4.1.5. 主要程序: <% Const sFileExt=\"jpg|gif|bmp|png\" Function ReplaceRemoteUrl(sHTML,sSaveFilePath,sFileExt)
用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“中国”、“人民”等关键字并在数据库内进行搜索。看完本文后,你就可以发
首先感谢ASPCMS官网注册用户xing0203的辛苦付出!一下为久忆YK网络转载原创作者xing0203的文章内容!为了让小白更加清楚的体验替换过程,久忆YK对原文稍作了修改!
数据库连接: <% set conn=server.createobject(\"adodb.connection\") conn.open \"driver={microsoft access driver (*.mdb)};dbq=\"&server.mappath(\"数据库名\")
第1步:修改plugins下的image/image.js 找到\'<input type=\"button\" class=\"ke-upload-button\" value=\"\' + lang.upload + \'\" />\',
asp函数: <% Const sFileExt=\"jpg|gif|bmp|png\" Function ReplaceRemoteUrl(sHTML,sSaveFilePath,sFileExt)