PHP를 사용하여 강력한 온라인 투표 플랫폼 만들기
소개:
인터넷의 발전으로 온라인 투표는 의견을 수집하고 결정을 내리는 일반적이고 편리한 방법이 되었습니다. 이 기사에서는 PHP를 사용하여 사용자가 쉽게 투표에 참여하고 결과를 볼 수 있는 강력한 온라인 투표 플랫폼을 만들어 보겠습니다. 이 기능을 구현하기 위해 HTML, CSS, PHP의 조합을 사용할 것입니다.
1단계: 데이터베이스 만들기
먼저 투표 관련 데이터를 저장할 데이터베이스를 만들어야 합니다. 이 작업을 수행하기 위해 MySQL 데이터베이스를 사용할 수 있습니다. MySQL에 "voting_platform"이라는 데이터베이스를 만들고 그 안에 두 개의 테이블을 만듭니다. 하나는 투표 질문과 옵션을 저장하고 다른 하나는 사용자 투표 결과를 저장합니다.
투표 질문 및 옵션 테이블 만들기:
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) NOT NULL,
id
)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
options
( id code> int(11) NOT NULL AUTO_INCREMENT,<br> <code>question_id
int(11) NOT NULL,
option
varchar(255) NOT NULL, PRIMARY KEY(id code>),<br> FOREIGN KEY (<code>question_id
) REFERENCES questions
(id
) ON DELETE CASCADE
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 질문 (id
) ON DELETE CASCADE,🎜 FOREIGN KEY (option_id
) REFERENCES options
(id code> ) ON DELETE CASCADE🎜) ENGINE=InnoDB DEFAULT CHARSET=utf8;🎜🎜2단계: 투표 플랫폼 페이지 생성🎜다음으로 투표 플랫폼의 프런트 엔드 페이지 생성을 시작할 수 있습니다. 우리는 아름답고 사용자 친화적인 인터페이스를 만들기 위해 HTML과 CSS를 사용할 것입니다. 페이지에는 투표 질문과 옵션이 표시되고 사용자가 선택할 수 있는 투표 버튼이 제공됩니다. 동시에 투표 결과도 표시됩니다. 🎜<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">로그인 후 복사</div></div>🎜3단계: 투표 요청 처리🎜투표 요청을 처리하고 결과를 데이터베이스에 저장하려면 "vote.php"라는 PHP 파일을 만듭니다. 🎜<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">로그인 후 복사</div></div>🎜결론: 🎜위의 단계를 통해 우리는 강력한 온라인 투표 플랫폼을 성공적으로 만들었습니다. 사용자는 질문과 해당 옵션을 선택하여 투표할 수 있으며, 투표 결과도 볼 수 있습니다. PHP와 데이터베이스를 사용하여 간단하면서도 강력한 투표 플랫폼을 구현하여 의사 결정 및 의견 수집을 위한 편리하고 효율적인 도구를 제공합니다. 🎜
위 내용은 PHP를 사용하여 강력한 온라인 투표 플랫폼 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!