菜鸟跪求高手指教:注册处理程序问题!!

牛奶 2004-12-03 04:26:31
(一)基本程序逻辑:
页面1:注册信息输入页面。
一个包含A,B,C三个文本域的表单。填写信息,提交表单转到页面2。
页面2:处理信息页面。
若A字段格式不正确(比如登陆名含中文字符),则仅仅返回A出错信息需重新填写(不是用弹粗窗口形式),而B,C两项分别保存为临时值(但不写入数据库)。
直到A,B,C均填写符合规范,才一次性将A,B,C内容写入数据库,并转到页面3。
页面3:显示注册成功信息页面。

(二)现在情况是:
1、仅仅当第一次在页面1中A、B、C就完全填写正确,提交可保存成功。
2、若第一次在页面1中A正确,B、C不正确,提交后转到页面2:前台仅返回A出错;重新将A填写正确,再提交。
此时居然前台又返回BC出错信息,如此循环。
(理想情况下此时,ABC均已填写成功,此时再提交应该能保存成功)

(三)小弟太菜,求高手指点1、2,感激ING~
以下为页面2处理程序部分(显示出错信息部分略)
<%@ Language=VBScript %>
<% Option Explicit %>
<!--#include file = "../include/inc.asp"-->
<!--#include file = "checkinput.asp"-->
<%
'获取参数
dim i,times 数组下标
dim times
times = request("firstpage") '上一页面字段firstpage值为0
dim output_value(3)
output_value(1) = request("A")
output_value(2) = request("B")
output_value(3) = request("C")

'设置标记位,bj=1已保存,bj=0未保存.
dim bj(3)
dim c ,统计字段格式正确的个数
c = 0
if times = 0 then 若表单第一次提交(导致标志位NULL会出错),将所有标志位置0
for i = 1 to 3
bj(i) = 0
next
else
bj = session("bj")
end if
'for i = 1 to 3
'if bj(i) = "" then bj(i) = 0 标志位为空值,标志位置0
'next
'*************************************************************************
'先判断各标志位是否已设置为1,若已设置则跳过,若未设置则:
' 判断其是否符合填写规范
'若符合规范则将标志位设为1,若不符合则返回出错信息,重新填写。
'*************************************************************************

for i = 1 to 3.
if bj(i) = 0 then
if CheckInputOk(output_value,i) then
bj(i) = 1
else
c = c + 1
end if
end if
next
session("bj") = bj
session("col") = output_value
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
'判断必填项是否全部填写正确
if c = 0 then
'将所有表单域的值保存进数据库!
'连接数据库
dim st1
st1 = " driver={SQL Server};server=hjh;uid=sa;pwd=123;database=MachineV3 "
dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open(st1)
'取得当前最大的id号,关闭rs,清除缓存!
dim rs,sql1,id_max
Set rs = Server.CreateObject("ADODB.RecordSet")
sql1 = "select max(id) from userinfo"
rs.open sql1,cn,1,3
id_max = rs(0)
rs.close
response.write(id_max)

'重新打开rs,保存数据
dim sql2
sql2 = "select * from userinfo where id = -1"
rs.open sql2,cn,1,3

rs.addnew()
rs(0) = id_max + 1
dim col
col = session("col")
for i = 1 to 3
rs(i) = col(i)'取出所有输入值,赋给对应rs
next

rs.update()

rs.Close()
set rs = nothing
cn.Close()
set cn = nothing
response.write("保存成功!!")
end if
%>
...全文
89 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
牛奶 2004-12-06
人啊人啊
能解救我的人啊
你到底在那里啊
等的好辛苦啊。。。。。。。。。。
回复
牛奶 2004-12-05
aigo_aigo(我是没的话讲)

谢谢大虾顶贴,偶现在头晕了,这么两行代码还没搞清楚,哭~
回复
牛奶 2004-12-05
回复人: tjficcbw(津津) (
2。本身就已经错了,返回不还是错吗,在这里得处理一下,让其值为空,在值为空时只放置焦点不做处理。
大侠,小弟天资愚钝,你说的这句偶不太明白,能否明示?感激ing~~~
回复
aigo_aigo 2004-12-04
看不到你的1页面啊!
从你的前言推测:如果"仅仅返回A出错信息需重新填写"那么你的
output_value(1) = request("A")
output_value(2) = request("B")'这里的B已经重新取值
output_value(3) = request("C")'这里的C已经重新取值
不知道你的B\C值是否从session("col")中取回到B,C二个文本域中?如果没有的话,BC的值不对了,当然出错啊,同样BC重写后,A的值也不对啦
回复
tjficcbw 2004-12-04
1。你的问题是在提交到下一页面时,值带到下一页面。返回时没有带回来,或带回来的值里没有处理空格等。
2。本身就已经错了,返回不还是错吗,在这里得处理一下,让其值为空,在值为空时只放置焦点不做处理。
回复
牛奶 2004-12-04
不是吧,高手们都不厚道,24小时了都没人帮忙指点一下~
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-12-03 04:26
社区公告
暂无公告