[外掛](ALL)工會投票系統
發表於 : 2006-03-12 12:55 am
- 代碼: 選擇全部
//=====================================================
// 外掛名稱:工會投票系統
// 作者: 涅魂
// 創作時間:2006.02.03
// 最後修改時間:2006.03.03
//=====================================================
※v3版本工會投票系統請至此處安裝
雖然提名為公會投票功能,但其實不只有自己的工會成員才能投票喔~
另外,因為程式中有用到mbstring模組中的函式,所以請確認您的伺服器中有載入mbstring.dll模組
這看似簡單,其實非常重要,否則程式在處理字元時中文字體會變成亂碼...
範例圖片1(投票列表)
範例圖片2(投票內容)
範例圖片3(投票統計)
新增資料表簡介 寫:wog_vote:
v_id 流水號
g_id 投票主辦工會
v_title 投票標題
v_name 投票發起人
v_text 發起原因
v_num 可投票數
v_lv 投票權限,1=工會內部成員,2=全體工會
v_date 投票舉辦日期
v_enddate 投票結束日期
v_record 投票玩家紀錄
wog_vote_list:
vl_id 流水號
v_id 投票主數據編號
vl_title 項目標題
vl_count 項目投票數
當投票過期30天以上時程式會自動將該筆投票以及相關項目自動刪除~
##########開始安裝##########
在您的資料庫中執行下列SQL語法 寫:CREATE TABLE `wog_vote` (
`v_id` int(10) unsigned NOT NULL auto_increment,
`g_id` int(10) unsigned NOT NULL default '0',
`v_title` varchar(30) NOT NULL default '',
`v_name` varchar(30) NOT NULL default 'N/A',
`v_text` text NOT NULL,
`v_num` tinyint(2) unsigned NOT NULL default '1',
`v_lv` tinyint(1) unsigned NOT NULL default '1',
`v_date` int(10) unsigned NOT NULL default '0',
`v_enddate` int(10) unsigned NOT NULL default '0',
`v_record` text NOT NULL,
PRIMARY KEY (`v_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `wog_vote_list` (
`vl_id` int(10) unsigned NOT NULL auto_increment,
`v_id` int(10) unsigned NOT NULL default '0',
`vl_title` varchar(30) NOT NULL default '',
`vl_count` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`vl_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
開啟檔案wog/wog.js 寫:Find
- 代碼: 選擇全部
view_name.write('<tr><td><input type="button" value="佈告欄" onClick="parent.act_click(\'group\',\'book\')"> </td><td class=b1><--公會佈告欄<會員專用></td></tr>');
After Add
- 代碼: 選擇全部
[color=red]view_name.write('<tr><td><input type="button" value="投票所" onClick="parent.vote()"></td><td class=b1><--觀看由工會所舉辦的投票活動</td></tr>');[/color]
Find
- 代碼: 選擇全部
function group_book_view(temp)
Before Add
- 代碼: 選擇全部
[color=red]function vote()
{
var view_name=parent.wog_view.document;
message_cls();
view_name.write(temp_table1);
view_name.write('<tr><td bgcolor=#4B689E colspan=2>工會投票所</td></tr>');
view_name.write('<tr><td><input type="button" value="顯示投票" onclick="parent.act_click(\'vote\',\'list\')"></td><td><input type="button" value="建立投票" onclick="parent.vote_create()"></td></tr>');
view_name.write(temp_table2);
}
function vote_list(temp)
{
var view_name=parent.wog_view.document;
message_cls();
view_name.write('<form action="wog_act.php" method="POST" target="mission">');
view_name.write(temp_table1);
view_name.write('<tr bgcolor=#4B689E><td width=4%>選擇</td><td width=24%>投票主題</td><td width=10%>發起人</td><td width=10%>發起工會</td><td width=12%>投票量</td><td width=20%>開始時間</td><td width=20%>結束時間</td></tr>');
if(temp)
{
var s1=temp.split(";");
for(var li=0;li<s1.length;li++)
{
var s=s1[li].split(",");
view_name.write('<tr><td><input type="radio" name="v_id" value="'+s[0]+'"></td><td>'+s[1]+'</td><td>'+s[2]+'</td><td>'+s[3]+'</td><td>'+s[6]+'</td><td>'+s[4]+'</td><td>'+s[5]+'</td></tr>');
}
view_name.write('<tr><td colspan=7><input type="submit" value="閱讀"> <input type="button" value="刪除" onclick="parent.foot_trun(\'vote\',\'delete\',\'\',\'\',document.forms[0].v_id);"></td></tr>');
}else
{
view_name.write('<tr><td colspan=7>目前沒有任投票</td></tr>');
}
view_name.write(temp_table2);
view_name.write('<input type="hidden" name="f" value="vote">');
view_name.write('<input type="hidden" name="act" value="view">');
view_name.write('</form>');
}
function vote_view(temp,id,title,name,cause,num,begindate,enddate)
{
var view_name=parent.wog_view.document;
message_cls();
view_name.write('<form action="wog_act.php" method="POST" target="mission">');
view_name.write(temp_table1);
view_name.write('<tr><td colspan=3 bgcolor=#3B588E>'+title+'</td></tr>');
view_name.write('<tr><td bgcolor=#4B689E>發起人</td><td bgcolor=#4B689E>開始時間</td><td bgcolor=#4B689E>結束時間</td></tr>');
view_name.write('<tr><td width=30% height=32>'+name+'</td><td width=35%>'+begindate+'</td><td width=35%>'+enddate+'</td></tr>');
view_name.write('<tr><td colspan=3 bgcolor=#4B689E>投票原因</td></tr>');
view_name.write('<tr><td colspan=3><br>'+cause+'<br><br></td></tr>');
view_name.write('<tr><td colspan=3 bgcolor=#4B689E>投票項目</td></tr>');
view_name.write('<tr><td colspan=3>每人最多可投 <font color=yellow>'+num+'</font> 票<br><br>');
view_name.write('<table border=0 width=50% align=center>');
var s1=temp.split(";");
for(var li=0;li<s1.length;li++)
{
var s=s1[li].split(",");
var button_type=(parseInt(num)>1)?"<input type=checkbox name=list[] value="+s[0]+">":"<input type=radio name=list value="+s[0]+">";
view_name.write('<tr><td width=5%>'+button_type+'</td><td style="text-align:left">'+s[1]+'</td></tr>');
}
view_name.write('</table><br><br></td></tr>');
view_name.write('<tr><td colspan=3><input type=submit value="投票"> <input type="button" value="結果" onclick="parent.act_click(\'vote\',\'end_view\','+id+')"></td></tr>');
view_name.write(temp_table2);
view_name.write('<input type="hidden" name="f" value="vote">');
view_name.write('<input type="hidden" name="act" value="add">');
view_name.write('<input type="hidden" name="v_id" value="'+id+'">');
view_name.write('</form>');
}
function vote_end_view(temp,title,tatal)
{
var view_name=parent.wog_view.document;
message_cls();
view_name.write('<tr><td></td><td></td><td></td><td></td></tr>');
view_name.write(temp_table1);
view_name.write('<tr><td colspan=4 bgcolor="#4B689E">投票結果</td></tr>');
view_name.write('<tr><td colspan=2 bgcolor="#3B588E">'+title+'</td><td colspan=2 bgcolor="#3B588E">總票數: '+tatal+' 票</td></tr>');
var s1=temp.split(";");
for(var li=0;li<s1.length;li++)
{
var s=s1[li].split(",");
var per=(parseInt(s[1]) > 0)?Math.round((parseInt(s[1])/parseInt(tatal))*1000)/10:0;
view_name.write('<tr><td width=45%>'+s[0]+'</td><td width=15% style="text-align:left"><img src='+img+'bar/bxg.gif border=0 width='+per+'% height=12></td><td width=20%>'+s[1]+' 人</td><td width=20%>'+per+'%</td></tr>');
}
view_name.write(temp_table2);
}
function vote_create()
{
var view_name=parent.wog_view.document;
message_cls();
view_name.write('<form action="wog_act.php" method="POST" target="mission">');
view_name.write(temp_table1);
view_name.write('<tr><td bgcolor=#4B689E colspan=2>建立新投票</td></tr>');
view_name.write('<tr><td>投票主題</td><td><input type="text" name="title" size=30 maxlength=30></td></tr>');
view_name.write('<tr><td valign="top">投票原因</td><td><textarea name="cause" cols=24 rows=6></textarea></td></tr>');
view_name.write('<tr><td valign="top">投票項目<br><非必要項目請留空></td><td>');
for(var a=1;a<=10;a++)
{
view_name.write('<input type="text" name="list'+a+'" size=30 maxlength=30><br>');
}
view_name.write('</td></tr>');
view_name.write('<tr><td>投票數量</td><td>');
for(var a=1;a<=5;a++)
{
var check=(a==1)?"checked":"";
view_name.write('<input type="radio" name="num" value="'+a+'" '+check+'>'+a+' 票 ');
}
view_name.write('</td></tr>');
view_name.write('<tr><td>投票權限</td><td><input type="radio" name="lv" value="1" checked>工會內部 <input type="radio" name="lv" value="2">全體工會</td></tr>');
view_name.write('<tr><td>投票時間</td><td><select name=date>');
for(var a=1;a<=30;a++)
{
view_name.write('<option value="'+a+'">'+a+' 天 ');
}
view_name.write('</select></td></tr>');
view_name.write('<tr><td colspan=2><input type="submit" value="建立"> <input type="reset" value="重寫"></td></tr>');
view_name.write(temp_table2);
view_name.write('<input type="hidden" name="f" value="vote">');
view_name.write('<input type="hidden" name="act" value="create">');
view_name.write('</form>');
}[/color]
開啟檔案wog/wog_act.php 寫:Find
- 代碼: 選擇全部
case "pet":
Before Add
- 代碼: 選擇全部
[color=red] case "vote":
include("./class/wog_act_vote.php");
$wog_act_class= new wog_act_vote;
switch($_POST["act"])
{
case "create":
$wog_act_class->vote_create($HTTP_COOKIE_VARS["wog_cookie"]);
break;
case "list":
$wog_act_class->vote_list($HTTP_COOKIE_VARS["wog_cookie"]);
break;
case "view":
$wog_act_class->vote_view($HTTP_COOKIE_VARS["wog_cookie"]);
break;
case "end_view":
$wog_act_class->vote_end_view($HTTP_COOKIE_VARS["wog_cookie"]);
break;
case "add":
$wog_act_class->vote_add($HTTP_COOKIE_VARS["wog_cookie"]);
break;
case "delete":
$wog_act_class->vote_delete($HTTP_COOKIE_VARS["wog_cookie"]);
break;
}
break;[/color]
建立檔案wog/class/wog_act_vote.php 寫:
- 代碼: 選擇全部
[color=red]<?
class wog_act_vote{
function vote_create($user_id)
{
global $DB_site,$_POST;
$p=$DB_site->query_first("SELECT a.p_name,a.p_g_id,b.g_adm_id1 FROM wog_player a,wog_group_main b WHERE a.p_id=$user_id AND b.g_id=a.p_g_id");
if($p["p_g_id"]==0)
{
alertWindowMsg("沒有所屬工會");
}
if($p["g_adm_id1"] != $user_id)
{
alertWindowMsg("你沒有發起投票的權限");
}
while(list($key,$value) = each($_POST))
{
$_POST[$key]=mb_convert_encoding($_POST[$key],"BIG-5","auto");
}
if(empty($_POST["title"]))
{
alertWindowMsg("沒有填入投票主題");
}
if(empty($_POST["list1"]) || empty($_POST["list2"]))
{
alertWindowMsg("前兩項目必須填寫");
}
$vote=$DB_site->query_first("SELECT v_id FROM wog_vote WHERE v_name='$p[p_name]' AND v_title='$_POST[title]'");
if($vote["v_id"])
{
alertWindowMsg("無法建立相同的投票主題");
}
if(empty($_POST["cause"]))
{
$_POST["cause"]="無";
}
$enddate=time()+($_POST["date"]*60*60*24);
$DB_site->query("INSERT INTO wog_vote(v_id,g_id,v_title,v_name,v_text,v_num,v_lv,v_date,v_enddate,v_record)VALUES('','$p[p_g_id]','".strip_tags($_POST[title])."','$p[p_name]','".strip_tags($_POST[cause])."','$_POST[num]','$_POST[lv]','".time()."','$enddate','')");
$vote=$DB_site->query_first("SELECT v_id FROM wog_vote WHERE v_title='$_POST[title]' AND v_name='$p[p_name]'");
for($li=1;$li<=10;$li++)
{
if(!empty($_POST["list".$li]))
{
$DB_site->query("INSERT wog_vote_list(vl_id,v_id,vl_title,vl_count)VALUES('','$vote[v_id]','".strip_tags($_POST["list".$li])."','0')");
}
}
showscript("parent.job_end(10);");
}
function vote_list($user_id)
{
global $DB_site;
$result=$DB_site->query("SELECT v_id FROM wog_vote WHERE v_enddate<".time()."-60*60*24*30");
if($vote=$DB_site->fetch_array($result))
{
$DB_site->query("DELETE FROM wog_vote WHERE v_id=$vote[v_id]");
$DB_site->query("DELETE FROM wog_vote_list WHERE v_id=$vote[v_id]");
}
$DB_site->free_result($result);
$p=$DB_site->query_first("SELECT p_g_id FROM wog_player WHERE p_id=$user_id");
$s="";
$result=$DB_site->query("SELECT a.v_id,a.v_title,a.v_name,a.v_date,a.v_enddate,b.g_name FROM wog_vote a,wog_group_main b WHERE (a.g_id=$p[p_g_id] OR v_lv=2) AND b.g_id=a.g_id ORDER BY a.v_enddate DESC");
while($vote=$DB_site->fetch_array($result))
{
$count=$DB_site->query_first("SELECT sum(vl_count) AS sum FROM wog_vote_list WHERE v_id=$vote[v_id]");
$enddate=(time()>$vote["v_enddate"])?"<font color=red>".date("y-m-d h:i:s",$vote["v_enddate"])."</font>":"<font color=yellow>".date("y-m-d h:i:s",$vote["v_enddate"])."</font>";
$s.=";".$vote["v_id"].",".$vote["v_title"].",".$vote["v_name"].",".$vote["g_name"].",".date("y-m-d h:i:s",$vote["v_date"]).",".$enddate.",".$count["sum"];
}
$s=substr($s,1);
showscript("parent.vote_list('$s');");
}
function vote_view($user_id)
{
global $DB_site,$_POST;
if(empty($_POST["v_id"]) || !is_numeric($_POST["v_id"]))
{
alertWindowMsg("沒有選擇投票主題");
}
$p=$DB_site->query_first("SELECT a.p_g_id,b.v_id,b.g_id,b.v_title,b.v_name,b.v_text,b.v_num,b.v_lv,b.v_date,b.v_enddate FROM wog_player a,wog_vote b WHERE p_id=$user_id AND b.v_id='$_POST[v_id]'");
if($p["p_g_id"] != $p["g_id"] && $p["v_lv"] != 2)
{
alertWindowMsg("你沒有參與這個投票的權限");
}
$s="";
$result=$DB_site->query("SELECT vl_id,vl_title FROM wog_vote_list WHERE v_id=$p[v_id] ORDER BY vl_id ASC");
while($list=$DB_site->fetch_array($result))
{
$s.=";".$list["vl_id"].",".$list["vl_title"];
}
$s=substr($s,1);
$vote["v_text"]=str_replace("\r\n","<br>",$p["v_text"]);
showscript("parent.vote_view('$s','$p[v_id]','$p[v_title]','$p[v_name]','$p[v_text]','$p[v_num]','".date("Y-m-d h:i:s",$p["v_date"])."','".date("Y-m-d h:i:s",$p["v_enddate"])."');");
}
function vote_end_view($user_id)
{
global $DB_site,$_POST;
$vote=$DB_site->query_first("SELECT v_title FROM wog_vote WHERE v_id=$_POST[temp_id]");
$countall=0;
$s="";
$result=$DB_site->query("SELECT vl_title,vl_count FROM wog_vote_list WHERE v_id=".$_POST["temp_id"]." ORDER BY vl_id ASC");
while($list=$DB_site->fetch_array($result))
{
$countall+=Intval($list["vl_count"]);
$s.=";".$list["vl_title"].",".$list["vl_count"];
}
$s=substr($s,1);
showscript("parent.vote_end_view('$s','$vote[v_title]',$countall);");
}
function vote_add($user_id)
{
global $DB_site,$_POST;
if(empty($_POST["list"]))
{
alertWindowMsg("沒有選擇投票項目");
}
$p=$DB_site->query_first("SELECT a.p_g_id,b.g_id as v_g_id,b.v_num,b.v_lv,b.v_record,b.v_enddate FROM wog_player a,wog_vote b WHERE a.p_id=$user_id AND b.v_id=$_POST[v_id]");
if($p["v_enddate"] < time())
{
alertWindowMsg("投票已過期");
}
if($p["p_g_id"] != $p["v_g_id"] && $p["v_lv"] ==1)
{
alertWindowMsg("你沒有參與這個投票的權限");
}
if($p["v_record"] != "")
{
$record=@explode(",",$p["v_record"]);
if(array_search($user_id,$record) !== false)
{
alertWindowMsg("您已投過此篇投票");
}
}
if($p["v_num"] < count($_POST["list"]))
{
alertWindowMsg("超過限定可投票數");
}
$p["v_record"]=(empty($p["v_record"]))?$user_id:$p["v_record"].",".$user_id;
$DB_site->query("UPDATE wog_vote SET v_record='$p[v_record]' WHERE v_id=$_POST[v_id]");
if($p["v_num"] > 1)
{
for($li=0;$li < count($_POST["list"]);$li++)
{
$DB_site->query("UPDATE wog_vote_list SET vl_count=vl_count+1 WHERE vl_id='".$_POST["list"][$li]."'");
}
}else
{
$DB_site->query("UPDATE wog_vote_list SET vl_count=vl_count+1 WHERE vl_id='".$_POST["list"]."'");
}
showscript("parent.job_end(15);");
}
function vote_delete($user_id)
{
global $DB_site,$_POST;
$p=$DB_site->query_first("SELECT a.p_g_id,b.g_id,b.g_adm_id1 FROM wog_player a,wog_group_main b,wog_vote c WHERE a.p_id=$user_id AND c.v_id='$_POST[temp_id2]' AND b.g_id=c.g_id");
if(!isset($p) || empty($p))
{
alertWindowMsg("沒有所屬工會");
}
if($p["g_adm_id1"] != $user_id || $p["p_g_id"] != $p["g_id"])
{
alertWindowMsg("非該工會會長無法刪除投票");
}
$DB_site->query("DELETE FROM wog_vote WHERE v_id=$_POST[temp_id2]");
$DB_site->query("DELETE FROM wog_vote_list WHERE v_id=$_POST[temp_id2]");
showscript("parent.job_end(1);");
}
}
?>[/color]
完畢~有問題請提出。