本站为一个技术型PHP个人门户站,提供一些代码,技术文章、免费空间消息信息、让学习编程更轻松和不要钱买空间更方便-PHP小戴
你当前的位置:首页>>网友投稿
小戴个人门户站导航 PHP小戴个人门户站 关于站长web个人门户站 设计服务-网络公司,建设网站,企业logo设计,包装设计,网站设计,整站程序开发 联系站长-小戴个人门户站
  • 技术文章排行榜
文章数据加载中...
  • 免费空间排行榜
空间数据加载中...

asp购物车代码原理讲解!

  • <%
    '==========================
    '购物车类 类名:UserCart
    '作者:gameing
    '基本原理:此类用服务器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>


  • [时间:2008-12-12 20:24:08][点击:]

  • 上下篇文章加载中...
返回首页 | 关于站长 | 联系站长| 设计服务 | 建站资源 | 技术文章 | 娱乐中心 | 免费空间 | 友情链接 | 留言蜚语 | 网站地图| 网友投稿|RSS订阅 
QQ:277728291 联系方式:15824537062 mail:27772821@163.com
版权所有 2008-2018 PHP小戴个人门户站-编程技术和空间和文章共享-www.phpxd.com Copyright 2008 phpxd.com