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