Asp的购物车

来源:互联网 发布:西安城市规划 知乎 编辑:程序博客网 时间:2024/05/02 01:58

<%
Dim CartStr
'购物车相关函数
'HJ 2007年1月23号
'购物车数据定义:  商品ID|数量#颜色*尺寸,商品ID|数量#颜色*尺寸,商品ID|数量#颜色*尺寸,商品ID|数量#颜色*尺寸

Sub CartAdd(ProductID,Num,ColorID,SizeID)
'添加某种商品
 CartStr = Trim(Request.Cookies("SpiderCart"))
 if CartStr = "" Then
  Response.Cookies("SpiderCart") = ProductID & "|" & Num & "#" & ColorID & "*" &SizeID
  Exit Sub
 end if
 
 CartStr = CartStr & "," & ProductID & "|" & Num & "#" & ColorID & "*" &SizeID
 Response.Cookies("SpiderCart") = CartStr
End Sub

Sub CartEdit(ProductID,Num)
'编辑某种商品的数量
 CartStr = ","&Trim(Request.Cookies("SpiderCart"))
 if(InStr(CartStr,","&ProductID&"|") = 0) Then
  Alert("该商品刚刚卖完")
  CartDel(ProductID)
  Exit Sub
 end if
 
 Arr = Split(CartStr,","&ProductID&"|")
 CartStr = Arr(0) &"," &ProductID& "|" & Num & "#" & Right(Arr(1),Len(Arr(1)) - InStr(Arr(1),"#"))
 CartStr = Right(CartStr,Len(CartStr)-1)
 
 Response.Cookies("SpiderCart") = CartStr
End Sub

Sub CartClear
 Response.Cookies("SpiderCart") = ""
End Sub

Sub CartDel(ProductID)
'删除某种商品
 CartStr = Trim(Request.Cookies("SpiderCart"))
 if(CartStr = "") Then Exit Sub
 'Alert(CartStr)
 
 if( UBound(Split(CartStr,"|")) = 1 ) Then
  Response.Cookies("SpiderCart") = ""
  Exit Sub
 end if
 
 CartStr = "," & CartStr
 ArrCart = Split(CartStr,","&ProductID&"|")
 CartStr = ArrCart(0) & Right(ArrCart(1),Len(ArrCart(1))-InStr(ArrCart(1),"*"))
 CartStr = Right(CartStr,Len(CartStr) - 1)
 Response.Cookies("SpiderCart") = CartStr
End Sub

Function GetColorBYProductID(ProductID)
'返回商品的颜色
 CartStr = ","&Trim(Request.Cookies("SpiderCart"))
 
 ArrCart = Split(CartStr,","&ProductID&"|")
 ArrCart(1) = Right(ArrCart(1),Len(ArrCart(1)) - InStr(ArrCart(1),"#"))
 GetColorBYProductID = Left(ArrCart(1),InStr(ArrCart(1),"*")-1)
End Function

Function GetNumBYProductID(ProductID)
'返回商品的数量
 CartStr = ","&Trim(Request.Cookies("SpiderCart"))
 
 ArrCart = Split(CartStr,","&ProductID&"|")
 GetNumBYProductID = Left(ArrCart(1),InStr(ArrCart(1),"#")-1)
End Function

Function GetSizeBYProductID(ProductID)
'返回商品的尺寸
 CartStr = ","&Trim(Request.Cookies("SpiderCart"))
 
 'Response.Write(CartStr)
 'Response.End()
 
 ArrCart = Split(CartStr,","&ProductID&"|")
 ArrCart(1) = Right(ArrCart(1),Len(ArrCart(1)) - InStr(ArrCart(1),"*"))
 if(InStr(ArrCart(1),",") = 0) Then
  GetSizeBYProductID = ArrCart(1)
 else
  GetSizeBYProductID = Left(ArrCart(1),InStr(ArrCart(1),",")-1)
 end if
End Function

Function GetIDStr
'返回购物车中商品由ID组成的字符串
 CartStr = Trim(Request.Cookies("SpiderCart"))

 if(CartStr = "") Then GetIDStr = "":Exit Function

 if(InStr(CartStr,",") = 0 ) Then
  GetIDStr = Split(CartStr,"|")(0)
  Exit Function
 end if
 
 ArrCart = Split(CartStr,",")
 
 For i = 0 to Ubound(ArrCart)
  if ( i = 0 ) then
   GetIDStr = Split(ArrCart(i),"|")(0)
  else
   GetIDStr = GetIDStr & "," & Split(ArrCart(i),"|")(0)
  end if
 Next
End Function

Function isExistsInCart(ProductID)
'判断某个商品是否已经存在购物车中
 CartStr = Trim(Request.Cookies("SpiderCart"))
 
 if CartStr="" Then
  isExistsInCart = False
  Exit Function
 end if
 
 CartStr = "," & CartStr
 
 if Instr(CartStr,","& ProductID & "|") > 0 Then
  isExistsInCart = True
 Else
  isExistsInCart = False
 End if
End Function

Function GetCartCount
'计算购物车中商品数量
 CartStr = Trim(Request.Cookies("SpiderCart"))
 if CartStr = "" Then
  GetCartCount = 0
  Exit Function
 end if
 
 GetCartCount = Ubound(Split(CartStr,"|"))
End Function

Function GetMoney
'计算购物车中商品总价格
 CartStr = Trim(Request.Cookies("SpiderCart"))
 if(CartStr = "") Then GetMoney = 0:Exit Function
 
 Dim m,TotalPrice
 Set m = Server.CreateObject("Adodb.RecordSet")

 if(InStr(CartStr,",") = 0 ) Then
  arr = Split(CartStr,"|")
  Sql = "Select NewPrice*"&Left(arr(1),InStr(arr(1),"#")-1)&" as TotalPrice from SP_Detail where id="&arr(0)
  m.Open Sql,Conn,1,3
  if(m.RecordCount > 0) Then
   GetMoney =  m("TotalPrice")
   Exit Function
  else '该商品在购买后已经被删除
   CartDel(arr(0)) '清空商品
   GetMoney = 0
   m.Close
   Set m = Nothing
   Exit Function
  end if
  m.Close
 end if
 
 ArrCart = Split(CartStr,",")
 TotalPrice = 0
 
 'Response.Write(CartStr)
 'Response.End()
 
 For i = 0 to Ubound(ArrCart)
 arr = Split(ArrCart(i),"|")
  Sql = "Select NewPrice*"&Left(arr(1),InStr(arr(1),"#")-1)&" as TotalPrice from SP_Detail where id="&arr(0)
  m.Open Sql,Conn,1,3
  if(m.RecordCount > 0) Then
   TotalPrice = TotalPrice +  m("TotalPrice") 'm.fields(0).value
  else '该商品在购买后已经被删除
   CartDel(arr(0)) '清空商品
  end if
  m.Close
 Next
 
 Set m = Nothing
 GetMoney = TotalPrice
End Function
%>


另外一个文件

<%
Dim Conn

Sub ConnOpen(ConnStr)
'数据连接
'参数 ConnStr  数据库物理路径
 Set Conn = server.CreateObject("Adodb.Connection")
 Conn.Open "Driver={MicroSoft Access Driver (*.mdb)};" & "dbq="&ConnStr
 response.Buffer
 response.Expires=-9999
 session.Timeout = 60
End Sub

Sub ConnClose
 Conn.Close()
 Set Conn = Nothing
End Sub

Function ExecuteScalar(Sql)
'执行Sql语句,返回单个值结果
 Dim Result
 rs.Open Sql,Conn,1,3
 if(rs.RecordCount > 0) Then
  Result = rs.fields(0).value
 Else
  Result = 0
 End if
 rs.Close
 
 ExecuteScalar = Result
End Function

Sub Alert(Str)
 Response.Write("<script language=""javascript"">alert('"& Str &"');</script>")
End Sub

Sub AlertAndRedirect(Str,PageInfo)
 Response.Write("<script language=""javascript"">alert('"& Str &"');window.location = ('"&PageInfo&"');</script>")
End Sub

Sub AlertAndClose(Str)
 Response.Write("<script language=""javascript"">alert('"& Str &"');window.close();</script>")
 Response.End()
End Sub

Sub AlertAndBack(Str,Num)
 Response.Write("<script language=""javascript"">alert('"& Str &"');window.go("&Num&");</script>")
End Sub

Function ReplaceStr(str)
 ReplaceStr = Replace(str,"'","['']")
 ReplaceStr = Replace(str,"-","[_]")
End Function

Function ReStoreStr(str)
 ReStoreStr = Replace(str,"['']","'")
 ReStoreStr = Replace(str,"[_]","-")
End Function

Sub DelFile(Path)
'删除指定路径文件
Dim Fs
Set Fs = Server.CreateObject("Scripting.FileSystemObject")
 If(Fs.FileExists(Path)) Then Fs.DeleteFile(Path)
Set Fs = Nothing
End Sub

Function GetIP
'得到 IP 地址
 if(Request.ServerVariables("REMOTE_ADDR") = "") Then
  GetIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
 else
  GetIP = Request.ServerVariables("REMOTE_ADDR")
 end if
End Function

Function ExecuteScalar(Sql)
'执行Sql语句,返回单个值结果
 Dim Result
 rs.Open Sql,Conn,1,3
 if(rs.RecordCount > 0) Then
  Result = rs.fields(0).value
 Else
  Result = 0
 End if
 rs.Close
 
 ExecuteScalar = Result
End Function

Function GetOrderNo
'生成一个订单号  YYMMDDHHMMSS
 Randomize
 ranNum=int(90*rnd)+10
 GetOrderNo=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum
End Function
%>

 
原创粉丝点击