<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用ASP學(xué)做一個(gè)在線調(diào)查

    Posted on 2007-11-08 23:27 yukui 閱讀(172) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 技術(shù)

       關(guān)于在線調(diào)查大家一定不會(huì)陌生吧,給出一個(gè)問(wèn)題和數(shù)個(gè)答案,讓用戶填寫(xiě),然后把結(jié)果保存到數(shù)據(jù)庫(kù),自動(dòng)進(jìn)行統(tǒng)計(jì),最后給出個(gè)統(tǒng)計(jì)的圖。這期的跟我學(xué)做就來(lái)做一個(gè)在線調(diào)查系統(tǒng)。

      一、功能設(shè)計(jì)

      這么簡(jiǎn)單的系統(tǒng)也要做功能設(shè)計(jì)?有的人也許會(huì)覺(jué)得奇怪,不過(guò)話說(shuō)回來(lái)不管怎么樣的系統(tǒng),先做功能設(shè)計(jì)總是能對(duì)系統(tǒng)有個(gè)比較清析的了解。讓我們來(lái)看看在線調(diào)查的功能吧。基本的功能上面已經(jīng)說(shuō)了,就是要給出一個(gè)問(wèn)題和數(shù)個(gè)答案,然后統(tǒng)計(jì),最后給出圖。在這個(gè)基礎(chǔ)上,我們可以考慮給一個(gè)調(diào)查加上一個(gè)時(shí)間段(有效期),在這個(gè)時(shí)間段里調(diào)查是有效的,過(guò)了這段時(shí)間就自動(dòng)結(jié)束這個(gè)調(diào)查。另外,我們可以指定一個(gè)用戶一次只能提交一次答案。如果你要限制得更多,可以指定一個(gè)IP只能提交一次答案,不過(guò),這樣可能一個(gè)網(wǎng)吧里的人只能有一個(gè)提交了。對(duì)于調(diào)查里的問(wèn)題,有些可能是單選題,而有些可能是多選 題。最后來(lái)說(shuō)說(shuō)統(tǒng)計(jì)的圖,在統(tǒng)計(jì)圖里要給出答案、每個(gè)答案的投票人數(shù),并要顯示出每個(gè)答案投票數(shù)所占的比例。一般用橫的圖就可以了,也比較容易實(shí)現(xiàn),當(dāng)然,如果你要改成豎的,也可以。

      現(xiàn)在根據(jù)上面總結(jié)出在線調(diào)查的功能如下:

      1、數(shù)據(jù)保存在ACCESS 2000 數(shù)據(jù)庫(kù)中;

      2、每個(gè)用戶一次訪問(wèn)可以投票一次

      3、給出每個(gè)調(diào)查的統(tǒng)計(jì)情況,用統(tǒng)計(jì)圖來(lái)顯示

      4、每個(gè)調(diào)查都有個(gè)有效期,過(guò)期后自動(dòng)結(jié)束。結(jié)束了的調(diào)查只能查看結(jié)果。

      5、管理員可以增加調(diào)查,修改調(diào)查的答案(增加、修改、刪除,修改類(lèi)型)。

      6、對(duì)于已經(jīng)結(jié)束的調(diào)查,管理員只能刪除調(diào)查,而不能修改答案。

      7、只有一個(gè)管理員(單用戶)

      二、數(shù)據(jù)庫(kù)設(shè)計(jì)

      現(xiàn)在來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),根據(jù)功能要求,至少要有三個(gè)表,一是管理員表,二是調(diào)查表,三是調(diào)查結(jié)果表。數(shù)據(jù)庫(kù)文件名為survey.mdb 可以改為.asp 如果改的話,請(qǐng)?jiān)贏SP程序中作相應(yīng)的修改。

    表一、 管理員表 表名: manage
    -----------------------------------------------------------------
    字段 類(lèi)型 長(zhǎng)度 說(shuō)明
    -----------------------------------------------------------------
    manage_id 自動(dòng)編號(hào) - 在這里沒(méi)用到,日后擴(kuò)展用
    manage_username 文本 15 管理員用戶名
    manage_password 文本 15 管理員密碼
    -----------------------------------------------------------------

      建立manage表后加入一條新記錄,填入你的管理員用戶名和密碼,在這里填入的是xmxoxo

    表二、 調(diào)查表 表名: survey
    -----------------------------------------------------------------
    字段 類(lèi)型 長(zhǎng)度 說(shuō)明
    -----------------------------------------------------------------
    survey_id 自動(dòng)編號(hào) - 遞增、主鍵、有索引無(wú)重復(fù)
    survey_question 文本 255 調(diào)查問(wèn)題
    survey_type 是否 - 類(lèi)型,否:單選 是:多選
    survey_stime 日期 - 長(zhǎng)日期,開(kāi)始時(shí)間
    survey_etime 日期 - 長(zhǎng)日期,結(jié)束時(shí)間
    -----------------------------------------------------------------

      表三、調(diào)查結(jié)束表 表名:survey_vote

    -----------------------------------------------------------------
    字段 類(lèi)型 長(zhǎng)度 說(shuō)明
    -----------------------------------------------------------------
    vote_no 自動(dòng)編號(hào) - 遞增、主鍵、有索引無(wú)重復(fù)
    vote_id 長(zhǎng)整型 - 有索引有重復(fù),小數(shù)位0
    vote_answer 文本 100 調(diào)查答案
    vote_count 長(zhǎng)整型 - 投票數(shù)
    -----------------------------------------------------------------

      其中,survey_vote表和survey表的id字段有多對(duì)一的關(guān)系。并不一定要建立這個(gè)關(guān)系,但是建立關(guān)系會(huì)使思路更明確。

      三、包含文件

      這里所要用到的函數(shù)并不多,主要是對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的,如果要防止輸入時(shí)的HTML等代碼,直接用server.htmlencode進(jìn)行處理就可以了,所以不需要一個(gè)專(zhuān)門(mén)的函數(shù)來(lái)處理。我們可以沿用上一篇《跟我學(xué)》系列《跟我學(xué)做樹(shù)型菜單》里的包含文件。

      共用函數(shù)文件,文件名:inc.asp

    <%
    '*******************************************************************
    '通用數(shù)據(jù)庫(kù)ASP函數(shù)
    '*******************************************************************
    '數(shù)據(jù)庫(kù)常數(shù)
    databasename="survey.mdb" '數(shù)據(jù)庫(kù)名,如果改名的話,在這里修改就行了
    '*******************************************************************
    '打開(kāi)數(shù)據(jù)庫(kù)
    sub opendb(connect)
    set connect=server.CreateObject("ADODB.connection")
    connect.ConnectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &_
    server.MapPath(databasename)
    connect.Open strconn
    end sub
    '*******************************************************************
    '關(guān)閉數(shù)據(jù)庫(kù)
    sub closedb(connect)
    connect.close
    set connect=nothing
    end sub
    '*******************************************************************
    '打開(kāi)單個(gè)表讀
    sub opentable(connect,tbname,myrs)
    set myrs=server.createobject("ADODB.recordset")
    rssql="select * from " & tbname
    myrs.open rssql,connect,1,1
    end sub
    '*******************************************************************
    '關(guān)閉臨時(shí)表
    sub closetable(rs)
    rs.close
    set rs=nothing
    end sub
    '*******************************************************************
    '查詢數(shù)據(jù)庫(kù)
    sub searchtable(connect,sql,rs)
    set rs=server.createobject("ADODB.recordset")
    rs.open sql,connect,1,1
    end sub

    '*******************************************************************
    '查詢并更改數(shù)據(jù)庫(kù)
    sub changetable(connect,sql,rs)
    set rs=server.createobject("ADODB.recordset")
    rs.open sql,connect,1,3
    end sub

    '*******************************************************************
    '顯示信息 用于調(diào)試
    Sub w(msg)
    response.write msg
    end sub

    '*******************************************************************
    '程序中斷 用于調(diào)試
    sub userstop()
    response.end
    end sub
    %> 

      四、文件設(shè)計(jì)

      按照傳統(tǒng)的思路,我們總是把在線調(diào)查設(shè)計(jì)成三個(gè)部份,一、是顯示調(diào)查表;二、是顯示調(diào)查統(tǒng)計(jì)結(jié)果;三是后臺(tái)管理。而在實(shí)際應(yīng)用中,我們會(huì)發(fā)現(xiàn),顯示調(diào)查表往往是在某個(gè)網(wǎng)頁(yè)中的,顯示結(jié)果一般也是彈出一個(gè)窗口來(lái)。后臺(tái)管理則是通過(guò)另一個(gè)鏈接或者登錄表單轉(zhuǎn)向到的。為了更方便地使用在線調(diào)查,我們把顯示調(diào)查表部分寫(xiě)成一個(gè)JS腳本,讓需要顯示調(diào)查表的網(wǎng)頁(yè)通過(guò)引用腳本的方式來(lái)自由地調(diào)用它。好,看看文件設(shè)計(jì)

      1、inc.asp 包含文件。主要的函數(shù)庫(kù)

      2、surveycode.asp 顯示調(diào)查表程序。在主網(wǎng)頁(yè)中使用腳本來(lái)調(diào)用它。

      3、survey.asp 調(diào)查表列表程序。列出所有調(diào)查的狀態(tài)。

      4、survey_vote.asp 顯示調(diào)查統(tǒng)計(jì)結(jié)果程序。帶上參數(shù)表示調(diào)查的問(wèn)題。

      5、survey_manage.asp 管理程序。

      在這里,我們略過(guò)了頁(yè)面設(shè)計(jì),因?yàn)轱L(fēng)格設(shè)計(jì)不是我們所要說(shuō)的內(nèi)容,所以關(guān)于網(wǎng)頁(yè)的風(fēng)格,布局,CSS 等等,請(qǐng)大家自己設(shè)計(jì)。

      五、文件流程

      先寫(xiě)出程序的主要流程,可以比較方便于日后修改和擴(kuò)展、移植。在這里比較重要的是要在程序中寫(xiě)哪些子程序,如何安排這些子程序。

      1、surveycode.asp 顯示調(diào)查表單

    <%
    '獲取querystring參數(shù),id 表示調(diào)查編號(hào)
    '判斷參數(shù)正確性
    '判斷調(diào)查是否在有效期中。
    '讀取調(diào)查問(wèn)題、類(lèi)型
    '輸出調(diào)查答案,并生成調(diào)查表單
    '關(guān)閉數(shù)據(jù)庫(kù)及表
    %>

      2、survey.asp 顯示所有調(diào)查狀態(tài)

    <%
    '讀取數(shù)據(jù)庫(kù)
    %>
    <html>
    '顯示所有調(diào)查狀態(tài),并加入鏈接
    </html> 

      3、survey_vote.asp 顯示統(tǒng)計(jì)結(jié)果。

      這里有兩個(gè)功能,一是沒(méi)有提交的顯示,二是提交了答案后進(jìn)行統(tǒng)計(jì),然后顯示結(jié)果。如果不帶參數(shù),就是第一種方式。也可以分為兩個(gè)文件來(lái)完成。

    <%
    '獲取參數(shù)。id 表示調(diào)查編號(hào) 所有數(shù)據(jù)來(lái)自form
    '判斷是否有參數(shù),有則先進(jìn)行統(tǒng)計(jì)
    '沒(méi)有則直接顯示
    '統(tǒng)計(jì)子程序
    %>
    <html>
    '顯示子程序
    </html>

      4、survey_manage.asp 管理程序。

      管理部份比較復(fù)雜,要實(shí)現(xiàn)較多的功能。先來(lái)列一下管理的功能:

      1)管理員登錄。只有登錄后才能進(jìn)行管理

      2)退出登錄。完成管理后安全退出。

      對(duì)調(diào)查的管理有:

      3)增加一個(gè)調(diào)查。同時(shí)要增加調(diào)查答案

      4)修改一個(gè)調(diào)查。修改內(nèi)容,時(shí)間,類(lèi)型,調(diào)查答案的內(nèi)容、增加、刪除

      5)刪除一個(gè)調(diào)查。不能刪除正在進(jìn)行的調(diào)查。

      針對(duì)這些功能,來(lái)設(shè)計(jì)它的流程

    <%
    '獲取參數(shù)。action表示動(dòng)作,分別對(duì)應(yīng)上面的功能。
    '根據(jù)動(dòng)作來(lái)轉(zhuǎn)向相應(yīng)的子程序
    '登錄子程序
    '退出登錄子程序
    '執(zhí)行增加調(diào)查問(wèn)題子程序
    '執(zhí)行增加調(diào)查答案子程序
    '執(zhí)行修改調(diào)查子程序 問(wèn)題和答案一起修改
    '執(zhí)行刪除調(diào)查問(wèn)題子程序
    '執(zhí)行刪除調(diào)查答案子程序
    <html>
    <%
    '判斷是否登錄,沒(méi)有則顯示登錄表單
    '根據(jù)動(dòng)作顯示相應(yīng)表單
    '顯示所有調(diào)查子程序
    '顯示單個(gè)調(diào)查子程序。問(wèn)題和答案一起顯示
    '顯示增加調(diào)查子程序。
    '顯示登錄表單
    %>
    </html> 

      六、代碼編寫(xiě)

      做好了流程設(shè)計(jì)后,寫(xiě)代碼就比較有條理了。讓我們從簡(jiǎn)單的開(kāi)始。在編寫(xiě)代碼
    之前,我們要先在數(shù)據(jù)庫(kù)里輸入一些記錄,以便做測(cè)試。先加入一條調(diào)查問(wèn)題,和幾個(gè)
    調(diào)查答案,并手工輸入一些統(tǒng)計(jì)信息。

     我們先來(lái)寫(xiě)顯示調(diào)查表單的surveycode.asp 這個(gè)文件要在其它頁(yè)面中被調(diào)用,所以我們寫(xiě)成JS和VBS混用的方式。調(diào)用的時(shí)候可以把它放在某個(gè)表格中,用下面的語(yǔ)句:

    <SCRIPT Language="JavaScript" SRC="surveycode.aspid=1"></SCRIPT>

      按照上面的流程,在顯示表單前,先要判斷一下調(diào)查是否存在,是否在進(jìn)行中。另外,在表單中要提交一個(gè)隱藏的參數(shù),來(lái)表示調(diào)查的問(wèn)題編號(hào)(id),答案提交的時(shí)候,提交的是答案的編號(hào)vote_no

      文件名 surveycode.asp

    <!--#include file="inc.asp" -->
    <%
    id=request.querystring("id")
    if id<>"" then '如果有參數(shù)
    opendb my '聯(lián)接數(shù)據(jù)庫(kù)
    sql="select * from survey where survey_id="& id '查詢語(yǔ)句
    searchtable my,sql,rs '查詢數(shù)據(jù)庫(kù)
    if not rs.eof then '如果有這個(gè)調(diào)查記錄
    question=rs("survey_question") '讀出問(wèn)題
    surveytype=rs("survey_type") '讀出答案類(lèi)型
    stime=rs("survey_stime") '讀出開(kāi)始時(shí)間
    etime=rs("survey_etime") '讀出結(jié)束時(shí)間
    closetable rs '關(guān)閉表
    if stime<now() and etime>now() then '如果調(diào)查正在進(jìn)行中
    '下面輸出調(diào)查表單
    '先輸出表單和問(wèn)題,表單提交到survey_vote.asp
    %>
    document.write("<form action='survey_vote.asp' target='_blank' method='post'>");
    document.write("<table border='1' cellpadding='2' cellspacing=0' bordercolorligh='#000000'");
    document.write(" bordercolordark='#ffffff' width='100%' align='center'><tbody>");
    document.write("<tr><td colspan='2' align='center'><b><%=server.htmlencode(question)%></b></td></tr>");
    <%
    sql="select vote_no,vote_answer from survey_vote where vote_id="&id '查詢答案的SQL
    searchtable my,sql,rs '執(zhí)行查詢
    if not rs.eof then '如果有答案,就輸出
    for i=1 to rs.recordcount
    %>
    document.write("<tr><td align='right'><input name='res' type='");
    <%
    if surveytype then '判斷類(lèi)型,顯示單選或者多選
    %>
    document.write("checkbox");
    <%else%>
    document.write("radio");
    <%end if '下面這句輸出答案的文字和提交的值(vote_no)%>
    document.write("' value=<%=rs("vote_no")%>></td><td><%=rs("vote_answer")%></td></tr>");
    <%
    rs.movenext
    next
    '下面幾句輸出一個(gè)隱藏的參數(shù),傳遞問(wèn)題編號(hào)(id)
    '并用一個(gè)JS函數(shù)來(lái)定義點(diǎn)擊查看后的鏈接
    %>
    document.write("<tr><td colspan='2' align='center'><input type='hidden' name='id' value='<%=id%>'>");
    document.write("<input type='submit' class=button value='投票'> ");
    document.write("<input type=button class=button value='查看' onclick='jump(<%=id%>)'>");
    document.write("</td></tr></tbody></table></form>");
    function jump(id){
    window.open("survey_vote.aspid="+id,"survey")
    }
    <%
    end if
    end if
    end if
    closetable rs
    closedb my
    end if
    %>

      在surveycode.asp完成后,我們實(shí)現(xiàn)上已經(jīng)確定了以下幾點(diǎn):

      1、在survey_vote.asp中,如果querystring參數(shù)id有值,則是查看結(jié)果;

      2、在survey_vote.asp中,如果form參數(shù)id有值,則要先進(jìn)行統(tǒng)計(jì);

      3、在survey_vote.asp中,提交來(lái)的form參數(shù)res是答案的編號(hào)vote_no;

      七、統(tǒng)計(jì)結(jié)果

      首先我們來(lái)完成與surveycode.asp最密切相關(guān)的顯示統(tǒng)計(jì)結(jié)果survey_vote.asp文件。在上一篇的結(jié)尾,我們已經(jīng)說(shuō)明了在surveycode.asp中確定的一些參數(shù)。

      統(tǒng)計(jì)結(jié)果 survey_vote.asp

    <!--#include file="inc.asp" -->
    <html>
    <head>
    <title>調(diào)查統(tǒng)計(jì)結(jié)果</title>
    <link rel="stylesheet" href="main.css" type="text/css">
    </head>
    <body>
    <%
    '上一句先加入包含文件,引用函數(shù)。
    id=request.querystring("id") '獲取querystring參數(shù)id
    opendb my '連接數(shù)據(jù)庫(kù)
    if id="" then '如果沒(méi)有,則不是直接看結(jié)果
    id=request.form("id") '獲取form參數(shù)id
    if id<>"" then '如果有值,則是要先統(tǒng)計(jì)
    surveycount() '調(diào)用統(tǒng)計(jì)子程序
    end if
    end if
    if id<>"" then
    disp_survey() '不管是哪種,最后都顯示結(jié)果
    end if
    closedb my '關(guān)閉數(shù)據(jù)庫(kù)

    '-----統(tǒng)計(jì)子程序-----
    sub surveycount()
    if session("survey_ok")="" then '如果還沒(méi)投票
    no=request.form("res") '得到答案的編號(hào)
    if no<>"" then
    '定義SQL語(yǔ)句,讓提交的答案數(shù)量+1
    sql="update survey_vote set vote_count=vote_count+1 where vote_no= in (" & no &")"
    my.execute sql
    end if
    session("survey_ok")="ok"
    end if
    end sub
    '------------------

    '---顯示結(jié)果子程序---
    sub disp_survey()

    '定義SQL語(yǔ)句,得到調(diào)查的問(wèn)題
    sql="select survey_question from survey where survey_id=" & id
    searchtable my,sql,rs '執(zhí)行查詢
    question=rs("survey_question") '把問(wèn)題存到question中
    closetable rs '關(guān)閉表
    '定義SQL語(yǔ)句,得到答案的數(shù)量總和
    sql="select sum(vote_count) as total from survey_vote where vote_id="& id
    searchtable my,sql,rs
    total=rs("total")
    closetable rs '關(guān)閉表

    '定義SQL語(yǔ)句,得到所有的答案文本部份及投票數(shù)
    sql="select vote_answer,vote_count from survey_vote where vote_id=" & id
    searchtable my,sql,rs '執(zhí)行查詢
    '下面用表格來(lái)輸出統(tǒng)計(jì)表
    %>
    <table width="500" border="1" align="center" cellpadding="2" cellspacing="0"
    bordercolorligh="#000000" bordercolordark="#ffffff">
    <tr>
    <td colspan="4" align="center"><b>調(diào)查統(tǒng)計(jì)結(jié)果</b></td>
    </tr>
    <tr>
    <td colspan="4"><b>調(diào)查問(wèn)題:<%=question%></b></td>
    </tr>
    <tr >
    <td width="150" align="center" height="20">答案</td>
    <td width="150" align="center" height="20">投票率</td>
    <td width="100" align="center" height="20">比例</td>
    <td width="100" align="center" height="20">票數(shù)</td>
    </tr>
    <%do while not rs.eof
    if total=0 then
    percent=0 '如果沒(méi)人投票,則百分比為0
    else
    percent=int(rs("vote_count")/total*10000)/100 '計(jì)算百分比
    end if
    %>
    <tr>
    <td width="150" align="center"><%=rs("vote_answer")%></td>
    <td width="150" align="left">
    <table border="0" width="<%=percent%>" bgcolor="#CCCC00" height="10">
    <tr>
    <td></td>
    </tr>
    </table>
    </td>
    <td width="100" align="center"><%=percent%>%</td>
    <td width="100" align="center"><%=rs("vote_count")%></td>
    </tr>
    <%
    rs.movenext
    loop
    %>
    <tr>
    <td colspan="4"> 至 <%=now()%> 止,共有 <%=total%> 張投票
    <a href="javascript:window.close()">關(guān)閉窗口</a>
    </td>
    </tr>
    </table>
    <%
    closetable rs '關(guān)閉表
    end sub
    '------------------
    %>
    </body>
    </html> 

      在顯示投票過(guò)程中,我們用session變量survey_ok來(lái)表示是否已經(jīng)投過(guò)票。另外,這顯示統(tǒng)計(jì)中,引用CSS文件來(lái)控制表格的樣式,你們可以根據(jù)自己的要求自己加入。

      八、列出所有調(diào)查的狀態(tài)

      現(xiàn)在我們來(lái)完成survey.asp,它的主要任務(wù)是列出所有的調(diào)查狀態(tài),包括:

      1、調(diào)查的問(wèn)題,鏈接到投票表單頁(yè)面(直接寫(xiě)在本頁(yè)中);

      2、調(diào)查的起啟時(shí)間;

      3、調(diào)查的結(jié)束時(shí)間;

      4、調(diào)查的進(jìn)行狀態(tài):未開(kāi)始、進(jìn)行中、已結(jié)束;

      5、調(diào)查的投票數(shù);

      6、調(diào)查的類(lèi)型,單選還是多選;

      7、另外給出一個(gè)鏈接查看投票結(jié)果;

      根據(jù)這些要求,查詢相應(yīng)的表就可以了,有些語(yǔ)句,比如得到投票總數(shù),SQL語(yǔ)句其實(shí)在上面的survey_vote.asp中已經(jīng)寫(xiě)過(guò)了。

      列出所有調(diào)查的狀態(tài) survey.asp


    <!--#include file="inc.asp" -->
    <html>
    <head>
    <title>在線調(diào)查列表</title>
    <link rel="stylesheet" href="main.css" type="text/css">
    </head>
    <body>
    <%
    id=request.querystring("id") '獲取參數(shù)
    if id<>"" then '如果有參數(shù),則顯示這個(gè)調(diào)查表單
    response.write "<SCRIPT Language='JavaScript' SRC='surveycode.aspid="&id&"'></SCRIPT>"
    else '否則調(diào)用子程序顯示狀態(tài)
    disstat()
    end if

    '-----顯示狀態(tài)子程序----
    sub disstat()
    opendb my '連接數(shù)據(jù)庫(kù)
    opentable my,"survey",rs '直接打開(kāi)表
    '下面用表格顯示每個(gè)記錄
    '先顯示表頭
    %>
    <table width="760" border="1" cellspacing="0" cellpadding="2"
    align="center" bordercolorligh="#000000" bordercolordark="#ffffff">
    <tr>
    <td colspan="8" align="center"><b>在線調(diào)查列表</b></td>
    </tr>
    <tr >
    <td width="50" align="center" height="20">編號(hào)</td>
    <td width="200" align="center" height="20">調(diào)查問(wèn)題</td>
    <td width="50" align="center" height="20">類(lèi)型</td>
    <td width="140" align="center" height="20">起啟時(shí)間</td>
    <td width="140" align="center" height="20">結(jié)束時(shí)間</td>
    <td width="50" align="center" height="20">狀態(tài)</td>
    <td width="80" align="center" height="20">已投票數(shù)</td>
    <td width="50" align="center" height="20">查看</td>
    </tr>
    <%
    '下面輸出每個(gè)記錄
    do while not rs.eof
    '先讀出每個(gè)字段
    id=rs("survey_id")
    question=rs("survey_question")
    '讀出類(lèi)型
    if rs("survey_type") then
    stype="多選"
    else
    stype="單選"
    end if
    stime=rs("survey_stime")
    etime=rs("survey_etime")
    '判斷狀態(tài)
    if now()<stime then
    stat="未開(kāi)始"
    else
    if now<etime then
    stat="進(jìn)行中"
    else
    stat="已結(jié)束"
    end if
    end if

    '定義SQL語(yǔ)句,得到答案的數(shù)量總和
    sql="select sum(vote_count) as total from survey_vote where vote_id="& id
    searchtable my,sql,tmprs '查詢
    total=tmprs("total")
    closetable tmprs '關(guān)閉表
    '下面輸出一條記錄
    %>
    <tr >
    <td align="center" height="20"><%=id%></td>
    <td height="20">
    <a href="survey.aspid=<%=id%>"><%=question%></a>
    </td>
    <td align="center" height="20"><%=stype%></td>
    <td align="center" height="20"><%=stime%></td>
    <td align="center" height="20"><%=etime%></td>
    <td align="center" height="20"><%=stat%></td>
    <td align="center" height="20"><%=total%></td>
    <td align="center" height="20">
    <a href="survey_vote.aspid=<%=id%>" target="_blank">查看</a>
    </td>
    </tr>
    <%
    rs.movenext '移動(dòng)到下一條,循環(huán)
    loop
    %>
    </table>
    <%
    closetable rs '關(guān)閉表
    closedb my '關(guān)閉數(shù)據(jù)庫(kù)
    end sub
    '----------------------
    %>
    </body>
    </html>
     

      九、后臺(tái)管理

      在后臺(tái)管理頁(yè)面survey_manage.asp中,前面我們已經(jīng)列出來(lái)它所要實(shí)現(xiàn)的管理功能。管理的流程是先顯示出所有調(diào)查,對(duì)于還沒(méi)有開(kāi)始的調(diào)查,可以進(jìn)行修改、刪除;對(duì)于已經(jīng)結(jié)束的調(diào)查,可以刪除,不能修改;對(duì)于正在進(jìn)行的調(diào)查,只能修改它的結(jié)束時(shí)間。用一個(gè)參數(shù)action來(lái)表示動(dòng)作,含義如下:

      1、無(wú)參數(shù)。表示第一次進(jìn)入,顯示登錄表單

      2、login 表示執(zhí)行登錄

      3、logout 表示執(zhí)行退出登錄

      4、showaddquestion 表示顯示增加一個(gè)調(diào)查

      5、showsurvey 表示顯示一個(gè)調(diào)查

      6、doaddsurvey 表示執(zhí)行增加一個(gè)調(diào)查

      7、doaddanswer 表示執(zhí)行增加一個(gè)答案

      8、dodelsurvey 表示刪除一個(gè)調(diào)查

      9、dodelanswer 表示刪除一個(gè)答案

      10、domodify 表示修改一個(gè)調(diào)查及答案 

    posts - 131, comments - 12, trackbacks - 0, articles - 32

    Copyright © yukui

    主站蜘蛛池模板: 亚洲理论片在线观看| 国内精品一级毛片免费看| 久久国产亚洲精品无码| 亚洲国产综合无码一区二区二三区 | 亚洲中文字幕无码mv| 亚洲精品**中文毛片| 亚洲动漫精品无码av天堂| 中文字幕亚洲激情| 亚洲国产精品无码久久久久久曰| 久久久久国色AV免费观看性色| 久久99国产乱子伦精品免费| 女人隐私秘视频黄www免费| 一级大黄美女免费播放| 黄色网址大全免费| 国产精品亚洲精品日韩电影| 在线aⅴ亚洲中文字幕| 亚洲综合综合在线| 亚洲日本中文字幕| 亚洲丁香色婷婷综合欲色啪| 国产精品亚洲аv无码播放| 亚洲色欲久久久综合网| 在线观看亚洲天天一三视| 久久99亚洲综合精品首页| 亚洲一级Av无码毛片久久精品| 亚洲A丁香五香天堂网| 亚洲av手机在线观看| jizzjizz亚洲| 亚洲人成网站18禁止一区| 亚洲人成电影网站国产精品| 国产偷国产偷亚洲高清日韩| 中文字幕亚洲不卡在线亚瑟| 日韩精品亚洲aⅴ在线影院| 亚洲一区精品无码| 亚洲a一级免费视频| 亚洲一区二区三区高清| 亚洲国产精品一区二区久| www.亚洲日本| 日本亚洲高清乱码中文在线观看| 免费国产a理论片| 亚洲精品偷拍视频免费观看| 免费看黄的成人APP|