因为表单中字段太多,如何把整个表单里面的内容提交到数据库

时间:2022-10-13 16:45:03
因为表单中字段太多,我想把用户填好的整个表单连同网页一起提交到数据库,或者发送到邮箱?

9 个解决方案

#1


不明白!多到什么程度

#2


使用post方式就行。至于行不行,就看你的服务器的反应了。应该没有问题的。

#3


<body>
<form id=frm>
<INPUT TYPE="text" id="input1" value="">
</form>
<BR>
<A HREF="#" onclick=show.innerHTML=frm.innerHTML;>你要上传的内容</A>


<div id=show>
</div>

#4


不推荐这样做,这样保存下来的数据的价值不高吧,以后想作任何的筛选,查找,排序都会很麻烦的,还不如现在麻烦一点全写好,字段总不至于一百多个吧!

#5


如果是直接提交到数据库的话,不好做到,做到也麻烦
如果是表单中的表单数和类型与数据库中的一样并且顺序也一样,可以这样
在提交的时候通过get方式,注:通过get方式确定你提交的字符串未超过128位,否则就不要这么做
然后在获取的时候,获取Request.ServerVariables("QUERY_STRING")


rem 每个表单的输入验证假设你在客户端已经做了
rem method=get(queststr<=128)在提交的时候通过get方式,注:通过get方式确定你提交的字符串未超过128位
dim requestStr=Request.ServerVariables("QUERY_STRING")&""'获取表单参数,如果为空,表示没有传递参数
if requestStr.trim="" then
    response.clear()
    response.write "没有填写表单"
    response.end()
end if
dim fieldsNum =9'这个要等于你数据库中的字段数减一,假设有10列
dim requestArr()=split(requestStr,"&")'将获取到的字符串存入数组
dim requestNum=0'数组列数
requestNum=ubound(requestArr)
if requestNum<> fieldsNum then'如果传递的参数不等于数据表的列数,停止继续解释网页
    response.clear()
    response.write "参数个数不对"
    response.end()
end if
dim sql'定义sql连接字符串变量
dim insertArr()'定义要写入的数据组
dim i=0
'将字段转换成SQL格式
for i=0 to requestNum
    if isnull(requestArr(i)) then
        response.clear()
        response.write "所有表单项不能为空"'在这里你也可以改成哪些字段不允许为空
        response.end()
    end if
    if not isnumeric(requestArr(i)) then
        sql &= '"& requestArr(i) &"',"
    else
        sql &=requestArr(i) &","
    end if        
i +=1
next
sql = left(sql,len(sql)-1)
rem conn是已定义数据库连接对象
rem rs是已定义数据表连接对象或存储过程对象,当然你这么懒,估计不会写过程
sql = "insert [yourtTable] values(sql)"
rem 第一次运行,先用以下三行测试一下连接字符串是否跟数据库中一一对应,
rem 如果不对应,就检查一下是否表单顺序有误,或者获取到的表单值类型不一样或者其他错误
'response.clear()
'response.write (sql)
'response.end
on err resum next'如果你有错误诊断程序就在下面调用
rs.execute(sql)
'关闭数据库对象,这个你应该会哈

试一下了,都好几年没摸过asp了,估计有错误的地方

#6


真是好久没写过asp了,挤了五分钟才挤出来,...看看能不能运行先

#7


忘了一句,一定要先过滤SQL注入字符啊~~~~

#8


对于表单较多或者传递的字符较多时,可以考虑使用post传递,然后Server.CreateObject("wmrmobjs.wmrmheader"),但是一定要筛选掉request.cookies,request.servervariable,否则会不一致

#9


谢谢大家,终于说服客户让用户下载文档填写然后发到邮箱。不然真是头晕~~~
结贴,送分。

#1


不明白!多到什么程度

#2


使用post方式就行。至于行不行,就看你的服务器的反应了。应该没有问题的。

#3


<body>
<form id=frm>
<INPUT TYPE="text" id="input1" value="">
</form>
<BR>
<A HREF="#" onclick=show.innerHTML=frm.innerHTML;>你要上传的内容</A>


<div id=show>
</div>

#4


不推荐这样做,这样保存下来的数据的价值不高吧,以后想作任何的筛选,查找,排序都会很麻烦的,还不如现在麻烦一点全写好,字段总不至于一百多个吧!

#5


如果是直接提交到数据库的话,不好做到,做到也麻烦
如果是表单中的表单数和类型与数据库中的一样并且顺序也一样,可以这样
在提交的时候通过get方式,注:通过get方式确定你提交的字符串未超过128位,否则就不要这么做
然后在获取的时候,获取Request.ServerVariables("QUERY_STRING")


rem 每个表单的输入验证假设你在客户端已经做了
rem method=get(queststr<=128)在提交的时候通过get方式,注:通过get方式确定你提交的字符串未超过128位
dim requestStr=Request.ServerVariables("QUERY_STRING")&""'获取表单参数,如果为空,表示没有传递参数
if requestStr.trim="" then
    response.clear()
    response.write "没有填写表单"
    response.end()
end if
dim fieldsNum =9'这个要等于你数据库中的字段数减一,假设有10列
dim requestArr()=split(requestStr,"&")'将获取到的字符串存入数组
dim requestNum=0'数组列数
requestNum=ubound(requestArr)
if requestNum<> fieldsNum then'如果传递的参数不等于数据表的列数,停止继续解释网页
    response.clear()
    response.write "参数个数不对"
    response.end()
end if
dim sql'定义sql连接字符串变量
dim insertArr()'定义要写入的数据组
dim i=0
'将字段转换成SQL格式
for i=0 to requestNum
    if isnull(requestArr(i)) then
        response.clear()
        response.write "所有表单项不能为空"'在这里你也可以改成哪些字段不允许为空
        response.end()
    end if
    if not isnumeric(requestArr(i)) then
        sql &= '"& requestArr(i) &"',"
    else
        sql &=requestArr(i) &","
    end if        
i +=1
next
sql = left(sql,len(sql)-1)
rem conn是已定义数据库连接对象
rem rs是已定义数据表连接对象或存储过程对象,当然你这么懒,估计不会写过程
sql = "insert [yourtTable] values(sql)"
rem 第一次运行,先用以下三行测试一下连接字符串是否跟数据库中一一对应,
rem 如果不对应,就检查一下是否表单顺序有误,或者获取到的表单值类型不一样或者其他错误
'response.clear()
'response.write (sql)
'response.end
on err resum next'如果你有错误诊断程序就在下面调用
rs.execute(sql)
'关闭数据库对象,这个你应该会哈

试一下了,都好几年没摸过asp了,估计有错误的地方

#6


真是好久没写过asp了,挤了五分钟才挤出来,...看看能不能运行先

#7


忘了一句,一定要先过滤SQL注入字符啊~~~~

#8


对于表单较多或者传递的字符较多时,可以考虑使用post传递,然后Server.CreateObject("wmrmobjs.wmrmheader"),但是一定要筛选掉request.cookies,request.servervariable,否则会不一致

#9


谢谢大家,终于说服客户让用户下载文档填写然后发到邮箱。不然真是头晕~~~
结贴,送分。