主题:  购物车简明教程(手写+UD)

98tj

职务:普通成员
等级:1
金币:0.0
发贴:28
注册:2003/1/7 8:22:14
#12003/2/24 10:03:06
购物车简明教程:
数据库字段
表:pro_talbe:
id 产品编号
proname 产品名称
simages 产品小图

表o_rder:
id 订单编号
p_roid 产品编号
m_um 产品数量
d_time 订购时间
表co_table:
id 客户编号
nn_ame 客户姓名
tt_el 联系电话
ee_m_ail 客户邮箱
+++++++++++++++++++++++
index.asp源码
+++++++++++++++++++++++

<%@LANGUAGE="VBSCRIPT"%>

<%
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_conn_STRING
Recordset1.Source = "SELECT * FROM pro_table"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
Dim Repeat1__numRows
Repeat1__numRows = -1
Dim Repeat1__index
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>


Untitled Document




<%
While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))
%>






<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Recordset1.MoveNext()
Wend
%>
<%=(Recordset1.Fields.Item("id").value)%> <%=(Recordset1.Fields.Item("proname").value)%> <%=(Recordset1.Fields.Item("simages").value)%> &quantity=1">购买



<%
Recordset1.Close()
%>
列出产品,这里有一个要点就是:&quantity=1">购买
这里传递了两个参数:产品ID“ProductID" 数量:“quantity"

+++++++++++++++++++++++++
下面是cart.asp的源码:
+++++++++++++++++++++

<%@LANGUAGE="VBSCRIPT"%>

<%
if not IsObject(session("cart")) then
    Set session("cart")=CreateObject("Scripting.Dictionary")
end if
Set cart=session("cart")
productID=Cstr(request("productID"))
dim detail(1)
detail(0)=Int(request("quantity"))
if request("productID")<>"" then
    if cart.Exists(productID) then
        cart.Remove(productID)
    end if
cart.add productID,detail
end if
keys=cart.keys
items=cart.items
set session("cart")=cart
%>



浙江广源印刷包装有限公司

href="index/index.css" type=text/css rel=stylesheet>
















<% For i = 0 To cart.Count -1 %>
<% Dim list__MMColParam
list__MMColParam = keys(i) %>
<% set list = Server.CreateObject("ADODB.Recordset")
list.ActiveConnection = MM_conn_STRING
list.Source = "SELECT * FROM pro_table WHERE id = " + Replace(list__MMColParam, "'", "''") + ""
list.CursorType = 0
list.CursorLocation = 2
list.LockType = 3
list.Open()
%>
'更新产品数量用







<%
list.Close()
%>
<% next %>




商品名称 购买数量 更新 删除
<%=(list.Fields.Item("proname").value)%>





总价合计:

¥<%=price%>

继续选购   付款




其中最前面代码,下面的理解是我自已想的有可能有错,不过程序绝对没有错:<%
if not IsObject(session("cart")) then
    Set session("cart")=CreateObject("Scripting.Dictionary")'建立二维数组
end if
Set cart=session("cart")
productID=Cstr(request("productID"))'定义变量productid为产品页传递过来的值
dim detail(1)
detail(0)=Int(request("quantity"))
if request("productID")<>"" then
    if cart.Exists(productID) then
        cart.Remove(productID)
    end if
cart.add productID,detail '上面这一段我看不太懂,谁知道告诉我一下,不过和下面的有关
end if
keys=cart.keys '定义变量KEYS的值为数组里面的产品ID
items=cart.items '定义变量items的值为数组里面的产品数量
set session("cart")=cart
%>
代码二:
<% For i = 0 To cart.Count -1 %> '设置多个产品的循环,cart.count是指购买几个产品,后面要以next结束
<% Dim list__MMColParam
list__MMColParam = keys(i) %> '定义ID为cart数组里面的产品ID号
<% set list = Server.CreateObject("ADODB.Recordset")
list.ActiveConnection = MM_conn_STRING
list.Source = "SELECT * FROM pro_table WHERE id = " + Replace(list__MMColParam, "'", "''") + ""
list.CursorType = 0
list.CursorLocation = 2
list.LockType = 3
list.Open()
%> '上面的代码就不用我说了,其中要注意的:list__MMColParam = keys(i)

…………………………………………

<%
list.Close()
%>
<% next %>

++++++++++++++++++++++
取消订购的产品:delcart.asp
++++++++++++++++++++++

<%
Set cart=session("cart")
if request("productID")<>"" then
    productID=Cstr(request("productID"))
    cart.Remove(productID)
end if
set session("cart")=cart
response.redirect("cart.asp")
%>

+++++++++++++++++++++++++
order.asp源码,这里很简单,看一下就明白了
+++++++++++++++++++++++



浙江广源印刷包装有限公司

href="index/index.css" type=text/css rel=stylesheet>









 购买者联系信息:


















联系人






公司电话






电子邮箱







 



   





++++++++++++++++++++++++++++++++
sendorder.asp,提交选购的产品到数据库,
+++++++++++++++++++++++++++++

<%@LANGUAGE="VBSCRIPT"%>


<%
if not IsObject(session("cart")) then
    response.redirect("/")
end if
%> '加一个判断,如果session("cart")为空,则重定位URL
<%
Set rs1=server.createobject("ADODB.recordset")
Set cart=session("cart")
keys=cart.keys '取出数组里面的产品ID
items=cart.items '取出数组里面的产品数量
%>
<%

set list = Server.CreateObject("ADODB.Command")
list.ActiveConnection = MM_conn_STRING
For i = 0 To cart.Count -1
list.CommandText = "INSERT INTO o_rder (m_um, p_roid) valueS (" + Replace(items(i)(0), "'", "''") + "," + Replace(keys(i), "'", "''") + " ) "

list.CommandType = 1
list.CommandTimeout = 0
list.Prepared = true
list.Execute()
next
%>
<%

set add = Server.CreateObject("ADODB.Command")
add.ActiveConnection = MM_conn_STRING
add.CommandText = "INSERT INTO co_table (nn_ame, tt_el, ee_m_ail) valueS (" + Replace(Request.form("n_ame"), "'", "''") + ", " + Replace(Request.form("t_el"), "'", "''") + ", " + Replace(Request.form("e_mail"), "'", "''") + ") "
add.CommandType = 1
add.CommandTimeout = 0
add.Prepared = true
add.Execute()

%>


浙江广源印刷包装公司




<%= Request.form("n_ame") %>你好,以下是你的详单


<%= Request.form("n_ame") %>


<%= Request.form("t_el") %>


<%= Request.form("e_mail") %>



<%For i = 0 To cart.Count -1%>


id:<%=keys(i)%>

数量:<%=items(i)(0)%>
<%next%>


 


 


 




<% session("cart")=""%>

上面用了两个命令预存过程:
第一个过程:list
存储产品到数据库
因为有可能选购多个产品,所以用了一个循环For i = 0 To cart.Count -1,并以next结束

第二个过程:add
存储客户到数据库
就这样一个简单的购物车做好了。

本教程中主要的是cart.asp中的定义一个二维数组,还有用循环For i = 0 To cart.Count -1 next 把所订购的产品显示出来

不过这个购物车有一个BUG 就是当你选购了一个产品后,用继续选购同一个产品时,产品数量又重新变为1,不会增加,请高手指点,修改一下,谢谢