使用PHP創建一個強大的線上投票平台
引言:
隨著網路的發展,線上投票已經成為一種常見且方便的方式來收集意見和做決策。在這篇文章中,我們將使用PHP來創建一個強大的線上投票平台,讓用戶可以輕鬆地參與投票並查看結果。我們將使用HTML、CSS和PHP的組合來實現這個功能。
步驟一:建立資料庫
首先,我們需要建立一個資料庫來儲存投票相關的資料。我們可以使用MySQL資料庫來完成這項任務。在MySQL中建立一個名為"voting_platform"的資料庫,並在其中建立兩個表:一個用於儲存投票問題和選項,另一個用於儲存使用者投票結果。
建立投票問題與選項表:
##CREATE TABLEquestions (
id int(11) NOT NULL AUTO_INCREMENT,
question varchar(255) NOT NULL,
PRIMARY KEY (
id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
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;
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) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#步驟二:建立投票平台頁面
<!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>
<?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(); ?>
以上是使用PHP創建一個強大的線上投票平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!