网站建设、网站制作
首页>> 网站优化 >> 用asp开发购物车的源代码

用asp开发购物车的源代码


文章出处:北京网站建设 责任编辑:rednet 发布日期:2009年10月21日
关键字: 用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>





网站建设咨询

联系电话:010 - 89655688
联系手机:13552137435
联系Q Q:904560919
EMAIL: rednetjob@163.com
联系地址:北京市朝阳区四惠

网站建设,网站制作,北京网站建设 企业网站建设