购物车解决方法

idoly 2004-12-21 09:40:32
怎么用asp做购物车
能否具体一点 谢谢
...全文
128 点赞 收藏 9
写回复
9 条回复
mikespook 2004年12月22日
我写的一个购物车类~~~你可以参考一下~~
回复 点赞
mikespook 2004年12月22日
<%
Class Product
dim fPackage
Private Sub Class_Initialize
fPackage = "None#0#0#0"
End Sub
Public Property Get Package
Package = fPackage
End Property
Public Property Let Package(ByVal str)
fPackage = str
End Property
Public Property Get Name
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
Name = temp(i)
End Property
Public Property Let Name(ByVal vName)
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
temp(i) = vName
fPackage = temp(i) + "#" + temp(i + 1) + "#" + temp(i + 2) + "#" + temp(i + 3)
End Property
Public Property Get ID
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
ID = temp(i + 1)
End Property
Public Property Let ID(ByVal vID)
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
temp(i + 1) = CStr(vID)
fPackage = temp(i) + "#" + temp(i + 1) + "#" + temp(i + 2) + "#" + temp(i + 3)
End Property
Public Property Get Count
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
Count = temp(i + 2)
End Property
Public Property Let Count(ByVal vCount)
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
temp(i + 2) = CStr(vCount)
fPackage = temp(i) + "#" + temp(i + 1) + "#" + temp(i + 2) + "#" + temp(i + 3)
End Property
Public Property Get Price
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
Price = temp(i + 3)
End Property
Public Property Let Price(ByVal vPrice)
Dim temp, i
temp = Split(fPackage, "#")
i = LBound(temp)
temp(i + 3) = CStr(vPrice)
fPackage = temp(i) + "#" + temp(i + 1) + "#" + temp(i + 2) + "#" + temp(i + 3)
End Property
End Class
'--------------------------------------
Class Customer
dim fName, fID, fCart, fPrice, fCount
Private Sub Class_Initialize
Set fCart = CreateObject("Scripting.Dictionary")
fName = "None"
fID = 0
fPrice = 0.0
fCount = 0
End Sub
Private Sub Class_Terminate
fCart.Removeall
Set fCart = Nothing
End Sub
Public Sub Removeall
fCart.Removeall
fPrice = 0.0
fCount = 0
End Sub
Public Sub LoginOut
fCart.Removeall
fName = "None"
fID = 0
fPrice = 0.0
fCount = 0
End Sub
Public Sub Add(ByVal P)
Dim P2
fPrice = CDbl(fPrice) + CLng(P.Count) * CDbl(P.Price)
fCount = CLng(fCount) + CLng(P.Count)
If fCart.Exists(P.ID) Then
Set P2 = New Product
P2.Package = fCart.Item(P.ID)
fCart.Remove P.ID
P.Count = CLng(P.Count) + CLng(P2.Count)
End If
fCart.Add P.ID, P.Package
End Sub
Public Sub Remove(ByVal ID)
Dim P
If fCart.Exists(ID) Then
Set P = New Product
P.Package = fCart.Item(ID)
fPrice = fPrice - P.Count * P.Price
fCount = fCount - P.Count
fCart.Remove ID
Set P = Nothing
End If
End Sub
Public Property Get Name
Name = fName
End Property
Public Property Let Name(ByVal vName)
fName = vName
End Property
Public Property Get ID
ID = fID
End Property
Public Property Let ID(ByVal vID)
fID = vID
End Property
Public Property Get Package
Dim itm
Package = fName + "|" + CStr(fID) + "|" + CStr(fCount) + "|" + CStr(fPrice)
For Each itm In fCart.Items
Package = Package + "|" + itm
Next
End Property
Public Property Let Package(ByVal str)
Dim P1, P2
fCart.Removeall
Set P1 = New Product
Items = Split(str, "|")
fName = Items(LBound(Items))
fID = Items(LBound(Items) + 1)
fCount = Items(LBound(Items) + 2)
fPrice = Items(LBound(Items) + 3)
For i = LBound(Items) To UBound(Items) - 4
P1.Package = Items(i + 4)
If fCart.Exists(P1.ID) Then
Set P2 = New Product
P2.Package = fCart.Item(P1.ID)
fCart.Remove P1.ID
P1.Count = CLng(P1.Count) + CLng(P2.Count)
End If
fCart.Add P1.ID, P1.Package
Next
Set P = Nothing
End Property
Public Property Get Count
Count = fCount
End Property
Public Property Get Price
Price = fPrice
End Property
Public Property Get Products
Dim itm
If fCart.Count > 0 Then
For Each itm In fCart.Items
Products = Products + "|" + itm
Next
Products = Right(Products, Len(Products) - 1)
Else
Products = ""
End If
End Property
Public Function ProItem(ByVal ID)
If fCart.Exists(ID) Then
ProItem = fCart.Item(ID)
Else
ProItem = ""
End If
End Function
End Class

Function TestLogin(ByVal c)
If c.Name = "None" Or c.ID = 0 Then
TestLogin = False
Else
TestLogin = True
End If
End Function

Dim g_Discount
g_Discount = 0.95
%>
回复 点赞
ezpj 2004年12月22日
tt007(独孤求败(多情贱客无情贱)) ,

其实程序的实现都OK ,要看需求做成什么样,g82_bb(黄泉) 那种用存起来的方式
可以做到用户下线后仍保持购物车的内容。

如果买多件相同的商品,也可以用这种方法来实现嘛
关键是看你怎么去构造session("current_buy")这个字符串。
比如说 商品ID为 1025 、1026 、1027 需要数量依次为 1 、10 、100
那我可以把字符串构建为"1025+1|1026+10|1027+100"
后面分析的时候先根据"|"把字符串分为 "1025+1"、"1026+10"、"1027+100"
再根据 "+" 把ID和数量分别取得。OVER。
回复 点赞
g82_bb 2004年12月22日
商品表:
id 商品名称
1 商品1
2 商品2
3 商品3
...

用户表:
id 用户名 密码
1 aaaa xxxxx
2 bbbb xxxxx
...

购物车表:
id 用户id 商品id 数量
1 1 1 30
2 1 2 5
3 2 1 15
4 1 3 50

简单解释一下我的想法:
在购物车表中每条记录只包含某个用户所购买的一种商品及数量.
这样,要显示某个用户的购物车只要在session中保存一个用户id(用户表中的id字段值)
然后在显示时用如下SQL语句就可以得到一个记录集:
"select * from 购物车表 where 用户id=" & session("user_id")
而且可以在用户下线后仍保持购物车的内容,直到用户自行清空或管理员定期清理...

以上是我在做类似项目时实现购物车的方法,有兴趣的朋友欢迎加我QQ:67901000...
大家讨论一下:)
回复 点赞
yb2008 2004年12月22日
举个例子:
商品表:
ID 商品名称
1 001
2 002
3 003

构物表:
ID 商品表_ID
1 1,2,3,4,96,7
这里的商品表_ID是用来存储商品表的ID的,可以用SPLIT()函数来操作!

回复 点赞
airwudi 2004年12月22日
其实你可以下载一个购物系统参考一下,看看就知道了
我现在就是用的时代购物系统改的
回复 点赞
tt007 2004年12月22日
楼上的,那如果买多件相同的商品要怎么办呢???
回复 点赞
ezpj 2004年12月22日
购物车设计

购物车的设计比较简单,可以在用户登陆成功时创建session("current_buy")=""

当用户添加一个商品时
session("current_buy")=session("current_buy")+ " | " + 商品ID


当用户删除一个商品时
session("current_buy")=replace(session("current_buy"), " | " + 商品ID, "")

通过上面的操作 ,最后session("current_buy")中会得到这样一个字符串:+1002+1003…
后面的程序需要检查用户的购物状态时,只需要分析session("current_buy")的值,
就可以得到用户目前的购物车中所放商品的ID号码,这样就可以查询出用户目前买了些什么商品。

当用户退出登陆时,要SET session("current_buy") =NOTHING
回复 点赞
gu1dai 2004年12月22日
购物车最好用cookie
用session服务器受不了
回复 点赞
发动态
发帖子
ASP
创建于2007-09-28

1.9w+

社区成员

35.7w+

社区内容

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区公告
暂无公告