这里所谓的复杂形式形式是指含有多种不同的输入类型,如下拉列表框、单行文本、多行文本,数字,等等。在你经常需要更换这种形式的情况下,你需要有一个动态的形式生成程序,文章介绍了这样一个系统,它使用数据库来存储形式来定义数据,动态生成HTML代码的形式使用ASP脚本,并验证脚本输入形式。
1。定义数据库表结构
您经常可以看到诸如Web每周调查之类的表单,这种表单需要定期更新。如果您有动态生成表单和验证脚本的程序,则可以大大减少这些表单的工作量。
在动态生成和验证的例子,我们使用Access数据库存储的形式定义的信息,并进行简单的账户,表单中输入的数据也可以保存到同一个数据库。有两个表来定义形式:第一个表(Definitons)是用来定义的表单的输入字段,和第二个表(表)存储的每个输入域的附加信息,如选择列表的选择项。
Definitons表包含以下领域:
字段名-给表单输入域的变量的名称
标签——文本标签,显示输入字段前面的文本提示。
类型——一个字符,它代表表单输入字段的形式和输入值的类型。
以下内容如下:
(t)文本输入框,即。
(n)文本输入框,但需要数值。
(m)注释或其他大文本输入的注释类型内容,这是一个多行文本编辑框。
(b)要求输入是或否。这个实现将使用复选框获取此输入,复选框的文本标签是。如果用户选择它,返回值就在。
(r)单选按钮。
(l)下拉列表框。
min -仅用于数字类型输入值,这里给出最小值。在这种情况下,有一个年龄(年龄)数字输入框,设置为最小值为1。
马克斯-此字段的值是输入域的形成有关。一个数字输入框,它代表了最大允许值。例如,年龄的最大值为100,文本输入框,马克斯代表的最大字符数。一个多行文本编辑框,马克斯表示在可见光区域的文本行数。
需要指出它是否必须输入。如果该类型的值是不进入,输入验证器将报告一个错误。在形式上,其值必须被输入星号标记,和用户类的值必须以脚注的形式输入。
本文的例子是一个ASP程序员的调查问卷,这是在定义表的定义如下:
字段标签类型的最小最大要求
名称名称文本(T)- 50 NO
年龄数(n)1100
性别广播按钮(R)是
电子邮件地址文本(T)--它是
语言编程语言下拉列表框(l)-否
表列表用于保存关于输入域定义的一些额外信息,在本例中使用的是两个性别和语言的输入值。表列表非常简单,只包含以下三个字段:
字段名的形式输入域的当前记录属于
值——选择项的值
标签——用户所看到的选择项的提示文本
输入域性只能选择两个值:男性或女性。语言列表,可以应用于ASP环境,包括多种编程语言:VBscript,Javascript,C,Perl,及其他。
第三个表记录保存用户提交的内容,它还包含三个字段,每个字段对应于用户的提交。
记录-注释类型,以查询字符串的形式保存的用户输入。
创建的日期和时间,用户提交form.remoteip的表单提交人的IP地址。
在实际应用中,我们可以收集更多关于用户的信息。简单地说,这个案例只记录了提交时间和用户IP地址的另外两个信息。
两。准备工作
在完成上述数据结构和表单的定义之后,脚本可以下一步编写。脚本的任务是生成表单并处理用户提交的表单。
表单是否产生或处理,如下三个步骤(任务)是必不可少的:第一是确认验证型;当形式生成,验证类型的值是通过查询字符串中获得的,它是从形式隐藏域时处理的形式看有四种形式。验证的方法支持计划:没有验证,客户端Javascript验证,服务器端ASP脚本验证,客户端和服务器端的认证(编号为0至3)。第四认证方法默认如果合法验证方法不在查询字符串中指定。这种方式验证处理使我们能够灵活地运用这种形式产生和处理系统。当客户端禁止使用Javascript身份验证时,我们只能在服务器端执行验证过程:
检查验证类型
下面是引用的片段:
ivaltype = request.querystring(val)
如果IsNumeric(ivaltype)= FALSE然后ivaltype = 3
如果ivaltype > 3或ivaltype<0然后ivaltype = 3
二是开放数据库连接和创建一个记录集对象:RS对象,这是该项目的主要记录集对象,它是用来操作定义表。rslist对象主要是用来从列出的表中读取数据。示例程序提供了两种数据库连接的方法:使用ODBC DSN或不使用ODBC DSN(使用DSN,当你需要创建DSN命名为动态,并使用DSN连接数据库代码已经说了)。
第三个任务是输出一些静态的HTML代码的前(后)为例,形成脚本,并释放资源的遥感与rslist占领当剧本完成。
除了代码完成以上的任务,有两种页面类型可以在示例应用程序的ASP脚本生成:问的形式(见上图),结果页面提交表单之后,还负责记录用户提交的结果,来确定这部分的脚本运行,最简单的方法是检查表单提交:例如,形式处理;否则生成形式。
是生成表单还是处理表单

如果Len(请求表单)= 0
代表
…一点...
其他的
处理表单
…一点...
最后如果