1. 简介
在线投票和民意调查是现代社会中非常流行的一种方式,许多网站都提供了这样的服务。在本文中,我们将通过 PHP 实现一个简单的在线投票和民意调查功能。我们将使用 PHP 来设计一个投票表单,在这个表单中我们将能够收集用户的投票意见,并将这些投票意见结果显示给用户。
2. 准备工作
在开始开发之前,我们需要准备一些工作。首先,我们需要一个 Web 服务器和一个 PHP 解释器。我们还需要一个 MySQL 数据库,以便存储投票数据。如果您已经拥有这些工具和技能,则可以跳过这些步骤。
2.1 安装 Web 服务器和 PHP 解释器
安装 Web 服务器和 PHP 解释器并不难,许多网站都提供了详细的教程。在本文中,我们将使用 Apache 服务器和 PHP 7,这两个工具在大多数 Linux 发行版中都可以轻松获得。
sudo apt-get update
sudo apt-get install apache2
sudo apt-get install php7
2.2 安装 MySQL 数据库
MySQL 是一种流行的关系型数据库管理系统,我们将使用它来存储用户投票的结果。MySQL 数据库的安装和配置也很简单,可以通过以下命令在大多数 Linux 发行版中进行安装:
sudo apt-get install mysql-server
3. 设计投票表单
接下来,我们将设计一个投票表单,以便用户投票并提交他们的选择。该表单将通过 HTML 和 PHP 代码来构建。
3.1 创建 HTML 表单
在这一步中,我们将创建一个包含投票选项的 HTML 表单,以便用户可以选择他们的投票选项。该表单将包含一个表单标签,以便我们可以使用 PHP 代码来处理用户的选择。我们将使用 radio 类型的表单元素来为用户提供可选的投票选项。
<form action="submit.php" method="post">
<p><strong>请选择您的选项:</strong></p>
<p>
<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 />
</p>
<p><input type="submit" name="submit" value="Submit"></p>
</form>
3.2 处理用户选择
在用户提交表单后,我们需要使用 PHP 代码来处理他们的选择。我们将创建一个名为 submit.php 的 PHP 文件,以便处理表单数据。在这个文件中,我们将获取表单中用户选择的选项,并将其保存到 MySQL 数据库中。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(isset($_POST["submit"])) {
$vote = $_POST["vote"];
$sql = "INSERT INTO Votes (vote) VALUES ('$vote')";
if ($conn->query($sql) === TRUE) {
echo "投票成功";
} else {
echo "Error: " . $sql . "<br />" . $conn->error;
}
}
$conn->close();
?>
4. 显示投票结果
在收集投票结果之后,我们需要展示投票结果给用户。我们将使用 PHP 和 MySQL 查询语句来查询投票结果,并将其显示在网页上。
4.1 查询 MySQL 数据库
我们将使用 MySQL 的查询语句来查询投票结果。我们将使用 SELECT 语句来查询投票结果,并使用 GROUP BY 语句按选项对投票结果进行分组。这种查询将返回每个选项的投票数量。
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT vote, COUNT(*) AS count FROM Votes GROUP BY vote";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<p><strong>" . $row["vote"]. ": </strong>" . $row["count"]. " 投票</p>";
}
} else {
echo "No results";
}
$conn->close();
?>
4.2 在网页上显示投票结果
现在,我们将使用 PHP echo 语句来在网页上显示投票结果。我们将在网页的页面底部添加一个标题和一个包含投票结果的 div 元素。我们将在这个 div 元素中使用 PHP 输出投票结果。
<h2>投票结果</h2>
<div>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT vote, COUNT(*) AS count FROM Votes GROUP BY vote";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<p><strong>" . $row["vote"]. ": </strong>" . $row["count"]. " 投票</p>";
}
} else {
echo "No results";
}
$conn->close();
?>
</div>
5. 总结
在本文中,我们已经实现了一个简单的在线投票和民意调查功能。我们设计了一个投票表单,将用户选择的选项提交到 MySQL 数据库中,并在网页底部显示投票结果。这个项目只包含了基本的投票功能,但是您可以根据需要进行扩展。