使用PHP实现一个简单的在线投票系统

在当今的数字化时代,我们经常需要创建各种在线投票系统,这些系统可以用于各种目的,如选举、公众意见调查等,在这篇文章中,我们将介绍如何使用PHP实现一个简单的在线投票系统。

我们需要创建一个HTML表单,让用户可以选择他们想要投票的选项,这个表单应该包含一个隐藏字段,用于存储用户的ID和投票选项。

<form action="vote.php" method="post">
    <input type="hidden" name="user_id" value="<?php echo $_SESSION['user_id']; ?>">
    <input type="radio" name="vote" value="option1"> Option 1<br>
    <input type="radio" name="vote" value="option2"> Option 2<br>
    <input type="radio" name="vote" value="option3"> Option 3<br>
    <input type="submit" value="Vote">
</form>

我们需要创建一个PHP脚本来处理用户的投票,这个脚本应该首先检查用户是否已经登录,如果用户没有登录,他们应该被重定向到登录页面,如果用户已经登录,他们的投票应该被记录在数据库中。

session_start();
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

$vote = $_POST['vote'];

// Connect to the database
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

// Insert the vote into the database
$stmt = $db->prepare("INSERT INTO votes (user_id, option) VALUES (?, ?)");
$stmt->execute([$_SESSION['user_id'], $vote]);

我们需要创建一个PHP脚本来显示投票结果,这个脚本应该从数据库中获取所有的投票,并计算每个选项的票数。

// Get all the votes from the database
$stmt = $db->query("SELECT option, COUNT(*) as count FROM votes GROUP BY option");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Display the results
foreach ($results as $result) {
    echo "Option {$result['option']} has {$result['count']} votes.<br>";
}

这就是如何使用PHP实现一个简单的在线投票系统,虽然这个系统非常简单,但它展示了如何使用PHP处理用户输入、与数据库交互以及显示结果的基本概念。