如何使用PHP開發簡單的線上問答系統?
在網路時代,問答社群成為了人們獲取各種知識和解決問題的常見方式。許多網站都提供了問答功能,用戶可以在這些平台上提出問題並獲得其他用戶的回答。本文將介紹如何使用PHP開發一個簡單的線上問答系統,並提供具體的程式碼範例。
首先,我們需要建立一個資料庫來儲存問題和答案。可以使用MySQL或其他關係型資料庫來實作。以下是建立問題表和答案表的SQL語句範例。
CREATE TABLE questions ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE answers ( id INT AUTO_INCREMENT PRIMARY KEY, question_id INT NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (question_id) REFERENCES questions(id) );
接下來,我們需要建立一個PHP檔案來處理問題和答案的增刪改查操作。以下是一個簡單的範例程式碼:
<?php // 连接数据库 $host = 'localhost'; $db = 'question_answer'; $user = 'root'; $password = 'password'; $conn = new PDO("mysql:host=$host;dbname=$db", $user, $password); // 添加问题 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['title']) && isset($_POST['content'])) { $title = $_POST['title']; $content = $_POST['content']; $sql = "INSERT INTO questions (title, content) VALUES (?, ?)"; $stmt = $conn->prepare($sql); $stmt->execute([$title, $content]); $questionId = $conn->lastInsertId(); // 返回问题ID echo json_encode(['questionId' => $questionId]); exit; } // 获取问题和答案 if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['questionId'])) { $questionId = $_GET['questionId']; // 获取问题 $sql = "SELECT * FROM questions WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$questionId]); $question = $stmt->fetch(PDO::FETCH_ASSOC); // 获取答案 $sql = "SELECT * FROM answers WHERE question_id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$questionId]); $answers = $stmt->fetchAll(PDO::FETCH_ASSOC); // 返回问题和答案 echo json_encode(['question' => $question, 'answers' => $answers]); exit; } // 添加答案 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['questionId']) && isset($_POST['content'])) { $questionId = $_POST['questionId']; $content = $_POST['content']; $sql = "INSERT INTO answers (question_id, content) VALUES (?, ?)"; $stmt = $conn->prepare($sql); $stmt->execute([$questionId, $content]); // 返回成功 echo json_encode(['success' => true]); exit; } // 删除问题 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['deleteQuestionId'])) { $questionId = $_POST['deleteQuestionId']; // 删除问题 $sql = "DELETE FROM questions WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$questionId]); // 删除相关答案 $sql = "DELETE FROM answers WHERE question_id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$questionId]); // 返回成功 echo json_encode(['success' => true]); exit; } ?>
以上程式碼中,我們使用了PDO來連接資料庫,並使用預處理語句來防止SQL注入攻擊。
接下來,我們可以建立一個前端頁面來展示問題和答案,並提供新增和刪除問題的功能。以下是一個簡單的前端頁面範例:
<!DOCTYPE html> <html> <head> <title>在线问答系统</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> </head> <body> <h1>在线问答系统</h1> <!-- 添加问题表单 --> <form id="addQuestionForm"> <input type="text" name="title" placeholder="问题标题" required> <textarea name="content" placeholder="问题内容" required></textarea> <button type="submit">添加问题</button> </form> <!-- 问题列表 --> <ul id="questionList"></ul> <script> // 添加问题 $('#addQuestionForm').submit(function(e) { e.preventDefault(); $.post('qa.php', $(this).serialize(), function(response) { // 更新问题列表 fetchQuestionList(); // 清空表单 $('#addQuestionForm')[0].reset(); }, 'json'); }); // 获取问题列表 function fetchQuestionList() { $.get('qa.php', function(response) { var questionList = ''; for (var i = 0; i < response.length; i++) { var question = response[i]; var questionItem = '<li>' + '<h3>' + question.title + '</h3>' + '<p>' + question.content + '</p>' + '<button onclick="deleteQuestion(' + question.id + ')">删除</button>' + '</li>'; questionList += questionItem; } $('#questionList').html(questionList); }, 'json'); } // 删除问题 function deleteQuestion(questionId) { if (confirm('确定要删除该问题及相关答案吗?')) { $.post('qa.php', { deleteQuestionId: questionId }, function(response) { fetchQuestionList(); }, 'json'); } } // 页面加载时获取问题列表 $(function() { fetchQuestionList(); }); </script> </body> </html>
以上程式碼中,我們使用jQuery發送AJAX請求來和伺服器進行通信,並使用DOM操作動態更新頁面內容。
綜上所述,透過上述的PHP和HTML程式碼範例,我們可以實作一個簡單的線上問答系統。當然,這只是一個基礎的例子,實際的問答系統還需要考慮更多的功能和安全性問題。希望本文能幫助你入門PHP開發,並啟發你建立更完善的線上問答系統。
以上是如何使用PHP開發簡單的線上問答系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!