Utilisez PHP pour créer une puissante plateforme de vote en ligne
Introduction :
Avec le développement d'Internet, le vote en ligne est devenu un moyen courant et pratique de recueillir des opinions et de prendre des décisions. Dans cet article, nous utiliserons PHP pour créer une puissante plateforme de vote en ligne qui permet aux utilisateurs de participer facilement au vote et de visualiser les résultats. Nous utiliserons une combinaison de HTML, CSS et PHP pour réaliser cette fonctionnalité.
Étape 1 : Créer une base de données
Tout d'abord, nous devons créer une base de données pour stocker les données relatives au vote. Nous pouvons utiliser la base de données MySQL pour accomplir cette tâche. Créez une base de données nommée "voting_platform" dans MySQL et créez-y deux tables : une pour stocker les questions et options de vote, et une autre pour stocker les résultats de vote des utilisateurs.
Créez un tableau de questions et d'options de vote :
CREATE TABLE questions
(questions
(
id
int(11) NOT NULL AUTO_INCREMENT,
question
varchar(255) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE options
(
id
int(11) NOT NULL AUTO_INCREMENT,
question_id
int(11) NOT NULL,
option
varchar(255) NOT NULL,
PRIMARY KEY (id
),
FOREIGN KEY (question_id
) REFERENCES questions
(id
) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建用户投票结果表:
CREATE TABLE votes
(
id
int(11) NOT NULL AUTO_INCREMENT,
question_id
int(11) NOT NULL,
option_id
int(11) NOT NULL,
PRIMARY KEY (id
),
FOREIGN KEY (question_id
) REFERENCES questions
(id
) ON DELETE CASCADE,
FOREIGN KEY (option_id
) REFERENCES options
(id
id
int(11) NOT NULL AUTO_INCREMENT,
question
varchar( 255) NON NULL,
id
)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
options
( id code> int(11) NON NULL AUTO_INCREMENT,<br> <code>question_id
int(11) NON NULL,
option
varchar(255) NON NULL, CLÉ PRIMAIRE (id code>),<br> CLÉ ÉTRANGÈRE (<code>question_id
) RÉFÉRENCES questions
(id
) ON DELETE CASCADE
votes
(🎜 id
int(11) NOT NULL AUTO_INCREMENT,🎜 question_id
int( 11) NON NULL,🎜 option_id
int(11) NON NULL,🎜 CLÉ PRIMAIRE (id
),🎜 CLÉ ÉTRANGÈRE (question_id
) RÉFÉRENCES questions (id
) SUR SUPPRIMER CASCADE,🎜 CLÉ ÉTRANGÈRE (option_id
) RÉFÉRENCES options
(id code> ) ON DELETE CASCADE🎜) ENGINE=InnoDB DEFAULT CHARSET=utf8;🎜🎜Étape 2 : Créer la page de la plateforme de vote🎜Ensuite, nous pouvons commencer à créer la page frontale de la plateforme de vote. Nous utiliserons HTML et CSS pour créer une interface belle et conviviale. Sur la page, nous afficherons les questions et options de vote, et fournirons un bouton de vote que l'utilisateur pourra choisir. Parallèlement, nous afficherons également les résultats du vote. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:html;toolbar:false;'><!DOCTYPE html>
<html>
<head>
<title>在线投票平台</title>
<style>
/* 样式定义 */
</style>
</head>
<body>
<h1>在线投票平台</h1>
<?php
// 连接到数据库
$conn = new mysqli('localhost', 'username', 'password', 'voting_platform');
// 检查连接是否成功
if ($conn->connect_error) {
die("连接数据库失败: " . $conn->connect_error);
}
// 查询投票问题和选项
$sql = "SELECT id, question FROM questions";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出投票问题
while($row = $result->fetch_assoc()) {
echo "<h2>" . $row["question"] . "</h2>";
// 查询投票选项
$sql = "SELECT id, option FROM options WHERE question_id=" . $row["id"];
$options = $conn->query($sql);
if ($options->num_rows > 0) {
// 输出投票选项
while($option = $options->fetch_assoc()) {
echo "<input type='radio' name='option_" . $row["id"] . "' value='" . $option["id"] . "'>" . $option["option"] . "<br>";
}
}
echo "<button onclick='vote(" . $row["id"] . ")'>投票</button>";
}
}
// 关闭数据库连接
$conn->close();
?>
<h2>投票结果</h2>
<?php
// 连接到数据库
$conn = new mysqli('localhost', 'username', 'password', 'voting_platform');
// 检查连接是否成功
if ($conn->connect_error) {
die("连接数据库失败: " . $conn->connect_error);
}
// 查询投票结果
$sql = "SELECT questions.id, questions.question, options.option, COUNT(votes.id) as count FROM questions JOIN options ON questions.id = options.question_id LEFT JOIN votes ON options.id = votes.option_id GROUP BY options.id";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出投票结果
while($row = $result->fetch_assoc()) {
echo "<p>" . $row["question"] . "<br>";
echo $row["option"] . ": " . $row["count"] . " 票</p>";
}
}
// 关闭数据库连接
$conn->close();
?>
<script>
// 使用AJAX发送投票请求
function vote(questionId) {
var options = document.getElementsByName('option_' + questionId);
var selectedOptionId;
for (var i = 0; i < options.length; i++) {
if (options[i].checked) {
selectedOptionId = options[i].value;
break;
}
}
if (selectedOptionId) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
alert("投票成功!");
location.reload(); // 刷新页面以更新投票结果
} else {
alert("投票失败!");
}
}
};
xhr.open('POST', 'vote.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('question_id=' + questionId + '&option_id=' + selectedOptionId);
} else {
alert("请选择一个选项进行投票!");
}
}
</script>
</body>
</html></pre><div class="contentsignin">Copier après la connexion</div></div>🎜Étape 3 : Traiter la demande de vote🎜Créez un fichier PHP nommé "vote.php" pour traiter la demande de vote et enregistrer les résultats dans la base de données. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?php
// 获取问题ID和选项ID
$questionId = $_POST['question_id'];
$optionId = $_POST['option_id'];
// 连接到数据库
$conn = new mysqli('localhost', 'username', 'password', 'voting_platform');
// 检查连接是否成功
if ($conn->connect_error) {
die("连接数据库失败: " . $conn->connect_error);
}
// 插入投票结果到数据库
$sql = "INSERT INTO votes (question_id, option_id) VALUES ($questionId, $optionId)";
if ($conn->query($sql) === TRUE) {
echo "投票成功!";
} else {
echo "投票失败!";
}
// 关闭数据库连接
$conn->close();
?></pre><div class="contentsignin">Copier après la connexion</div></div>🎜Conclusion : 🎜Grâce aux étapes ci-dessus, nous avons réussi à créer une puissante plateforme de vote en ligne. Les utilisateurs peuvent sélectionner des questions et des options correspondantes pour voter, et peuvent également consulter les résultats du vote. En utilisant PHP et une base de données, nous avons implémenté une plateforme de vote simple mais puissante, fournissant un outil pratique et efficace pour la prise de décision et la collecte d'opinions. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!