当前位置: 首页 > 图文教程 > 网络编程 > ASP > 用ASP技术开发WEB调查(投票)系统 (3)

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 100 ::
收藏到网摘: n/a

      
  三、调查表单的生成与结果分析
  作 者 : 仙人掌工作室
  
     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(R