巧取Form表单中相同的Text值
网络与通信
用ASP进行网络编程,一般来说都离不开Form表单。而Text元素作为表单的一个细胞尤其活跃,在很多场合都要用它,比如网站登录、用户注册、发表文章等等。如何获取表单中组件的值就显得非常重要了。先请读者看下面这个例子,了解一下常见的获取方法:
先建立一个登录页面login.asp,以下是部分代码:
提交的值用loginok.asp来处理,其值可以在IE浏览器中显示出来,也可以与数据库中的数据进行对比,然后作出判断进入其他页面等等。这里只提供获取方法,其余读者自行发挥。
loginok.ASP部分代码:
user=request.form("user")
password=request.form("password")
不知道读者注意到没有,上面例子中的 它们的name值是不一样的,一个是user,另一个是password。如果遇到相同的,如在ASP+Access数据库中应用时,我们只知道数据库名和表名,现需要将数据库字段显示出来并添加记录,用此方法显然是行不通的,获取的值也将会是相同的,达不到预想的效果。如何解决?请听笔者慢慢道来:
1.获取数据库名和表名。
其方法有两种:一是通过前面网页传递而来(当然上一页必须定义:session("km")="common.mdb";session("bm")="www"),于是就可以通过:<%km=session("km");bm=session("bm")%>获得库名和表名;二是直接将数据库名和表名赋值给变量:
km="common.mdb"
bm="www"
2.建立与数据库的连接并打开相应的表。
Set conn = Server.CreateObject("ADODB.Connection")
dbpath = Server.MapPath(km)
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & dbpath
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from"+bm
rs.open sql,conn,3,2
3.编写Form表单代码:
4.用for ...next语句获取表单提交的值,并将值赋给session对象:
for i=0 to request.form("name").count-1
session("record"&i)=request.form("name")(i+1)
next
'对已经获得的值进行处理,写入数据表中
rs.addnew
for i=0 to rs.fields.count-1
rs(i)=session("record"&i)
rs.update
next
注意:
1.在提交文本区(text)值的时候,数据类型一定要相匹配,如要求是一个数字整型,而你输入的是字符,肯定会出错;
2.如果涉及到“自动编号”字段也会出错,原因是“自动编号”字段是不允许更改的,这时就需要将前面的i值从1开始循环,这样就可以跳过该字段。