sesssion("pro")是个商品的数组 里面有两个值第一个值代表ID 第二个值代表数量 默认数量都是1 我商品是通过取出sesssion("pro")里所有数组的第一个ID值 然后用in到数据库里查找对应的商品信息 读出来的商品是按照数据库特有的顺序 那sesssion("pro")的第二个值 也就是数量值 如何对应到每个ID里???可以说说原理 或者直接写出来更好
以下是我购物车页面的简单代码
<!--#include file="conn.asp"-->
<!--#include file="gwcym.asp"-->
<%
act=request("act")
if act="" then
id=request.QueryString("id")
no=trim(request.QueryString("no"))
if isnumeric(no)=false then no=1
lk=id&","&no
%>
<%=tj(id,no)%>
<%=cid()%>
<%=cno()%>
<%
set rs=conn.execute("select * from shopping where id in("&session("id")&")")
%>
<style type="text/css">
<!--
.main { FONT-SIZE: 9pt
}
-->
</style>
<div align="center">以下是您选购的商品
</div>
<table width="524" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#008000" bordercolorlight="#008000" bordercolordark="#FFFFFF" class="main">
<tr bgcolor="#6d8e4d">
<td align="center" width="520" height="22"><font color="#FFFFFF">商品编号</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">商品名称</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">商品价格</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">商品数量</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">购买</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">总价</font></td>
</tr>
<%
do while not rs.eof%>
<tr>
<td align="center"><%=rs("id")%></td>
<td align="center"><%=rs("name")%></td>
<td align="center"> </td>
<td align="center"><input name="input" value="1" size="3" /></td>
<td align="center"><input type="checkbox" name="cpbm" value="" checked="checked" />
</td>
<td align="center">.00元 </td>
</tr>
<%
rs.movenext
loop
%>
<tr>
<td colspan="6" align="center"><a href="?act=qk">清空购物车</a></td>
</tr>
<tr>
<td align="right" colspan="6" width="520"><font color="Red">总价格=人民币 .00元</font></td>
</tr>
</table>
<%end if
if act="qk" then
session("pro")=""
%>
<table width="524" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#008000" bordercolorlight="#008000" bordercolordark="#FFFFFF" class="main">
<tr bgcolor="#6d8e4d">
<td align="center" width="520" height="22"><font color="#FFFFFF">商品编号</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">商品名称</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">商品价格</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">商品数量</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">购买</font></td>
<td align="center" width="520" height="22"><font color="#FFFFFF">总价</font></td>
</tr>
<tr>
<td colspan="6" align="center">购物车为空!!!!!!!<a href="index.asp" target="_blank">继续购买</a></td>
</tr>
<tr>
<td align="right" colspan="6" width="520"><font color="Red">总价格=人民币 .00元</font></td>
</tr>
</table>
<%end if%>
gwcym.asp里的代码
<%
function tj(newid,newno)
str=session("pro")
pro=split(str,"|")
dim p,uid,uno,str1,x,npro
str1=""'先将1为空 后面赋值信息
isrepeat=false'默认是false 如果有重复则变成true 使其后面的if isrepeat=false then失效
for i=0 to ubound(pro)
p=split(pro(i),",")'把用|分割的每个数组再用,号分割
if p(0)=cstr(newid) then'此时P(0)是ID (1)是数量 如果ID等于newid
uid=p(0)'ID不变
uno=p(1)+newno'数量加上newno
isrepeat=true'并且isrepeat 变成true 使其后面的if isrepeat=false then失效
else
uid=p(0)'如果没有重复 原来的数值不变 但并没有累加新的数值
uno=p(1)'
end if
x=uid&","&uno'此时X=各个商品的ID跟数量
if str1="" then'如果1不等于空 默认一开始第一个都是空
str1=x'1直接等于新数值 相当于第一个时不需要 | 线
else
str1=str1&"|"&x'反之则在原来基础上加 | 并加上新数值
end if
next
npro=newid&","&newno'给npro赋值 等于新的pro
if isrepeat=false then'如果前面没有重复 使isrepeat改变 此语句生效
if str="" then
str1=npro
else
str1=str1&"|"&npro'在1后面并上新的pro
end if
end if
session("pro")=str1
end function
%>
<%
function sc(newid)
str=session("pro")
pro=split(str,"|")
dim p,uid,uno,str1,x,npro
str1=""'先将1为空 后面赋值信息
isrepeat=false'默认是false 如果有重复则变成true 使其后面的if isrepeat=false then失效
for i=0 to ubound(pro)
p=split(pro(i),",")'把用|分割的每个数组再用,号分割
if p(0)=cstr(newid) then'此时P(0)是ID (1)是数量 如果ID等于newid
uid=""'ID不变
uno=""'数量加上newno
x=""
else
uid=p(0)'如果没有重复 原来的数值不变 但并没有累加新的数值
uno=p(1)'
x=uid&","&uno'此时X=各个商品的ID跟数量
end if
if str1="" then'如果1不等于空 默认一开始第一个都是空
str1=x'1直接等于新数值 相当于第一个时不需要 | 线
elseif x<>"" then
str1=str1&"|"&x'反之则在原来基础上加 | 并加上新数值
end if
next
session("pro")=str1
end function
%>
<%
function cid()
str=session("pro")
pro=split(str,"|")
dim p,uid,uno,str1,x,npro
str1=""'先将1为空 后面赋值信息
for i=0 to ubound(pro)
p=split(pro(i),",")'把用|分割的每个数组再用,号分割
uid=p(0)'如果没有重复 原来的数值不变 但并没有累加新的数值
x=uid'此时X=各个商品的ID跟数量
if str1="" then'如果1不等于空 默认一开始第一个都是空
str1=x'1直接等于新数值 相当于第一个时不需要 | 线
else
str1=str1&","&x'反之则在原来基础上加 | 并加上新数值
end if
next
session("id")=str1
end function
%>
<%
function cno()
str=session("pro")
pro=split(str,"|")
dim p,uid,uno,str1,x,npro
str1=""'先将1为空 后面赋值信息
isrepeat=false'默认是false 如果有重复则变成true 使其后面的if isrepeat=false then失效
for i=0 to ubound(pro)
p=split(pro(i),",")'把用|分割的每个数组再用,号分割
uno=p(1)'
x=uno'此时X=各个商品的ID跟数量
if str1="" then'如果1不等于空 默认一开始第一个都是空
str1=x'1直接等于新数值 相当于第一个时不需要 | 线
else
str1=str1&","&x'反之则在原来基础上加 | 并加上新数值
end if
next
session("cno")=str1
end function
%>