我搞不定这个棘手问题,进来帮忙下啊

pdysuny 2006-08-23 04:20:05
我需要做游戏点卡在线支付,自动弹出卡号和密码的.
点击"在线支付"后,通过了银行的扣款,返回反馈页面,买的卡弹出来了,表中字段used值为0为未出售卡,值1为已经出售卡.
问题:我在出售卡后,1赋值给used,但是结果把表中used=0全部更新为1了,而不是我需要卖出去的卡为1,请帮忙看下吧.我需要的是把卖出去的卡used设为1.

.....
set rs=server.CreateObject("adodb.recordset")
rs.Open "select * from card where used=0",conn,1,3
if rs.eof And rs.bof then
response.write "<script language=javascript>alert('此卡缺货');window.close();</script>"
response.end
else
i=0
ii=""
do while not rs.eof
ii=ii&"卡号:"&rs("cardhao")&"   "
Response.Write "卡号:"&rs("cardhao")&"   "
ii=ii&"密码:"&rs("cardmima")&"<br>"
Response.Write "密码:"&rs("cardmima")&"<br>"
rs("used")=1--------->这里操作之后把表里used都改为1了,而不是我需要的已经出售的卡,该如何做啊?
rs("card_dingdanid")=card_dingdanid
rs.Update
i=i+1
if i>=cardcount then Exit Do
rs.movenext
loop
rs.Close
set rs=nothing
end if
...全文
751 66 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
66 条回复
切换为时间正序
请发表友善的回复…
发表回复
张三大胖 2006-08-29
  • 打赏
  • 举报
回复
无奈的思绪
penglewen 2006-08-29
  • 打赏
  • 举报
回复
用上面这样方法应该差不多吧,怎么还不行啊.
再帮你改一次...........
set rs=server.CreateObject("adodb.recordset")
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
rs.open sql,conn,3,3
if rs.eof And rs.bof then
response.write "<script language=javascript>alert('系统缺货!');window.close();</script>"
response.end
else
ii=""
do while not rs.eof
ii=ii&"卡号:"&rs("cardhao")&"   "
ii=ii&"密码:"&rs("cardmima")&"<br>"
sql=sql&"update card set used=1,card_dingdanid='"card_dingdanid"' where cardid='"&rs("cardid")&"'"
conn.execute("update card set used=1,card_dingdanid='"card_dingdanid"' where cardid='"&rs("cardid")&"'")
rs.movenext
loop
end if
rs.Close
set rs=nothing
response.write ii
response.write sql



pdysuny 2006-08-29
  • 打赏
  • 举报
回复
如下代码可以出卡,但是库中,未出售的卡都变未出售的了,也就是所有行的used都设为1了.

问题:如何使已经出售的卡的used设为1,而不是全部???

set rs=server.CreateObject("adodb.recordset")
sql="select TOP "&cardcount&" * from card where id="&kaid&" and used=0 order by cardid desc"
rs.open sql,conn,3,3
if rs.eof And rs.bof then
response.write "<script language=javascript>alert('系统缺货!');window.close();</script>"
response.end
else
i=0
ii=""
do while not rs.eof
ii=ii&"卡号:"&rs("cardhao")&"   "
Response.Write "卡号:"&rs("cardhao")&"   "
ii=ii&"密码:"&rs("cardmima")&"<br>"
Response.Write "密码:"&rs("cardmima")&"<br>"

sql="update card set used=1 where cardid="&rs("cardid")&""
conn.execute(sql)
'如果conn.execute不能使用则运行以下指令
'rs("used")=1
'rs("card_dingdanid")=card_dingdanid
'rs.update
i=i+1
rs.movenext
loop


end if
rs.Close
set rs=nothing
response.write sql
hurrayboy 2006-08-29
  • 打赏
  • 举报
回复

LZ可能是你在某个小细节上没有注意吧~

怎么都不行呢


路过 up~
小码 2006-08-29
  • 打赏
  • 举报
回复
我做过卖点卡的,整理一下思路:先算出需要分配卡号密码的数量,用Top n提取未售出的卡,一一处理,最后别忘记了把缺货的记录保存起来,以备补货。其中一定要注意数据同步的问题,尤其是安全问题,不多给也不少给卡。
小码 2006-08-29
  • 打赏
  • 举报
回复
if rs.recordcount<cint(cardcount) then...得转换一下数据类型。
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
up
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
依然部不行
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
up
pcworld 2006-08-28
  • 打赏
  • 举报
回复
UP
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
cisky(白菜) :
出卡和更新的页面是在同一个页面,也就是你通常在网上购买时最后弹出的反馈页面.
(request("cardid")) 不知从何处获取,如果是两个页面,那就简单些了

依然无法解决,高手出招吧!再加100分!!
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
penglewen(昨日如梦)
刚刚按照你的做,执行后显示"系统缺货",我刚刚加上去,实际没缺货啊,问题又来了啊
penglewen 2006-08-28
  • 打赏
  • 举报
回复
set rs=server.CreateObject("adodb.recordset")
rs.Open "select * from card where id="&kaid&" and used=0",conn,1,1
if rs.recordcount<cardcount then
response.write "<script language=javascript>alert('系统缺货!\n\n目前仅余"&rs.recordcount&"张符合条件的卡');window.close();</script>"
response.end
else
i=0
ii=""
do while not rs.eof
ii=ii&"卡号:"&rs("cardhao")&"   "
Response.Write "卡号:"&rs("cardhao")&"   "
ii=ii&"密码:"&rs("cardmima")&"<br/>"
Response.Write "密码:"&rs("cardmima")&"<br/>"
conn.execute("update card set used=1,card_dingdanid='"&card_dingdanid&"' where cardid='"&rs("cardid")&"'and cardhao='"&rs("cardhao")&"'")
rs.movenext
i=i+1
if cint(i)>cint(cardcount) then exit do
loop
end if
rs.Close
set rs=nothing
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
select top "&cardcount&" 只是控制售出的卡的数量,而与要更新的数量无关,这样理解对吧?因为执行后就是这样啊
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
card中,cardid为自动编号,我也用cardhao换为cardid,还是一样的全部更新了
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
response.write 出来可以出来,但是update的时候全部设used为1了,据此,我认为,update的条件是where id="&kaid&" and used=0,与select top "&cardcount&"无关,所以就全部更新了,因为新加的卡,在表中used都为0,id都是一样的,id为一个产品id,我加卡号就是在这个ID下加的.

问题是要更新售出的卡used为1,而不是表中全部,关键就是在这里啊
penglewen 2006-08-28
  • 打赏
  • 举报
回复
你的card表中主键字段叫什么名字,怎么会这样.........要不把你获得的数据全用response.write输出来看看.......
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
再加100分求助
pdysuny 2006-08-28
  • 打赏
  • 举报
回复
penglewen(昨日如梦):
按照你的方法,执行后依然全部更新了used为1,并显示购买数量为三个,我实际只购买一个
penglewen 2006-08-28
  • 打赏
  • 举报
回复
set rs=server.CreateObject("adodb.recordset")

rs.Open "select * from card where cardhao in (select TOP "&cardcount&" cardhao from card where id="&kaid&" and used=0)",conn,1,1
if rs.recordcount<cardcount then

response.write "<script language=javascript>alert('系统缺货!\n\n目前仅余"&rs.recordcount&"张符合条件的卡');window.close();</script>"

response.end

else

i=0

ii=""

do while not rs.eof

ii=ii&"卡号:"&rs("cardhao")&"   "

Response.Write "卡号:"&rs("cardhao")&"   "

ii=ii&"密码:"&rs("cardmima")&"<br/>"

Response.Write "密码:"&rs("cardmima")&"<br/>"
str_cardhao =srt_cardhao&","&rs("cardhao")

sql=sql&"update card set used=1,card_dingdanid='"&card_dingdanid&"' where cardhao='"&rs("cardhao")&"'"

rs.movenext

loop

end if

rs.Close

set rs=nothing
response.write str_cardhao '看输出的卡号是不是满足你的条件.....
response.write sql '看SQL语句是不是也符合你的要求 如果符合的话就执行.
conn.execute(sql)
加载更多回复(46)

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧