現在,在網上做調查已經十分普遍了,很多商業網站的網頁上常放有各種主題的調查板,一些商業網站也免費為網友提供調查板,比如:博大(poll.bodachina.com)。因為網路的普及,網上調查往往能達到較好的效果。在自己的個人網站上放一個趣味問題調查板,著實能為網站添色不少;況且通過調查結果你能更多更準確瞭解網友對自己網站的看法。作為Webmaster,如果你的網站也需要就某個主題進行調查,而你又討厭使用別人免費提供的調查板(免費往往是要付出代價的,比如打廣告!),那麼我建議你花十幾分鐘時間看完這篇介紹用ASP製作調查板的文章。你只要把文中的代碼Copy到你的機子上,稍做修改,你立即就擁有一個屬於你自己的個人化調查板。好了,打起精神往下看吧。
本調查板共有三個檔案:顯示調查問題(research.html)、處理使用者選擇(select.asp)、瀏覽調查結果(viewresult.asp)。設計思路為:ASP取得由表單發來的資訊,並據此修改記錄調查得票數的資料庫,然後ASP讀取資料庫,獲得各個調查問題的得票數目,通過得票數多少來調節對應橫條圖顯示的寬來直觀比例地給出調查結果。在程式的關鍵處,我都給出了較為詳細的注釋,這裡就不再講述ASP的基本知識。讀者可以到陶吧ASP專欄查閱。當然,我希望你在自己的伺服器上偵錯工具時,有不懂的地方,還是查查身邊的ASP技術手冊,看看對象、方法或函數的詳細文法試著修改,看看結果如何變化——這可是學習編程的一個好方法呢。
一、顯示調查問題(research.html)
調查問題的設計要依據實際情況,或講究實用性或講究趣味性,在網頁上顯示的風格也或樸素或活潑,本例中是筆者首頁上的一個關於“21世紀最重要的是什嗎?”的趣味調查,為說明問題,下面的代碼中省略了美觀修飾的代碼,你自己動手設計時完全可以使用表格等技巧美化調查問題的顯示。為了使提交或瀏覽調查時不影響當前頁面,程式中給出了彈出新視窗的方案。
researchindex.html:
< html >
< title >調查板測試< /title >
< head >
< !-- start:定義新開的視窗-- >
< script language=javascript >
< !--
var newWindow = null
function OpenWindow(htmurl)
{
if (! newWindow || newWindow.closed)
{
newWindow =
window.open(htmurl,"newwin","toolbar=no,resizable=no,scrollbars=no,width=400,height=280");
}else
{
newWindow.focus();
}
}
//-- >
< /script >
< !-- end:定義新開的視窗-- >
< /head >
< body >
< !-- start:調查題目、選項 -- >
< p >您認為21世紀最重要的是什嗎?< /p >
< form method="POST" action="vote/select.asp" name="research" LANGUAGE="javascript"
target="newwin" >
< p align="left" >
< br >
< input type="radio" value="1" name="Options" >知識(知識就是力量)< br >
< input type="radio" value="2" name="Options" >學曆(學曆社會沒有終結)< br >
< input type="radio" value="3" name="Options" >金錢(經濟就是基礎)< br >
< input type="radio" value="4" name="Options" >愛情(永不進入墳墓的愛情)< br >
< input type="radio" value="5" name="Options" >理想(天啦,理想是什麼)< br >
< input type="radio" value="6" name="Options" >民主意識(關心政治)< br >
< input type="radio" value="7" name="Options" >科學思想(科教興國)< br >
< input type="submit" value="提交" name="voting" >
< input type="button" value="查看" name="viewing" >
< /form >
< !-- start:調查題目、選項 -- >
< /body >
< /html >
二、處理使用者選擇(select.asp)
依據上面的調查選項,我們得出記錄調查得票的資料庫researchdb.mdb的設計(以Access為例),表名為:research。如果你的資料庫和表沒有存為以上的名字,那麼在後面的程式和操作中你不要忘記也相應修改過來。
存放調查投票數的表research:
欄位名 資料類型 預設值
id 自動編號 1
select1 數字 0
select2 數字 0
select3 數字 0
select4 數字 0
select5 數字 0
select6 數字 0
select7 數字 0
建好資料庫後,我們來在伺服器上建立資料來源。首先,運行“控制台”中的“ODBC”,選擇“系統DSN”,按“添加”按鈕,選取“Microsoft Access Driver”,選定後按“完成”按鈕,然後在ODBC設定中“資料來源名”輸入框輸入資料庫名稱,本例中為researchdb,然後按下“選取”按鈕選擇資料庫檔案(你不會說你忘記了剛剛設計的資料庫存在那裡了吧),選定後按“確定”,你即可看到建立的資料來源 researchdb。這樣,我們就可以在ASP中調用了。
select.asp:
< %
'下面的if語句是通過驗證selected是否為空白來判斷使用者是否作了選擇
if request.form("options") < >Empty then
% >
< %
'下面的if語句是通過比較Request的兩個collection(ServerVariables和Cookies)的值
'來防止使用者連續按提交而影響調查的結果
if not Request.ServerVariables("REMOTE_ADDR")=request.cookies("IPAddress") then
'把訪問客戶的IP資訊寫入Cookies
response.cookies("IPAddress")=Request.ServerVariables("REMOTE_ADDR")
% >
< %
'建立串連(Connection)對象,開啟記錄調查結果的資料庫
set conn=server.createobject("ADODB.CONNECTION")
conn.open "researchdb"
% >
< %
'定義變數
dim rs
dim sql
dim selected
selected=request.form("options")
'建立記錄集合(Recordset