陳曉陽 牛余朋 關(guān) 放 王 瀟 李 健
(中國人民解放軍96630部隊)
基于PHP+MySQL的在線投票網(wǎng)站設(shè)計
陳曉陽 牛余朋 關(guān) 放 王 瀟 李 健
(中國人民解放軍96630部隊)
本文基于PH P+M y SQ L動態(tài)網(wǎng)站設(shè)計組合,以優(yōu)秀課程投票評選為實際應(yīng)用背景,設(shè)計了集用戶管理、數(shù)據(jù)校驗、資格審查、得票統(tǒng)計等功能于一體的在線投票網(wǎng)站,對設(shè)計過程進行了詳細闡述,采用的設(shè)計方法對其他投票網(wǎng)站設(shè)計具有一定參考價值。
投票網(wǎng)站;動態(tài)網(wǎng)站;PH P
投票活動一直以來是收集大眾意見、進行民意調(diào)研的一種重要方式。一般來講,傳統(tǒng)投票方式收據(jù)收集過程較為復(fù)雜、票數(shù)統(tǒng)計任務(wù)繁重,相對于傳統(tǒng)投票方式,在線投票方式則具有便捷、高效、低成本等諸多優(yōu)點。隨著互聯(lián)網(wǎng)技術(shù)發(fā)展和普及,在線投票方式逐漸受到越來越多的用戶青睞,已經(jīng)逐漸取代傳統(tǒng)投票,成為意見收集方式的主流。本文以優(yōu)秀課程投票評選為實際應(yīng)用背景,設(shè)計了一個簡單的在線投票網(wǎng)站,所采用的設(shè)計過程可供其他同類網(wǎng)站參考。
本網(wǎng)站設(shè)計的實際背景是:某單位前期組織了8次授課,為了評選優(yōu)秀授課課程,該單位組織全部所屬人員對優(yōu)秀授課課程進行網(wǎng)上投票。全體人員每人均有1票,選擇8次授課中的1次進行投票,選票一經(jīng)投出,不能再做修改。
投票網(wǎng)站的工作流程如圖1所示,頁面首次載入后,由于表單輸入為空(用戶尚未輸入),因此后臺數(shù)據(jù)庫中的已有的投票數(shù)據(jù)將被讀取并進行顯示,并提示用戶在表單中輸入投票數(shù)據(jù)。當(dāng)用戶將自己的投票數(shù)據(jù)(包含用戶的用戶名、證件號碼和投票去向三項數(shù)據(jù))填寫到表單中并進行提交后,網(wǎng)站將對用戶輸入的投票數(shù)據(jù)的正確性進行判定,共包含圖1所示的8個判斷環(huán)節(jié),如果任何一個環(huán)節(jié)用戶輸入數(shù)據(jù)不正確,相應(yīng)的提示信息將被給出,并要求用戶對投票數(shù)據(jù)進行修改后進行重新輸入提交。如果用戶提交投票數(shù)據(jù)正確,則用戶提交的投票數(shù)據(jù)將寫入到網(wǎng)站后臺數(shù)據(jù)庫中,寫入完畢后,后臺數(shù)據(jù)庫中投票數(shù)據(jù)將被重新讀取,并在頁面上顯示提交投票數(shù)據(jù)后的最新得票情況。
圖1 投票網(wǎng)站工作流程
圖2 頁面布局示意圖
網(wǎng)站主頁的頁面布局如圖2所示,頁面標(biāo)題位于主頁最上方,向下分別為投票說明和內(nèi)容區(qū),版權(quán)信息位于整個頁面的最下方。內(nèi)容區(qū)中包含用戶輸入?yún)^(qū)、提示信息和展示區(qū)。投票者在用戶輸入?yún)^(qū)中的表單中輸入投票數(shù)據(jù)進行提交,相應(yīng)的提示信息在其下方進行顯示。展示區(qū)包含每次課程的縮略圖,點擊任一縮略圖后可以進入到該次課程的視頻錄像播放頁面,方便用戶觀看課程,每個縮略圖下為課程名稱和該課程的目前的得票情況。
圖3 投票信息數(shù)據(jù)庫表
圖4 預(yù)先錄入的測試用戶信息
本文使用phpMyAdmin工具進行MySQL數(shù)據(jù)庫操作,一定程度上避免了輸入復(fù)雜的SQL語句。
如圖3所示,網(wǎng)站使用的投票信息數(shù)據(jù)庫表votedata共有4個字段,分別為ID(記錄ID)、Name(投票人姓名)、Number(投票人證件號碼)和VoteTo(投票去向)。ID和VoteTo采用INT數(shù)據(jù)類型,Name和Number采用VARCHAR數(shù)據(jù)類型。投票前,預(yù)先使用phpMyAdmin將投票人的信息錄入到數(shù)據(jù)庫中,每條記錄的VoteTo字段都默認設(shè)置為空。如圖4所示,本文錄入了10個投票人的信息供測試使用。
用戶輸入?yún)^(qū)采用表單提交的方式,代碼如下:
投票人:
證件號碼:
支持課程:
數(shù)據(jù)提交后,后臺程序讀取用戶的輸入,并判斷是否輸入全部為空。
$RVoter=$_POST['Voter'];
$RNumber=$_POST['Number'];
$RTheme=$_POST['Theme'];
if(($RVoter=='')&&($RNumber=='')&&($RTheme=='')){
$BlankCheck=0;
$MESSAGE="在上方填寫姓名和XX證號后,填入您支持的去向號碼,即可投出您手中的寶貴一票";
}
else{
$BlankCheck=1;
}
如果輸入全部為空,則判斷是否輸入全部為空的變量$BlankCheck會被置0,并且存儲提示信息的變量$MESSAGE會將提示輸入投票信息的內(nèi)容載入。否則$Blank-Check置1。這里需要說明的是,頁面首次載入時,由于用戶沒有輸入,因此也會出現(xiàn)輸入全部為空的情況,提示用戶輸入投票信息。
當(dāng)用戶輸入投票信息并點擊提交后,則程序首先需要連接數(shù)據(jù)庫,然后才能讀取數(shù)據(jù)庫內(nèi)的數(shù)據(jù),連接數(shù)據(jù)庫的代碼如下:
//數(shù)據(jù)庫連接()
$dbhost='localhost';
$dbuser='root';
$dbpassword='';
$connection=mysql_connect($dbhost,$dbuser,$dbpass-word);
if(!$connection)
{
exit('連接失敗');
}
$dbname='vote';
mysql_select_db($dbname,$connection);
連接數(shù)據(jù)庫成功后,用戶所提交的投票信息是否正確將被檢查。以檢查是否已投票為例說明檢查過程,代碼如下:對于未投票的用戶,變量$row3為空,此時程序會繼續(xù)檢查用戶的輸入去向是否為空。但如果用戶已經(jīng)投票則變量$row3非空,這代表當(dāng)前試圖進行投票的用戶已經(jīng)投過票,因此$MESSAGE會載入提示用戶勿重復(fù)投票的信息。
//VoteCheck檢查是否已經(jīng)投票
$sql3="SELECT*FROM`votedata`WHERE`Name`=' $RVoter'AND`Number`='$RNumber'AND`VoteTo`IS NOT NULL";
$result3=mysql_query($sql3);
if($result3)
{ $row3=mysql_fetch_array($result3);
if($row3)
{
$MESSAGE="您已投票,勿重復(fù)投票";
}
else{
//VoteToBlank檢查投票去向是否為空
VoteToBlank(); }
如果全部檢查均通過,則$Check置1,用戶的投票數(shù)據(jù)會被寫入到數(shù)據(jù)庫中,如下:
if($Check==1){
//投票數(shù)據(jù)寫入
$sql4="UPDATE `votetest`.`votedata`SET `Vote-To`='$RTheme'WHERE`votedata`.`Name`='$RVoter'";
$result4=mysql_query($sql4);
}
對頁面重新載入,即可看到投票后的結(jié)果,投票過程中的頁面顯示和后臺數(shù)據(jù)庫記錄分別如圖5和圖6所示。
本文設(shè)計的投票網(wǎng)站,在后臺數(shù)據(jù)庫預(yù)先錄入用戶信息的前提下,可在數(shù)據(jù)提交過程中通過進行數(shù)據(jù)比對,對投票者投票資格進行審查,校驗用戶提交投票數(shù)據(jù)的正確性,得票情況在用戶投票后可實時更新顯示。本文所設(shè)計的投票網(wǎng)站整體結(jié)構(gòu)簡單清晰,經(jīng)測試能夠較好地滿足實際應(yīng)用需求,可通過進一步的修改完善,滿足其他類似投票任務(wù)的需求,具備一定的可擴展性。
[1]李銀礦,古麗米拉,郭斌.基于PH P技術(shù)的開放實驗室管理系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦與電信,2012(10):2 6-2 8.
[2]余光華.基于MySQL的網(wǎng)絡(luò)教育平臺系統(tǒng)的分析與設(shè)計[J].電腦與電信,2011(6):47-48.
Online Voting Website Design Based on PHP+MySQL
Chen Xiaoyang Niu Yupeng Guan Fang Wang Xiao Li Jian
(Army 96630 of PLA)
Based on the combination of PHP+MySQL dynamic web design,with example of course voting,this paper designs the online voting site with functions of user management,data validation,qualification examination,and votes statistics.In this paper,the design process is described in detail.The design method used for other voting website design has a certain reference value.
online voting;dynamic website;PHP
TP311.52
A
1008-6609(2016)10-0064-03
陳曉陽(19 8 9-),男,山東泰安人,碩士,工程師,研究方向為通訊技術(shù)。