巧取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表单代码:

'提交给ok.ASP文件处理

'下面这段代码用于循环显示数据库字段及相应的文本区(text)
<%for i=0 to rs.fields.count-1%>
'rs(i).name是字段名

<%next%>




<%=rs(i).name%>




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开始循环,这样就可以跳过该字段。