PHP 多选项实时统计的在线投票表单实现
随着互联网的普及,在线投票已经成为一种常见的互动方式。本文将介绍如何使用PHP技术实现一个多选项实时统计的在线投票表形。我们将从需求分析、技术选型、代码实现到测试验证,一步步展示如何构建这样一个功能。
1. 需求分析
1.1 功能需求
- 用户可以提交投票,选择一个或多个选项。
- 系统实时统计每个选项的投票数量。
- 系统显示每个选项的投票结果,包括投票数量和百分比。
- 系统支持投票结果的导出和查看历史投票数据。
1.2 非功能需求
- 系统应具有良好的用户体验,界面简洁易用。
- 系统应具备良好的性能,能够快速响应用户操作。
- 系统应具备一定的安全性,防止恶意刷票等行为。
2. 技术选型
- 前端:HTML、CSS、JavaScript
- 后端:PHP
- 数据库:MySQL
- 其他:Bootstrap(用于前端样式)、jQuery(用于前端交互)
3. 代码实现
3.1 数据库设计
我们需要设计一个数据库来存储投票数据。以下是一个简单的投票表结构:
sql
CREATE TABLE votes (
id INT AUTO_INCREMENT PRIMARY KEY,
option_id INT NOT NULL,
user_id INT NOT NULL,
vote_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
其中,`option_id` 表示选项ID,`user_id` 表示用户ID,`vote_time` 表示投票时间。
3.2 后端代码
3.2.1 投票接口
php
connect_error) {
die('Connection failed: ' . $mysqli->connect_error);
}
// 获取用户ID和选项ID
$user_id = $_POST['user_id'];
$option_id = $_POST['option_id'];
// 检查用户是否已经投过票
$query = "SELECT FROM votes WHERE user_id = $user_id AND option_id = $option_id";
$result = $mysqli->query($query);
if ($result->num_rows > 0) {
// 用户已经投过票
echo json_encode(['status' => 'error', 'message' => 'You have already voted.']);
} else {
// 插入投票记录
$query = "INSERT INTO votes (user_id, option_id) VALUES ($user_id, $option_id)";
if ($mysqli->query($query)) {
// 投票成功
echo json_encode(['status' => 'success', 'message' => 'Vote cast successfully.']);
} else {
// 投票失败
echo json_encode(['status' => 'error', 'message' => 'Vote failed.']);
}
}
// 关闭数据库连接
$mysqli->close();
?>
3.2.2 投票统计接口
php
connect_error) {
die('Connection failed: ' . $mysqli->connect_error);
}
// 获取选项ID
$option_id = $_GET['option_id'];
// 统计投票数量
$query = "SELECT COUNT() AS vote_count FROM votes WHERE option_id = $option_id";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
$vote_count = $row['vote_count'];
// 获取总投票数
$total_votes = $mysqli->query("SELECT COUNT() AS total FROM votes")->fetch_assoc()['total'];
// 计算百分比
$percentage = ($vote_count / $total_votes) 100;
// 关闭数据库连接
$mysqli->close();
// 返回结果
echo json_encode(['vote_count' => $vote_count, 'percentage' => $percentage]);
?>
3.3 前端代码
3.3.1 投票表单
html
Online Voting Form
Online Voting Form
User ID:
Comments NOTHING