PHP Forma 表单 多选项实时统计的在线投票表单

PHP Forma阿木 发布于 3 天前 1 次阅读


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:

Option ID: