用ASP技术开发WEB调查(投票)系统 (3)

web|投票|投票

三、调查表单的生成与结果分析
  作 者 : 仙人掌工作室
  
     PollWriter.asp先检查表单变量,包括调查项目名字PollName以及(可选的)字符串LinkText和LinkURL,LinkText和LinkURL描述了用户提交其投票结果之后显示的URL。接下来脚本创建并执行从指定调查项目的S_表和A_表提取记录集的SQL命令,然后遍历这个记录集格式化单选按钮、复选框以及其它提示文本,最后输出该调查项目的HTML表单。表单中问题的名字为“CHOICE”加问题序号。当这个表单被提交的时,它的ACTION将装载PollMaker.asp(这里的函数saveResponses()从CHOICE表单元素提取投票结果,然后更新数据库,代码略)。表单中的其它隐藏变量用于将PollName、OpType、LinkText、LinkURL传递给PollMaker.asp:
  
  
   < %
   ' 从S_表和A_表读取调查项目定义
   Set objConn = Server.CreateObject("ADODB.Connection")
   objConn.Open "poll"
   SQLCommand = "Select " & SName & ".ID, " & _
    "IType, NoOpinion, Stem, ALabel, Answer FROM " & SName & "LEFT JOIN " & _
    AName & " ON " & SName & ".ID = " & AName & ".ID ORDER BY " & _
    SName & ".ID, ALabel"
   Set objRS = objConn.Execute(SQLCommand)
   ' 向调查表单输出各个问题
   Do While Not objRS.EOF
    Response.Write("< TR>< TD>" & objRS("ID") & ".< TD BGCOLOR=""#ffff00"">" & _
    objRS("Stem"))
    Response.Write("< TR>< TD>< TD>")
    ckNoOpinion = IIf(objRS("NoOpinion") = "Y", "", "Checked")
    noMove = False
    ' 除"允许复选",其它各类问题均需检查是否允许不回答问题
    ansName = """CHOICE" & objRS("ID") & """"
    Select Case objRS("IType")
    Case "1" ' 是/否
    If ckNoOpinion = "" Then
    Response.Write(" < INPUT TYPE=radio NAME=" & ansName & _
    " VALUE="" "" Checked>暂不回答 ")
    End If
    Response.Write("< INPUT TYPE=radio NAME=" & ansName & _
    " VALUE=""A"" " & ckNoOpinion & ">是")
    Response.Write("< INPUT TYPE=radio NAME=" & ansName & _
    " VALUE=""B"">否")
    Case "2" ' 赞同程度
    ...略...
    Case "3" ' 语义区分
    ...略...
    Case "4" ' 多项选择
    ...略...
    Case "5" ' 允许复选
    ...略...
    End Select
    If NoMove Then
    NoMove = False
    ElseIf Not objRS.EOF Then
    objRS.MoveNext
    End If
   Loop
   %>
   
  
     PollResult.asp使用与PollWrite.asp同样的SQL命令从A_表(答案)和S_表(问题)提取记录集,接着从对应的R_表读取用户回答结果,用一个二维数组Counts统计投票结果。缺省时结果分析中不包含“没有回答”,如果要包含,则需给出表单变量ShowNoOp并指定其值为True,请参见图4中显示投票结果的URL。
  
  
   < %
   'Globals
   Dim PollName
   Dim Counts() ' 用户回答的统计数组
   Dim nResponses
   Dim N ' 用户回答数量,可能不包含"没有回答"选项
   Dim objConn
   Dim objRS
   
   nResponses = 0
   
   Call Main
   
   Sub Main
    Dim likert
    Dim i
    Likert = Array("强烈反对","反对", "不确定","同意","完全赞成")
    PollName = Request("PollName")
    ShowNoOp = IIf(UCase(Request("ShowNoOp"))="TRUE", True, False)
    ' 从A_表和S_表读取调查项目定义
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "poll"
    SName = "[S_" & PollName & "]"
    AName = "[A_" & PollName & "]"
   
    If Count() = False Then
    Response.Write("< BR>此调查项目没有投票结果")
    Exit Sub
    End If
    SQLCommand = "Select " & SName & ".ID, " & _
    "IType, NoOpinion, Stem, ALabel, Answer FROM " & SName & _
    "LEFT JOIN " & AName & " ON " & SName & ".ID = " & AName & _
    ".ID ORDER BY " & SName & ".ID, ALabel"
    Set objRS = objConn.Execute(SQLCommand)
   
    Response.Write("< TABLE>")
    ... 输出表单标题,略 ...
    Response.Write("< TR>< TD COLSPAN=5> ")
    itemIx = 0 ' 问题序号
    Do While Not objRS.EOF
    IType = objRS("IType")
    NoMove = False
    N = IIf(ShowNoOp Or IType=5, nResponses, nResponses-Counts(itemIx, 0))
    N = IIf(N=0, 1, N)
    Response.Write("< TR>< TH ALIGN=right>" & objRS("ID") & _
    ".< TH ALIGN=left COLSPAN=4 BGCOLOR=""#ffff00"">" & objRS("Stem"))
    Response.Wr

时间: 2024-11-03 23:14:58

用ASP技术开发WEB调查(投票)系统 (3)的相关文章

用 ASP 技术开发WEB调查(投票)系统 (1)

web|投票|投票 纲要       本文介绍一个用 ASP 技术实现的 WEB 调查系统(也称为投票系统)的实现,该系统支持基于浏览器的调查项目创建与维护.调查表单的动态生成以及投票结果分析.    目录      一.系统概貌   二.调查项目的创建和维护   三.调查表单的生成与结果分析(附源程序)         一.系统概貌   作 者 : 仙人掌工作室       本文所介绍的 WEB 调查系统(或称为投票系统)支持基于浏览器的调查项目创建.管理与结果分析.调查项目及其下属各个问题的

用ASP技术开发WEB调查(投票)系统 (2)

web|投票|投票 二.调查项目的创建和维护   作 者 : 仙人掌工作室       本节我们说明调查项目创建和维护功能的实现.       创建与维护调查项目的起始页面是Startup.html,该页面负责设定PollMaker.asp和ItemMaker.asp等页面使用的帧结构(从上到下共分三个帧).起始页面所引用的Blank.html只用于指定背景颜色,StartMsg.html提供启动时显示在最下面帧的提示信息.       PollMaker.asp和ItemMaker.asp都包

利用ASP技术开发基于WWW的数据库检索程序

程序|数据|数据库  ASP是微软公司推出的用以取代CGI的新技术,是目前公认的建立Windows NT动态站点最好的工具.它与ADO(Active Data Object,一种新的数据访问模型)的充分结合,提供了强大的数据库访问功能,使之成为进行网上数据库管理的重要手段.     一.ASP简介   ASP内含于Internet Information Server(简称IIS3.0)中,扩展名以.asp表示.ASP文件可以用常规的文本编辑器编辑,也可以利用专门的辅助开发工具InterDev进

准备使用MySQL与ASP.NET开发Web应用

asp.net|mysql|web 最近准备用Mysql+.net作开发,看了三篇文章:      1)MySQL与ASP.NET配合更强大:      2)选择MySQL还是SQL Server:      3)MySQL和.Net2.0配合使用. MySQL与ASP.NET配合更强大 由于富有竞争力的价格和易于使用,MySQL在市场占有率方面逐步提升.开放源代码社区为了扩展MySQL的使用范围,开发出了.Net框架(.NET Framework)中可以使用的数据库连接器.我们就来学习一下如何

如何使用Ajax技术开发Web应用程序(3)

ajax|web|程序 在这个关于AJAX系列的第三部分中(相关文章:第一部分.第二部分),我们将学习如何使用AJAX与服务端进行写作以及这些技术如何产生强大的web应用程序.如果你对学习如何构建类似GMail或者Google Maps的web程序感兴趣的话,这是一篇基础的入门(虽然那两个东东会比我们在这篇文章中提及的内容复杂的多).在这篇文章中,我使用PHP作为服务端语言,但AJAX能够和任何服务端语言进行很好的兼容,所以你尽可以选择你所钟爱的任何语言! 我们还是从我们上一篇文章的代码(喏,就

如何使用Ajax技术开发Web应用程序(2)

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用Ajax技术开发Web应用程序

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

J2EE基础:使用JSF技术开发Web应用程序

j2ee|js|web|程序 (1)视图设计 方便.快捷地开发基于JSF的Web应用程序,是在JSF提供了一组丰富的.可重用的服务器端用户界面组件的条件下实现的.在开发工具的支持下,用户可以很容易地在可视化环境中利用这些组件构建Web用户界面,处理组件的数据校验.事件处理等用户界面管理问题. 设计每个需要的JSP页面,在页面中放置JSF的内置组件,并将组件与应用层的JavaBean绑定.利用RAD工具能通过拖放组件的方式轻松实现页面文件,不需要手写大量代码.开发工具自动生成页面对应的java文件

如何使用Ajax技术开发Web应用程序(1)

在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制.虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向.在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发者更多的自由开发先进的web应用程序.这些通过javascript来异步取得xml数据的应用程序,被亲切的称为"Ajax应用程序"(Asynchrono