隨著互聯網時代的到來,人們參與和表達意見的需求愈加強烈。在線投票系統作為一種快捷、方便的方式,已經成為民主決策和群體意見收集的重要工具。
在本文中,我們將介紹如何基於PHP語言實現一個支持多樣化投票方式的在線投票系統,並提供完整的代碼示例,幫助開發者實現自己的投票平台。
支持單選、多選及打分投票方式;
用戶可進行匿名投票;
管理員能夠創建投票主題、編輯選項、設定投票時間;
系統可實時統計並展示投票結果。
以下是這兩個表的結構示例:
CREATE TABLE vote ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, start_time datetime NOT NULL, end_time datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE option ( id int(11) NOT NULL AUTO_INCREMENT, vote_id int(11) NOT NULL, content text NOT NULL, PRIMARY KEY (id), KEY vote_id (vote_id), CONSTRAINT fk_vote_id FOREIGN KEY (vote_id) REFERENCES vote (id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
// 投票主題展示echo "<h2> " . $vote['title'] . "</h2> "; // 選項選擇foreach ($options as $option) { echo "<input type='" . $vote['type'] . "' name='option' value='" . $option['id'] . "'> " . $option['content'] . "<br/> "; } // 提交按鈕echo "<input type='submit' value="提交投票"> ";
// 提交投票if ($_SERVER['REQUEST_METHOD'] == 'POST') { $selectedOption = $_POST['option']; // 根據選項類型處理if ($vote['type'] == 'radio') { // 單選投票$voteCount = 1; } elseif ($vote['type'] == 'checkbox') { // 多選投票$voteCount = count($selectedOption); } elseif ($vote['type'] == 'rating') { // 打分投票$totalRating = $_POST['total_rating']; $voteCount = 1; } // 更新投票統計foreach ($selectedOption as $optionId) { // 執行更新操作:UPDATE option SET count = count + 1 WHERE id = $optionId } }
// 查詢投票結果$options = $db->query("SELECT * FROM option WHERE vote_id = ".$vote['id'])->fetchAll(); foreach ($options as $option) { $votePercentage = ($option['count'] / $voteCount) * 100; echo $option['content'] . ": " . $votePercentage . "%<br/> "; }