簡易線上投票系統(php)——投票頁面
登陸後才可以進入投票頁面,否則將自動回到主頁。投票頁面分為多選和單選兩種形式。在投票完成後根據投票活動釋出時設定的是否允許檢視結果來確定是否自動跳轉到結果頁面。若不允許,會自動彈出提示框,並返回主頁。
1、獲取投票資訊
if($ouser == ''){
echo "<script>alert('請先登入!');location.href='index.php';</script>";
}else{
$voteid=@$_GET['vid'];
if($voteid == ''){
echo "location.href='index.php';</script>";
}else{
$sql="select vname,starttime,uid,vintro,open,more,max,min from vote where vid='".$voteid."'";
$voteitem=mysql_query($sql);
$vitem=mysql_fetch_array($voteitem);
$sql2="SELECT itemcount,item,num FROM votetitle where vid='".$voteid."'";
$votetitle=mysql_query($sql2);
$vtitle=mysql_fetch_array($votetitle);
$sql3="SELECT username FROM users where uid='".$vitem['uid']."'";
$uname=mysql_query($sql3);
$username=mysql_fetch_row($uname);
(此處也是我認為這個系統的一大問題,對資料庫的訪問過於頻繁)
一共三次訪問資料庫,獲得所需的全部投票資訊。
2、投票活動資訊的顯示
將php程式碼結合進html中方便顯示。
<center><h2><?php echo $vitem['vname']; ?></h2></center>
<div id="vote">
<table>
<tr>
<td>釋出人:<?php echo $username[0];?></td><td>釋出時間:<?php echo $vitem['starttime']; ?></td>
</tr>
</table>
<div id="vote_intro">
<?php echo $vitem['vintro'] ?>
</div>
<div id="vote_contend">
3、對錶單的設定
$itemcount=$vtitle['itemcount'];
$multi=$vitem['more'];
$option=explode('*',$vtitle['item']);
分別獲得投票活動的選項數目、是否為多選、將各個選項儲存在option物件中
(1)單選
a、前臺表單
if($multi==0){//單選
$out="<form id='choice' name='choice' action='' method='post'><table>".
"<tr><td>注意:只能選擇一項!</td></tr>";
for($i=0;$i<$itemcount;$i++){
$j=$i+1;
$out=$out."<tr><td><label><input type='radio' name='RadioGroup1' value='".$i."' id='".$j."' />".$option[$i]."</label></td></tr>";
}
$out=$out."<tr><td><input type='submit' name='choiceSend' value='提交併檢視結果'/> <input type='reset'/></td></tr>".
"</table></form>";
echo $out;
}
通過迴圈,將各個選項的單選框顯示出來,並以數字順序命名,以choiceSend為名提交資訊
b、後臺處理
<?php
//單選投票
if(@$_POST['choiceSend']){
$ouser=@$_GET['user'];
$voteid=@$_GET['vid'];
if($ouser == ''){
echo "<script language='javascript'> alert('請先登入!'); </script>";
}else{
$sql="SELECT itemcount,item,num FROM votetitle where vid='".$voteid."'";
$votetitle=mysql_query($sql);
$vtitle=mysql_fetch_array($votetitle);
$sql2="select open from vote where vid='".$voteid."'";
$voteitem=mysql_query($sql2);
$vitem=mysql_fetch_array($voteitem);
$open='';
if($vitem['open']==0){
$open="alert('您無權檢視投票結果!');location.href='./index.php?user=".$ouser."';";
}else{
$open="location.href='./result.php?user=".$ouser."&vid=".$voteid."';";
}
$ballot=explode('*',$vtitle['num']);
$decide=$_POST['RadioGroup1'];
$ballot[$decide]=$ballot[$decide]+1;
$num=implode('*',$ballot);
$sql2="UPDATE votetitle SET num = '".$num."' WHERE vid = '".$voteid."'";
mysql_query($sql2);
echo "<script language='javascript'>alert('投票成功!');".$open."</script>";
}
}
?>
點選提交後,會先檢查是否處在登入的狀態,通過查詢資料庫的方式確定資訊,再將投票增加的選票新增到原有的投票統計中,並組成字串,對資料庫做出相應的更改,以實現投票的操作。
確定能否顯示投票結果的過程:
if($vitem['open']==0){
$open="alert('您無權檢視投票結果!');location.href='./index.php?user=".$ouser."';";
}else{
$open="location.href='./result.php?user=".$ouser."&vid=".$voteid."';";
}
計算並更改的過程:
$ballot=explode('*',$vtitle['num']);
$decide=$_POST['RadioGroup1'];
$ballot[$decide]=$ballot[$decide]+1;
$num=implode('*',$ballot);
$sql2="UPDATE votetitle SET num = '".$num."' WHERE vid = '".$voteid."'";
mysql_query($sql2);
(2)多選
a、前臺表單
elseif($multi==1){//多選
$out="<form id='mult' name='mult' method='post' action=''><table>".
"<tr><td>注意:最多選擇".$vitem['max']."項,最少選擇".$vitem['min']."項!</td></tr>";
for($i=0;$i<$itemcount;$i++){
$j=$i+1;
$out=$out."<tr><td><label><input type='checkbox' name='checkbox[]' value='".$i."' id='".$j."' />".$option[$i]."</label></td></tr>";
}
$out=$out."<tr><td><input type='submit' name='mutiSend' value='提交併檢視結果'/> <input type='reset'/></td></tr>".
"</table></form>";
echo $out;
}
大部分內容與單選相同,只是在獲取資訊時專門獲取多選的兩個資訊:max最多選項、min最少選項。並提示使用者
b、後臺處理
<?php
//多選投票
if(@$_POST['mutiSend']){
$ouser=@$_GET['user'];
$voteid=@$_GET['vid'];
if($ouser == ''){
echo "<script language='javascript'> alert('請先登入!'); </script>";
}else{
$sql="SELECT itemcount,item,num FROM votetitle where vid='".$voteid."'";
$votetitle=mysql_query($sql);
$vtitle=mysql_fetch_array($votetitle);
$sql2="select open from vote where vid='".$voteid."'";
$voteitem=mysql_query($sql2);
$vitem=mysql_fetch_array($voteitem);
$open="";
if($vitem[0]==0){
$open="alert('您無權檢視投票結果!');location.href='./index.php?user=".$ouser."';";
}else{
$open="location.href='./result.php?user=".$ouser."&vid=".$voteid."';";
}
$itemcount=$vtitle['itemcount'];
$ballot=explode('*',$vtitle['num']);
$decide=$_POST['checkbox'];
for($i=0;$i<$itemcount;$i++){
for($j=0;$j<count($decide);$j++){
if($i==$decide[$j]){
$ballot[$i]=$ballot[$i]+1;
}
}
}
$num=implode('*',$ballot);
$sql2="UPDATE votetitle SET num = '".$num."' WHERE vid = '".$voteid."'";
mysql_query($sql2);
echo "<script language='javascript'>alert('投票成功!');".$open."</script>";
}
}
?>
大多與單選相似,通過迴圈的方式將表單提交的投票資訊逐條新增到投票統計資訊中。
逐條新增的迴圈過程:
for($i=0;$i<$itemcount;$i++){
for($j=0;$j<count($decide);$j++){
if($i==$decide[$j]){
$ballot[$i]=$ballot[$i]+1;
}
}
}
此處發現了一個bug,前臺可以正確的獲取選擇的限制資訊,但在後臺卻沒有有效的甄別機制,所以這個max和min的資料並沒有起到它的作用。要修復並不難,只需在後臺獲取max和min的資訊並用一個if語句進行確認,因為時間關係,暫時不做修改,希望有機會可以不斷的完善。相關文章
- 簡易線上投票系統(php)——前端設計(投票頁面的原始碼)PHP前端原始碼
- SwnoRabbit全家桶-前端頁面模式投票前端模式
- OA系統-投票管理
- 區塊鏈投票系統開發方案,區塊鏈投票系統開發原始碼區塊鏈原始碼
- 摩爾投票
- Django(投票程式)Django
- Redis In Action 筆記(二):文章投票(PHP 版)Redis筆記PHP
- 智慧合約共享投票dapp系統開發(技術支援)丨dapp投票功能開發專案APP
- PHP+Ajax實現文章心情投票功能例項PHP
- 淺談網頁搜尋排序中的投票模型網頁排序模型
- 基於JSP自定義投票網站系統設計JS網站
- jmeter 介面重放(投票活動)JMeter
- 淺談摩爾投票法
- php簡易分頁程式碼PHP
- 簡單的投票系統,但是顯示的時候出現問題,希望高手解答。
- jQuery實現的簡單投票簡單程式碼例項jQuery
- 搭建簡易多人線上視訊會議系統
- 微信公眾號投票活動製作教程 微信公眾號投票怎麼弄?
- Redis 實戰 —— 02. Redis 簡單實踐 - 文章投票Redis
- 以太坊DApp開發入門教程——區塊鏈投票系統APP區塊鏈
- redis實現文章投票邏輯Redis
- 3. 投票 案例專案(合集)
- 請為新的LOGO投票Go
- UOJ354 新年的投票
- 簡易ATM系統
- solidity投票智慧合約程式碼Solid
- Oracle 10.2.0.1新增5塊投票盤Oracle
- Python自動化刷投票指令碼開發,微信投票再也不需要發紅包了Python指令碼
- QIUJIE用陣列統計100個人給10個人投票陣列
- 西弗吉尼亞州在中期選舉中將提供區塊鏈投票系統區塊鏈
- 以太坊 DApp 開發入門,如何搭建一個區塊鏈投票系統。APP區塊鏈
- 易學堂線上教學系統
- php線上客服系統PHP
- [外掛擴充套件]投票外掛1.0套件
- JavaScript點選投票效果程式碼例項JavaScript
- 加密谷區塊鏈投票試驗成功加密區塊鏈
- JSP生成jpeg圖片用於投票JS
- 作品比賽投票網頁連結製作教程,不用程式設計的方法!網頁程式設計