随着互联网时代的到来,人们参与和表达意见的需求愈加强烈。在线投票系统作为一种快捷、方便的方式,已经成为民主决策和群体意见收集的重要工具。
在本文中,我们将介绍如何基于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/>"; }