永发信息网

asp购物车商品ID和商品数量如何对应

答案:1  悬赏:20  手机版
解决时间 2021-08-21 14:27

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">&nbsp;</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
%>

 

最佳答案

<!--#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">&nbsp;</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
%>

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
西塞山区黄石中窑小学幼儿园我想知道这个在什
车顶矿泉水是什么意思,矿泉水烧开了有一股清
难道只有男人会辛苦有压力,而女人就没有吗?
请问韶关的朋友,韶关有没有比较专业的改装车
电脑开机不了是什么问题?
为什么明明知道长江游泳有危险,还要不断范错
美国所有州中海拔最高的州和最低的州是哪一个
如果有人送你玫瑰花要追求你,你又不想接受他
心怎么叠
黄梅县黄冈市龙感湖管理区计划生育委员会这个
时下什么最流行…
鹈鹕队原来是哪个队,NBA鹈鹕队原来是哪支队
日语二级用日语怎么说,谁知到日语常用谚语越
纽曼音影王M560mp4为什么不能播放视频?
甲.乙.丙三人行走的速度每分钟分别是30米,40
推荐资讯
不好意思是什么意思,求网上公认的言情小说男
气生根植物有哪些,请问有哪些木本花卉是喜阴
巴西龟应该放多少水,养巴西龟水位要到多少
韩国小学有中文课吗?
What did i do yesterday
为什么我的手机没来电显示?
有没有好玩点的单机游戏
一个三角形两条边的长分别事故4厘米和6厘米,
DNF流星落大概用多少钱能买到???
2008年8月8日是星期五,8月28日是星期几呢?
电脑高手帮帮忙,QQ,校内通能登陆但是上面的
贵阳到武汉的火车票
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?