Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan PHP untuk membangunkan sistem soal jawab dalam talian yang mudah
Bagaimana untuk menggunakan PHP untuk membangunkan sistem soal jawab dalam talian yang mudah?
Dalam era Internet, komuniti Soal Jawab telah menjadi cara biasa untuk orang ramai memperoleh pelbagai pengetahuan dan menyelesaikan masalah. Banyak tapak web menawarkan ciri Soal Jawab di mana pengguna boleh bertanya soalan dan mendapatkan jawapan daripada pengguna lain. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan sistem soal jawab dalam talian yang mudah dan menyediakan contoh kod khusus.
Pertama, kita perlu mencipta pangkalan data untuk menyimpan soalan dan jawapan. Ini boleh dicapai menggunakan MySQL atau pangkalan data hubungan lain. Di bawah ialah contoh pernyataan SQL untuk membuat jadual soalan dan jadual jawapan.
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) );
Seterusnya, kita perlu mencipta fail PHP untuk mengendalikan penambahan, pemadaman, pengubahsuaian dan penyemakan soalan dan jawapan. Berikut ialah kod sampel mudah:
<?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; } ?>
Dalam kod di atas, kami menggunakan PDO untuk menyambung ke pangkalan data dan menggunakan pernyataan yang disediakan untuk menghalang serangan suntikan SQL.
Seterusnya, kami boleh membuat halaman hadapan untuk memaparkan soalan dan jawapan, dan menyediakan fungsi untuk menambah dan memadam soalan. Berikut ialah contoh halaman hadapan yang mudah:
<!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>
Dalam kod di atas, kami menggunakan jQuery untuk menghantar permintaan AJAX untuk berkomunikasi dengan pelayan, dan menggunakan operasi DOM untuk mengemas kini kandungan halaman secara dinamik.
Ringkasnya, melalui contoh kod PHP dan HTML di atas, kami boleh melaksanakan sistem soal jawab dalam talian yang mudah. Sudah tentu, ini hanyalah contoh asas Sistem soal jawab sebenar juga perlu mempertimbangkan lebih banyak isu fungsi dan keselamatan. Saya harap artikel ini dapat membantu anda memulakan pembangunan PHP dan memberi inspirasi kepada anda untuk membina sistem soal jawab dalam talian yang lebih lengkap.
Atas ialah kandungan terperinci Cara menggunakan PHP untuk membangunkan sistem soal jawab dalam talian yang mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!