誰もがオンライン調査に精通している必要があります。ユーザーが記入するためにいくつかの回答が与えられ、結果がデータベースに保存され、統計が自動的に実行され、最後に統計グラフが与えられます。この号では、私に従って、オンライン調査システムを作成してください。
1。機能設計:
このような単純なシステムを機能的に設計する必要がありますか?一部の人々はそれを奇妙に感じるかもしれませんが、それがどんな種類のシステムであっても、最初に機能設計を行うと、常にシステムをより明確に理解することができます。オンライン調査で何ができるかを見てみましょう。基本的な機能は上記で言及されています。これは、質問といくつかの回答を行い、統計を作成し、最後にグラフを与えることです。これに基づいて、この期間に期間(有効期間)を追加することを検討できます。さらに、ユーザーは一度に1回のみ回答を送信できることを指定できます。より制限的になりたい場合は、IPが回答を1回しか送信できないことを指定できます。調査の質問については、一部は単一選択の質問である可能性があり、一部は複数選択の質問である場合があります。最後に、統計グラフ、回答、各回答の有権者の数、および各回答の投票の割合について説明します。一般的に、もちろん、垂直図に変更したい場合は、水平図を使用するだけで十分です。
上記に基づいて、オンライン調査の機能は次のように要約されています。1
。アクセス
2000データベースにデータが保存されます
。統計チャート
4。各調査には有効期限があり、有効期限後に自動的に終了します。完了したアンケートの結果のみを表示できます。
5. 管理者は、アンケートを追加したり、アンケートの回答を変更したりできます (追加、変更、削除、タイプの変更)。
6. 終了したアンケートの場合、管理者はアンケートを削除することのみができますが、回答を変更することはできません。
7.管理者(単一ユーザー)のみがあります
。データベース設計
機能要件に応じて、少なくとも3つのテーブルが必要です。 3番目は調査結果表です。データベース ファイル名は Survey.mdb ですが、.asp に変更できます。その場合は、ASP プログラムで対応する変更を行ってください。
表 1. 管理者テーブル テーブル名: manage
-------------------------------------------------- ---------------
フィールドタイプの長さの説明
-------------------------------------------------- ---------------
manage_id 自動番号付け - ここでは使用されませんが、将来拡張される予定です
manage_username テキスト 15 管理者のユーザー名
manage_password テキスト 15 管理者パスワード
-------------------------------------------------- --------------
テーブルの管理後、新しいレコードを追加して、XMXOXOのユーザー名とパスワードを入力します。
調査テーブル名:調査:調査
-------------------------------------------------- ---------------
フィールドタイプの長さの説明
-------------------------------------------------- ---------------
Survey_id の自動番号付け - 増分、主キー、インデックス付き、重複なし
調査質問テキスト 255 調査質問
Survey_type if - タイプ、いいえ: 単一選択 はい: 複数選択
Survey_stime 日付 - 長い日付、開始時間
Survey_etime date - 長い日付、終了時刻
-------------------------------------------------- ---------------
表 3. アンケート終了フォーム テーブル名: Survey_vote
------------------------ --------------------------------------
フィールドタイプの長さの説明
-------------------------------------------------- ---------------
vote_no 自動番号付け - 増加、主キー、インデックス付き、重複なし
vote_id 長整数 - インデックス付きで繰り返され、小数点 0
vote_answer テキスト 100 件のアンケート回答
vote_count long - 投票数
-------------------------------------------------- ---------------
その中で、Survey_voteテーブルと調査テーブルのIDフィールドには、1対1の関係があります。この関係を確立する必要はありませんが、関係を確立するとアイデアがより明確になります。
3.ここでは、ファイルを含める
ために使用されています
。処理する特別な機能。以前の記事「Learn from me」シリーズ「Learn from me でツリーメニューを作成する」に含まれているファイルを引き続き使用できます。
共有関数ファイル、ファイル名:inc.asp
<%
''*********************************************** *******************
''データベース共通ASP機能
''*********************************************** *******************
''データベース定数
databasename = "survey.mdb" ''データベース名、名前を変更した場合は、ここで変更するだけです
''*********************************************** *******************
''データベースを開きます
Sub OpendB(connect)
connect = server.createObject( "adodb.connection")を設定します
connect.ConnectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &_
サーバー.MapPath(データベース名)
connect.open strconn
エンドサブ
''*********************************************** *******************
''データベースを閉じます
sub closedb(connect)
connect.close
Connect = Nothingを設定します
エンドサブ
''*********************************************** *******************
'' 読み取り用に 1 つのテーブルを開きます
サブ opentable(connect,tbname,myrs)
set myrs=server.createobject("ADODB.recordset")
rssql="select * from " & tbname
myrs.open rssql,connect,1,1
エンドサブ
''*********************************************** *******************
''一時テーブルを閉じます
サブクローゼット(Rs)
rs.close
rs=何も設定しない
エンドサブ
''*********************************************** *******************
''データベースのクエリ
サブ検索テーブル(接続、SQL、RS)
set rs=server.createobject("ADODB.recordset")
rs.open SQL,connect,1,1
エンドサブ
''********************************************* *********************
''データベースのクエリと変更
サブチェンジテーブル(connect,sql,rs)
set rs=server.createobject("ADODB.recordset")
rs.open SQL,connect,1,3
エンドサブ
''********************************************* *********************
''デバッグ用の情報を表示します
サブメッセージ(メッセージ)
応答.書き込みメッセージ
エンドサブ
''********************************************* *********************
''デバッグのためのプログラム割り込み
サブユーザーストップ()
応答.終了
エンドサブ
%>
4. ドキュメントの設計
従来の考え方によれば、オンライン調査は常に 3 つの部分に分けて設計されます。1 つ目はアンケートの表示で、2 つ目は調査の統計結果の表示です。実際のアプリケーションでは、アンケートは特定の Web ページに表示されることが多く、結果は通常、ポップアップ ウィンドウに表示されます。バックエンド管理は、別のリンクまたはログインフォームを介して向けられます。オンライン調査をより便利に使用するために、アンケートをJSスクリプトとして表示する部分を書きました。そのため、アンケートを表示する必要があるWebページは、スクリプトを参照することで自由に呼び出すことができます。それでは、ファイルのデザインを見てみましょう
1. Inc.asp にはファイルが含まれています。主な関数ライブラリ
2、surveycode.asp は、アンケート プログラムを表示します。メイン Web ページのスクリプトを使用して呼び出します。
3. Survey.ASP アンケート リスト プログラム。すべての調査のステータスをリストします。
4. Survey_vote.asp は、調査の統計結果を表示するプログラムです。調査中の質問を表すパラメータを入力します。
5. Survey_manage.asp 管理プログラム。
ここではスタイルデザインの話ではないのでページデザインについては省略していますので、Webページのスタイルやレイアウト、CSSなどに関してはご自身でデザインしてください。
5. ファイル フロー:
まず、プログラムの主なフローを書き留めます。これにより、将来の変更、拡張、移植が容易になります。ここで重要なのは、プログラム中にどのサブルーチンを記述するか、そしてそれらのサブルーチンをどのように配置するかです。
1. Surveycode.asp はアンケート フォームを表示します
<%
''クエリ文字列パラメータを取得します。ID は調査番号を表します
''パラメータの正しさを判断します
「調査が有効期間内であるかどうかを判断します。
'' アンケートの質問を読み、入力します
'' アンケート回答の出力とアンケート フォームの生成
''データベースとテーブルを閉じます
%>
2. Survey.asp はすべての調査ステータスを表示します
<%
''データベースを読んでください
%>
<html>
'' すべての調査ステータスを表示し、リンクを追加します
</html>
3. Survey_vote.asp は統計結果を表示します。
ここには2つの機能があり、1つは提出せずに表示する機能、もう1つは回答を提出した後に統計を実行し、その結果を表示する機能です。パラメータがない場合は、最初の方法になります。 2 つのファイルで実行することもできます。
<%
''パラメーターを取得します。 id はアンケート番号を表します。すべてのデータはフォームから取得されます。
''パラメータがあるかどうかを判断し、ある場合は最初に統計を実行します
そうでない場合は、直接表示されます。
''統計サブルーチン
%>
<html>
''表示サブルーチン
</html>
4. Survey_manage.asp 管理プログラム。
管理部分はより複雑であり、より多くの機能を実装する必要があります。まず管理機能を列挙してみます。
1) 管理者ログイン。ログイン後のみ管理が可能です
。 2) ログアウトします。管理が終了したら安全に終了します。
アンケートの管理には次のものが含まれます。
3) アンケートを追加します。アンケートの回答も追加します。
4) アンケートを変更します。アンケート回答内容、時間、種類、内容の変更、追加、削除
5) アンケートを削除します。進行中のアンケートは削除できません。
これらの機能のプロセスを設計
<%
''パラメータを取得します。 Action は動作を表し、上記の機能に対応します。
''アクションに従って対応するサブルーチンにリダイレクトします
''ログインサブルーチン
''ログインサブルーチンを終了します
'' アンケート質問追加サブルーチンを実行します
''アンケート回答追加サブルーチン実行
'' 変更された調査サブルーチンを実行して、質問と回答を一緒に変更します
''アンケート質問削除サブルーチン実行
'' アンケート回答削除サブルーチンを実行します
<html>
<%
''ログインしている場合は、ログインフォームを表示しているかどうかを判断します。
''アクションに基づいて対応するフォームを表示します
''すべての調査サブルーチンを表示
'' 単一の調査サブルーチンを示します。質問と回答が一緒に表示されます
'' 追加された調査サブルーチンを表示します。
''ログインフォームを表示します
%>
</html>
6. コードの記述
プロセス設計が完了すると、コードの記述がより体系化されます。簡単に始めましょう。コードを記述する前に、テストのためにデータベースにいくつかのレコードを入力する必要があります。まず、アンケートの質問といくつかのアンケート回答を追加し、統計情報を手動で入力します。
最初にSurveycode.aspを作成して、このファイルを他のページで呼び出す必要があります。呼び出すと、フォームに配置して、次のステートメントを使用できます。
<スクリプト言語= "javascript" src = "surveycode.asp?id = 1"> </script>
フォームを表示する前に、最初に表示します。調査が存在し、進行中であるかどうかを確認します。さらに、調査の質問番号(ID)を表すには、回答番号票_no
ファイルname surveycode.asp
<! - #include file = "inc。 asp" -->
<%
id=request.querystring("id")
if id<>"" then ''パラメータがある場合
opendb my '' データベースに接続します
sql="select * from Survey where Survey_id="& id ''クエリ ステートメント
searchtable my,sql,rs ''データベースのクエリ
if not rs.eof then ''この調査記録があれば
question=rs("survey_question") ''質問を読む
Surveytype=rs("survey_type") ''回答タイプを読み取ります
stime=rs("survey_stime") ''開始時刻を読み取ります
etime=rs("survey_etime") ''終了時刻を読み取ります
closetable rs ''テーブルを閉じる
if stime<now() および etime>now() then ''調査が進行中の場合
''以下のアンケートフォームを出力してください
'' まずフォームと質問を出力し、次にフォームを Survey_vote.asp に送信します。
%>
document.write("<form action=''survey_vote.asp'' target=''_blank'' method=''post''>");
document.write("<table border=''1'' cellpadding=''2'' cellpacing=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 ''クエリを実行
if not rs.eof then ''答えがある場合はそれを出力します
i=1 から rs.recordcount まで
%>
document.write("<tr><td align=''right''><input name=''res'' type=''");
<%
if Surveytype then ''タイプを判断して、単一選択または複数選択を表示します
%>
document.write("チェックボックス");
<%else%>
document.write( "Radio");
<%end if ''次の文は、回答のテキストと送信された値 (vote_no) を出力します%>
document.write("'' value=<%=rs("vote_no")%>></td><td><%=rs("vote_answer")%></td></tr>");
<%
rs.movenext
次
'' 次の文は隠しパラメーターを出力し、質問番号 (id) を渡します。
'' をクリックして表示した後、JS 関数を使用してリンクを定義します。
%>
document.write("<tr><tdcolspan=''2'' align=''center''><input type=''hidden'' name=''id'' value=''<%=id% >''>");
document.write("<input type=''submit'' class=button value=''vote''> ");
document.write("<input type=button class=button value=''View'' onclick=''jump(<%=id%>)''>");
document.write("</td></tr></tbody></table></form>");
関数ジャンプ(id){
window.open("survey_vote.asp?id="+id,"アンケート")
}
<%
終了する場合
終了する場合
終了する場合
クローゼット
閉店しました、私
終了する場合
%>
Surveycode.asp の完成後、実装において次の点を決定しました。
1. Survey_vote.aspでは
、クエリ文字列パラメータ ID に値がある場合、結果が表示されます。
IDに値がある場合、統計は最初に実行する必要があります。Survey_vote.asp
では、提出されたフォームパラメーターresは
最初に統計
的な結果
です。Surveycode.asp .asp ファイルと密接に関連しています。前回の記事の最後で、surveycode.asp で決定されるいくつかのパラメーターについて説明しました。
統計結果 Survey_vote.asp
<!--#include file="inc.asp" -->
<html>
<頭>
<title>調査統計</title>
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<本文>
<%
前の文では、まずインクルード ファイルを追加し、関数を参照します。
id=request.querystring("id") ''クエリ文字列パラメータ ID を取得します
opendb my '' データベースに接続します
if id="" then ''そうでない場合は、結果を直接見ていません。
id=request.form("id") ''フォームパラメータIDを取得
if id<>"" then ''値がある場合は、最初にカウントする必要があります
Surveycount() ''統計サブルーチンの呼び出し
終了する場合
終了する場合
if id<>"" then
disp_survey() ''どっちにしても最後には結果が表示される
終了する場合
Closedb my ''データベースを閉じる
''-----統計サブルーチン-----
サブ調査数()
if session("survey_ok")="" then ''まだ投票していない場合
no=request.form("res") ''回答番号を取得します
いいえ<>""の場合
'' 送信された回答の数を 1 つ増やす SQL ステートメントを定義します
sql = "update survey_vote set yot_count = lote_count+1 where lot_no = in("&no& ")"
my.execute sql
終了する場合
session("survey_ok")="ok"
終了する場合
エンドサブ
''------
''---結果表示サブルーチン---
sub disp_survey()
''アンケートの質問を取得するための SQL ステートメントを定義します
sql="調査場所の調査から調査質問を選択します。調査_id = & id
searchtable my,sql,rs ''クエリを実行
question=rs("survey_question") ''質問を質問として保存します
closetable rs ''テーブルを閉じる
'' SQL ステートメントを定義し、回答の総数を取得します
sql="調査投票の合計として合計(投票数)を選択します。ここで投票ID="& ID
SearchTable My、SQL、Rs
total=rs("合計")
closetable rs ''close table
'' は SQL ステートメントを定義し、すべての回答テキスト部分と投票数を取得します。
sql="select vote_answer,vote_count from vote_vote where vote_id=" & id
searchtable my,sql,rs ''クエリを実行
'' 以下はテーブルを使用して統計テーブルを出力します
%>
<table width="500" border="1" align="center" cellpadding="2" cellpacing="0"
bordercolorligh="#000000" bordercolordark="#ffffff">
<tr>
<td Colspan="4" align="center"><b>調査統計</b></td>
</tr>
<tr>
<td Colspan="4"><b>アンケートの質問: <%=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">投票数</td>
</tr>
<%do rs.eof ではない
合計=0の場合
パーセント=0 ''誰も投票しない場合、パーセンテージは 0 です
それ以外
percent=int(rs("vote_count")/total*10000)/100 ''パーセンテージを計算します
終了する場合
%>
<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>
</テーブル>
</td>
<td width="100" align="center"><%=percent%>%</td>
<td width="100" align="center"><%=rs("vote_count")%></td>
</tr>
<%
rs.movenext
ループ
%>
<tr>
<td Colspan="4"> <%=now()%> の時点で <%=total%> 票があります
<a href="javascript:window.close()">ウィンドウを閉じる</a>
</td>
</tr>
</テーブル>
<%
closetable rs ''テーブルを閉じる
エンドサブ
'' ------------------------
%>
</body>
</html>
投票を表示するプロセスでは、セッション変数 Survey_ok を使用して、投票が行われたかどうかを示します。さらに、このディスプレイ統計は、テーブルのスタイルを制御するためのCSSファイルを指します。
8。
すべての調査のステータスを完全に調査し
ましょ
う。
調査の開始時間
。
調査
の
ステータス
選択または複数選択。
7.これらの要件に従って、
投票結果を表示するためのリンクも提供します
。投票の合計数の取得などの一部のステートメントは、実際には Survey_vote に記述されています。上記のASP。
すべてのアンケートのステータスを一覧表示する Survey.asp
<!--#include file="inc.asp" -->
<html>
<頭>
<title>オンライン アンケート リスト</title>
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<本文>
<%
id=request.querystring("id") ''パラメータを取得します
if id<>"" then ''パラメータがある場合、このアンケートフォームを表示します
response.write "<SCRIPT Language=''JavaScript'' SRC=''surveycode.asp?id="&id&"''></SCRIPT>"
else '' それ以外の場合は、サブルーチンを呼び出してステータスを表示します
disstat()
end if
''-----ステータス表示サブルーチン----
サブ disstat()
opendb my '' データベースに接続します
opentable my,"survey",rs ''テーブルを直接開きます
'' 以下ではテーブルを使用して各レコードを表示します
'' 最初にヘッダーを表示
%>
<table width="760" border="1" cellpacing="0" cellpadding="2"
align="center" bordercolorligh="#000000" bordercolordark="#ffffff">
<tr>
<td Colspan="8" align="center"><b>オンライン アンケート リスト</b></td>
</tr>
<tr>
<td width="50" align="center" height="20">数値</td>
<td width="200" align="center" height="20">アンケートの質問</td>
<td width="50" align="center" height="20">タイプ</td>
<td width="140" align="center" height="20">開始時間</td>
<td width="140" align="center" height="20">終了時刻</td>
<td width="50" align="center" height="20">ステータス</td>
<td width="80" align="center" height="20">投票数</td>
<td width="50" align="center" height="20">表示</td>
</tr>
<%
''以下の各レコードを出力します
rs.eof ではないときに実行します
''最初に各フィールドを読んでください
id=rs("調査ID")
question=rs("アンケート_質問")
''タイプを読む
if rs("survey_type") then
stype="複数選択"
それ以外
stype = "単一の選択"
終了する場合
stime=rs("調査_stime")
etime=rs("survey_etime")
「判定状況」
if now()<stime then
stat="開始されていません"
それ以外
if now<etime then
stat="進行中"
それ以外
stat="終了"
終了する場合
end if
''SQL ステートメントを定義し、回答の総数を取得します
sql="調査投票の合計として合計(投票数)を選択します。ここで投票ID="& ID
searchtable my,sql,tmprs ''クエリ
total=tmprs("合計")
closeable tmprs ''テーブルを閉じる
''以下のレコードを出力します
%>
<tr>
<td align="center" height="20"><%=id%></td>
<td height="20">
<a href="survey.asp?id=<%=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.asp?id=<%=id%>" target="_blank">表示</a>
</td>
</tr>
<%
rs.movenext ''次の項目に移動、ループ
ループ
%>
</テーブル>
<%
クローゼットRs ''閉鎖テーブル
Closedb my ''データベースを閉じます
エンドサブ
''----------------------
%>
</body>
</html>
9. バックエンド管理
バックエンド管理ページ Survey_manage.asp には、達成したい管理機能がすでにリストされています。管理プロセスでは、最初にすべての調査が表示され、まだ開始されていない調査については変更または削除できますが、進行中の調査については変更できません。時間。 1 つのパラメータ アクションを使用してアクションを表します。意味は次のとおりです。
1. パラメータなし。初めて入力すること、ログインフォームを表示することを示します
2、login はログインを実行することを意味します
3、logout はログアウトを実行することを意味します
4、showaddquestion は追加のアンケートを表示することを意味します
5、showsurvey はアンケートを表示することを意味します
6、doaddsurvey は実行することを意味しますアンケートの追加
7、doaddanswer は回答の追加を実行することを意味します
8. dodelsurvey はアンケートを削除することを意味します
9. dodelanswer は回答を削除することを意味します
10. domodify はアンケートを変更して回答することを意味します