-
隨著網(wǎng)絡(luò)的普及,網(wǎng)上調(diào)查往往能達(dá)到較好的效果。在自己的個(gè)人站點(diǎn)上放一個(gè)趣味問(wèn)題調(diào)查板,著實(shí)能為網(wǎng)站添色不少;況且通過(guò)調(diào)查結(jié)果你能更多更準(zhǔn)確了解網(wǎng)友對(duì)自己站點(diǎn)的看法。作為Webmaster,如果你的網(wǎng)站也需要就某個(gè)主題進(jìn)行調(diào)查,而你又討厭使用別人免費(fèi)提供的調(diào)查板(免費(fèi)往往是要付出代價(jià)的,比如打廣告!),那么我建議你花十幾分鐘時(shí)間看完這篇介紹用ASP制作調(diào)查板的文章。你只要把文中的代碼Copy到你的機(jī)子上,稍做修改,你立即就擁有一個(gè)屬于你自己的個(gè)性化調(diào)查板。好了,打起精神往下看吧。 本調(diào)查板共有三個(gè)文件:顯示調(diào)查問(wèn)題(research.html)、處理用戶(hù)選擇(select.asp)、瀏覽調(diào)查結(jié)果(viewresult.asp)。設(shè)計(jì)思路為:ASP取得由表單發(fā)來(lái)的信息,并據(jù)此修改記錄調(diào)查得票數(shù)的數(shù)據(jù)庫(kù),然后ASP讀取數(shù)據(jù)庫(kù),獲得各個(gè)調(diào)查問(wèn)題的得票數(shù)目,通過(guò)得票數(shù)多少來(lái)調(diào)節(jié)對(duì)應(yīng)條形圖顯示的寬來(lái)直觀比例地給出調(diào)查結(jié)果。在程序的關(guān)鍵處,我都給出了較為詳細(xì)的注釋?zhuān)@里就不再講述ASP的基本知識(shí)。讀者可以到陶吧ASP專(zhuān)欄查閱。當(dāng)然,我希望你在自己的服務(wù)器上調(diào)試程序時(shí),有不懂的地方,還是查查身邊的ASP技術(shù)手冊(cè),看看對(duì)象、方法或函數(shù)的詳細(xì)語(yǔ)法試著修改,看看結(jié)果如何變化——這可是學(xué)習(xí)編程的一個(gè)好方法呢。
一、顯示調(diào)查問(wèn)題(research.html)
調(diào)查問(wèn)題的設(shè)計(jì)要依據(jù)實(shí)際情況,或講究實(shí)用性或講究趣味性,在網(wǎng)頁(yè)上顯示的風(fēng)格也或樸素或活潑,本例中是筆者主頁(yè)上的一個(gè)關(guān)于“21世紀(jì)最重要的是什么?”的趣味調(diào)查,為說(shuō)明問(wèn)題,下面的代碼中省略了美觀修飾的代碼,你自己動(dòng)手設(shè)計(jì)時(shí)完全可以使用表格等技巧美化調(diào)查問(wèn)題的顯示。為了使提換蜾賴(lài)韃槭輩揮跋斕鼻耙趁媯絳蛑懈雋說(shuō)魴麓翱詰姆槳浮?BR>
researchindex.html: < html >
< title >調(diào)查板測(cè)試< /title > < head > < !-- start:定義新開(kāi)的窗口-- > < script language=javascript > < !-- var newWindow = null function OpenWindow(htmurl) { if (! newWindow || newWindow.closed) { newWindow = window.open(htmurl,"newwin","toolbar=no,resiza =no,scrollbars=no,width=400,height=280"); }else { newWindow.focus(); } } //-- > < /script > < !-- end:定義新開(kāi)的窗口-- > < /head > < body > < !-- start:調(diào)查題目、選項(xiàng) -- > < p >您認(rèn)為21世紀(jì)最重要的是什么?< /p > < form method="POST" action="vote/select.asp" name="research" LANGUAGE="javascript" onSubmit="OpenWindow()" target="newwin" > < p align="left" > < br > < input type="radio" value="1" name="Options" >知識(shí)(知識(shí)就是力量)< br > < input type="radio" value="2" name="Options" >學(xué)歷(學(xué)歷社會(huì)沒(méi)有終結(jié))< br > < input type="radio" value="3" name="Options" >金錢(qián)(經(jīng)濟(jì)就是基礎(chǔ))< br > < input type="radio" value="4" name="Options" >愛(ài)情(永不進(jìn)入墳?zāi)沟膼?ài)情)< br > < input type="radio" value="5" name="Options" >理想(天啦,理想是什么)< br > < input type="radio" value="6" name="Options" >民主意識(shí)(關(guān)心政治)< br > < input type="radio" value="7" name="Options" >科學(xué)思想(科教興國(guó))< br > < input type="submit" value="提交" name="voting" > < input type="button" value="查看" name="viewing" onClick="OpenWindow(vote/viewresult.asp)" > < /form > < !-- start:調(diào)查題目、選項(xiàng) -- > < /body > < /html > 二、處理用戶(hù)選擇(select.asp) 依據(jù)上面的調(diào)查選項(xiàng),我們得出記錄調(diào)查得票的數(shù)據(jù)庫(kù)researchdb.mdb的設(shè)計(jì)(以Access為例),表名為:research。如果你的數(shù)據(jù)庫(kù)和表沒(méi)有存為以上的名字,那么在后面的程序和操作中你不要忘記也相應(yīng)修改過(guò)來(lái)。
存放調(diào)查投票數(shù)的表research:
字段名 數(shù)據(jù)類(lèi)型 默認(rèn)值
id 自動(dòng)編號(hào) 1 select1 數(shù)字 0 select2 數(shù)字 0 select3 數(shù)字 0 select4 數(shù)字 0 select5 數(shù)字 0 select6 數(shù)字 0 select7 數(shù)字 0 建好數(shù)據(jù)庫(kù)后,我們來(lái)在服務(wù)器上建立數(shù)據(jù)源。首先,運(yùn)行“控制面板”中的“ODBC”,選擇“系統(tǒng)DSN”,按“添加”按鈕,選取“Microsoft Access Driver”,選定后按“完成”按鈕,然后在ODBC設(shè)定中“數(shù)據(jù)源名”輸入框輸入數(shù)據(jù)庫(kù)名稱(chēng),本例中為researchdb,然后按下“選取”按鈕選擇數(shù)據(jù)庫(kù)文件(你不會(huì)說(shuō)你忘記了剛剛設(shè)計(jì)的數(shù)據(jù)庫(kù)存在那里了吧),選定后按“確定”,你即可看到新建的數(shù)據(jù)源 researchdb。這樣,我們就可以在ASP中調(diào)用了。
select.asp:
< %
下面的if語(yǔ)句是通過(guò)驗(yàn)證selected是否為空來(lái)判斷用戶(hù)是否作了選擇
if request.form("options") < >Empty then % > < %
下面的if語(yǔ)句是通過(guò)比較Request的兩個(gè)collection(ServerVariables和Cookies)的值 來(lái)防止用戶(hù)連續(xù)按提交而影響調(diào)查的結(jié)果 if not Request.ServerVariables("REMOTE_ADDR")=request.cookies("IPAddress") then 把訪問(wèn)客戶(hù)的IP信息寫(xiě)入Cookies response.cookies("IPAddress")=Request.ServerVariables("REMOTE_ADDR") % > < % 建立連接(Connection)對(duì)象,打開(kāi)記錄調(diào)查結(jié)果的數(shù)據(jù)庫(kù) set conn=server.createobject("ADODB.CONNECTION") conn.open "researchdb" % > < %
定義變量 dim rs dim sql dim selected selected=request.form("options") 建立記錄集合(Recordset)對(duì)象,用方法Open打開(kāi)對(duì)象,同時(shí)修改對(duì)應(yīng)的數(shù)據(jù) set rs=server.createobject("adodb.recordset") 修改數(shù)據(jù)表ressearch中的數(shù)據(jù),即對(duì)應(yīng)的投票數(shù)增加1 sql="update research set select"&selected&"=select"&selected&"+1 where id=1" rs.open sql,conn,3,3 從內(nèi)存中清除記錄集合對(duì)象 set rs=nothing 關(guān)閉連接 conn.close 從內(nèi)存中清除連接對(duì)象 set conn=nothing 連接到瀏覽調(diào)查結(jié)果的頁(yè)面 response.redirect "viewresult.asp" else Response.write "投票失敗提示:您剛才已投了票,謝謝您的支持!" end if else Response.write "投票失敗提示:您忘記選擇了!" end if % > 三、瀏覽調(diào)查結(jié)果(viewresult.asp)
本例中使用條形圖來(lái)直觀顯示調(diào)查結(jié)果,方法是用選項(xiàng)的投票數(shù)占總投票數(shù)的百分比值乘上5,得出的值作為條形圖bar.gif顯示的寬(可用常見(jiàn)的圖象工具制作一個(gè)漸變色的小條形圖,或是到網(wǎng)上down一個(gè))。為了給出帶兩為小數(shù)的得票的百分比,程序中使用了VBScript中的四舍五入函數(shù)Round。為了美觀,把調(diào)查結(jié)果放到表格中顯示,如圖所示。下面給出的代碼中略去了表格的設(shè)計(jì)。
viewresult.asp
< % set conn=server.createobject("ADODB.CONNECTION") conn.open "researchdb" % > < % dim rs dim sql dim select1 dim select2 dim select3 dim select4 dim select5 dim select6 dim select7 dim total set rs=server.createobject("adodb.recordset") sql="select * from research where id=1" rs.open sql,conn,1,1 total=rs("select1")+rs("select2")+rs("select3")+ _ rs("select4")+rs("select5")+rs("select6")+rs("select7") 判斷總票數(shù)是否為0,確保下面的除法有效 if total > 0 then select1=(rs("select1")/total)*100 select2=(rs("select2")/total)*100 select3=(rs("select3")/total)*100 select4=(rs("select4")/total)*100 select5=(rs("select5")/total)*100 select6=(rs("select6")/total)*100 select7=(rs("select7")/total)*100 % > < p >謝謝您的參與,下面是當(dāng)前的調(diào)查結(jié)果 < p > ◇知識(shí): < img src=bar.gif width=< %=int(select1*5)% > height=4 > < %=rs("select1")% >人 占:< %=round(select1,2)% >%< br > ◇學(xué)歷: < img src=bar.gif width=< %=int(select2*5)% > height=4 > < %=rs("select2")% >人 占:< %=round(select2,2)% >%< br > ◇金錢(qián): < img src=bar.gif width=< %=int(select3)*5% > height=4 > < %=rs("select3")% >人 占:< %=round(select3,2)% >%< br > ◇愛(ài)情: < img src=bar.gif width=< %=int(select4)*5% > height=4 > < %=rs("select4")% >人 占:< %=round(select4,2)% >%< br > ◇理想: < img src=bar.gif width=< %=int(select5)*5% > height=4 > < %=rs("select5")% >人 占:< %=round(select5,2)% >%< br > ◇民主意識(shí): < img src=bar.gif width=< %=int(select6)%*5 > height=4 > < %=rs("select6")% >人 占:< %=round(select6,2)% >%< br > ◇科學(xué)思想: < img src=bar.gif width=< %=int(select7)%*5 > height=4 > < %=rs("select7")% >人 占:< %=round(select7,2)% >%< /p > < p align="center" >已經(jīng)有:< %=total% >人參加調(diào)查< br >< br >
【< a href="javascript:window.close()" >關(guān)閉窗口< /a >】< /p > < p > < % else response.write "還沒(méi)有人參與調(diào)查" end if rs.close set rs=nothing conn.close set conn=nothing % > 附注:
以上代碼均在 WindowsNT4.0中文(Pack 6)/IIS4.0上調(diào)試通過(guò)。
以下任何一種環(huán)境都可執(zhí)行ASP:
一、Windows NT Server 4.0 / IIS3.0以上
二、Windows NT WorkStation 4.0 / Microsoft Peer Web Service3.0以上 三、Windows 95/98 / Microsoft Personal Web Server 1.0a以上 資料引用:http://www./4832.html
|
|