基于PHP的简单投票系统源码分享与解析 文章
随着互联网的普及和技术的进步,PHP作为一种流行的服务器端脚本语言,已经成为构建各种Web应用的首选之一。在众多PHP应用中,投票系统是一种常见的互动功能,能够帮助网站收集用户意见,提高用户参与度。本文将为大家分享一个简单的PHP投票系统源码,并对源码进行详细解析,帮助读者更好地理解和应用。
一、投票系统功能简介
本投票系统具备以下基本功能:
1.投票:用户可以对自己感兴趣的选项进行投票。 2.查看结果:用户可以查看当前投票的实时结果。 3.后台管理:管理员可以查看投票结果,修改问题内容,删除投票等。
二、投票系统源码分析
1.数据库设计
首先,我们需要创建一个数据库来存储投票问题、选项以及投票结果。以下是一个简单的数据库表结构示例:
CREATE TABLE
vote (
id int(11) NOT NULL AUTO_INCREMENT,
question varchar(255) NOT NULL,
option1 varchar(255) NOT NULL,
option2 varchar(255) NOT NULL,
option3 varchar(255) DEFAULT NULL,
option4 varchar(255) DEFAULT NULL,
PRIMARY KEY (
id`)
);
CREATE TABLE vote_result
(
vote_id
int(11) NOT NULL,
option_id
int(11) NOT NULL,
count
int(11) NOT NULL,
PRIMARY KEY (vote_id
,option_id
),
KEY vote_result_Vote
(vote_id
),
CONSTRAINT vote_result_Vote
FOREIGN KEY (vote_id
) REFERENCES vote
(id
) ON DELETE CASCADE
);
`
2.投票页面
投票页面主要包括以下内容:
(1)问题展示:显示投票问题以及四个选项。
(2)投票操作:用户点击某个选项,提交表单,将投票结果保存到数据库。
以下是一个简单的PHP代码示例:
`php
<?php
session_start();
// 连接数据库 $mysqli = new mysqli("localhost", "username", "password", "database");
// 查询投票问题 $query = "SELECT * FROM vote WHERE id = 1"; $result = $mysqli->query($query); $vote = $result->fetch_assoc();
// 提交投票 if (isset($POST['vote'])) { $voteid = $POST['vote']; $query = "INSERT INTO voteresult (voteid, optionid, count) VALUES ('$vote_id', 1, 1) ON DUPLICATE KEY UPDATE count = count + 1"; $mysqli->query($query); }
// 查询投票结果 $query = "SELECT voteresult.*, vote.question FROM voteresult INNER JOIN vote ON voteresult.voteid = vote.id WHERE vote.id = 1"; $result = $mysqli->query($query); ?>
<!DOCTYPE html>
<html>
<head>
<title>投票系统</title>
</head>
<body>
<h1><?php echo $vote['question']; ?></h1>
<form action="" method="post">
<label><input type="radio" name="vote" value="1"> <?php echo $vote['option1']; ?></label><br>
<label><input type="radio" name="vote" value="2"> <?php echo $vote['option2']; ?></label><br>
<?php if ($vote['option3']) { ?>
<label><input type="radio" name="vote" value="3"> <?php echo $vote['option3']; ?></label><br>
<?php } ?>
<?php if ($vote['option4']) { ?>
<label><input type="radio" name="vote" value="4"> <?php echo $vote['option4']; ?></label><br>
<?php } ?>
<input type="submit" value="投票">
</form>
<h2>投票结果</h2>
<?php while ($row = $result->fetch_assoc()) { ?>
<p><?php echo $row['question']; ?></p>
<label><input type="radio" disabled <?php if ($row['option_id'] == 1) echo 'checked'; ?>> <?php echo $vote['option1']; ?> (<?php echo $row['count']; ?>票)</label><br>
<label><input type="radio" disabled <?php if ($row['option_id'] == 2) echo 'checked'; ?>> <?php echo $vote['option2']; ?> (<?php echo $row['count']; ?>票)</label><br>
<?php if ($vote['option3']) { ?>
<label><input type="radio" disabled <?php if ($row['option_id'] == 3) echo 'checked'; ?>> <?php echo $vote['option3']; ?> (<?php echo $row['count']; ?>票)</label><br>
<?php } ?>
<?php if ($vote['option4']) { ?>
<label><input type="radio" disabled <?php if ($row['option_id'] == 4) echo 'checked'; ?>> <?php echo $vote['option4']; ?> (<?php echo $row['count']; ?>票)</label><br>
<?php } ?>
<?php } ?>
</body>
</html>
`
3.后台管理页面
后台管理页面主要包括以下内容:
(1)查看投票结果:管理员可以查看所有投票的实时结果。
(2)修改问题内容:管理员可以修改投票问题及选项。
(3)删除投票:管理员可以删除已结束或不需要的投票。
以下是一个简单的PHP代码示例:
`php
<?php
session_start();
// 连接数据库 $mysqli = new mysqli("localhost", "username", "password", "database");
// 查看投票结果 $query = "SELECT vote.id, vote.question, SUM(voteresult.count) AS total FROM vote LEFT JOIN voteresult ON vote.id = voteresult.voteid GROUP BY vote.id"; $result = $mysqli->query($query);
// 修改问题内容 if (isset($POST['modify'])) { $voteid = $_POST['voteid']; $question = $POST['question']; $option1 = $POST['option1']; $option2 = $POST['option2']; $option3 = $POST['option3']; $option4 = $POST['option4'];
$query = "UPDATE vote SET question = '$question', option1 = '$option1', option2 = '$option2', option3 = '$option3', option4 = '$option4' WHERE id = '$vote_id'";
$mysqli->query($query);
}
// 删除投票 if (isset($POST['delete'])) { $voteid = $_POST['voteid']; $query = "DELETE FROM vote WHERE id = '$voteid'"; $mysqli->query($query); $query = "DELETE FROM voteresult WHERE voteid = '$vote_id'"; $mysqli->query($query); } ?>
<!DOCTYPE html>
<html>
<head>
<title>后台管理</title>
</head>
<body>
<h1>投票结果</h1>
<table border="1">
<tr>
<th>投票ID</th>
<th>问题</th>
<th>总票数</th>
<th>操作</th>
</tr>
<?php while ($row = $result->fetchassoc()) { ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['question']; ?></td>
<td><?php echo $row['total']; ?></td>
<td>
<form action="" method="post">
<input type="hidden" name="voteid" value="<?php echo $row['id']; ?>">
<input type="submit" name="modify" value="修改">
<input type="submit" name="delete" value="删除">
</form>
</td>
</tr>
<?php } ?>
</table>
<!-- 修改问题内容表单 -->
<h1>修改问题内容</h1>
<form action="" method="post">
<label>问题:</label><input type="text" name="question"><br>
<label>选项1:</label><input type="text" name="option1"><br>
<label>选项2:</label><input type="text" name="option2"><br>
<label>选项3:</label><input type="text" name="option3"><br>
<label>选项4:</label><input type="text" name="option4"><br>
<input type="submit" name="modify" value="提交">
</form>
</body>
</html>
`
三、总结
本文分享了一个基于PHP的简单投票系统源码,并对其进行了详细解析。通过学习本源码,读者可以了解PHP投票系统的基本实现方法,以及如何使用PHP和MySQL数据库进行数据存储和查询。在实际应用中,可以根据需求对源码进行修改和扩展,使其满足更多场景。希望本文对读者有所帮助。