Use PHP to develop question answer acceptance and recommendation functions in knowledge Q&A websites
In knowledge Q&A websites, users ask questions and other users provide answers. It often happens that one or more of the multiple answers is recognized as the best answer by the questioner or other users. Therefore, in order to better display and manage the answers to questions, in this article we will introduce how to develop the adoption and recommendation functions of question answers using PHP.
First, we need to design a database to store information about questions and answers. Here we create three tables. The
questions
table stores question information, such as question ID, title, content, questioner ID, question time, etc. answers
The table stores answer information, such as answer ID, question ID, answer content, answerer ID, answer time, etc. accepted_answers
The table is used to store accepted answer information, which includes question ID and accepted answer ID. The following is an example of the database structure:
CREATE TABLE questions ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255), content TEXT, owner_id INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE answers ( id INT PRIMARY KEY AUTO_INCREMENT, question_id INT, content TEXT, owner_id INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE accepted_answers ( question_id INT PRIMARY KEY, answer_id INT );
On the question details page, we need to display the title of the question , content and related answers. For the current question, we also need to show the accepted answer (if any).
First, we need to get the problem information and display it on the page. We can use the following code example:
<?php // 获取问题 ID $questionId = $_GET['id']; // 获取问题信息 $questionQuery = "SELECT * FROM questions WHERE id = :id"; $questionStmt = $pdo->prepare($questionQuery); $questionStmt->bindParam(':id', $questionId, PDO::PARAM_INT); $questionStmt->execute(); $question = $questionStmt->fetch(PDO::FETCH_ASSOC); // 显示问题标题和内容 echo "<h1>" . $question['title'] . "</h1>"; echo "<p>" . $question['content'] . "</p>"; // 获取问题的回答信息 $answersQuery = "SELECT * FROM answers WHERE question_id = :question_id"; $answersStmt = $pdo->prepare($answersQuery); $answersStmt->bindParam(':question_id', $questionId, PDO::PARAM_INT); $answersStmt->execute(); $answers = $answersStmt->fetchAll(PDO::FETCH_ASSOC); // 显示回答列表 foreach ($answers as $answer) { echo "<div>"; echo "<p>" . $answer['content'] . "</p>"; // 检查答案是否被采纳 if ($answer['id'] === $question['accepted_answer_id']) { echo "<span>已采纳</span>"; } else { // 显示采纳按钮 echo "<a href='accept-answer.php?question=" . $questionId . "&answer=" . $answer['id'] . "'>采纳该答案</a>"; } echo "</div>"; } ?>
In the above code, we first obtain the problem information and display it on the page. Then, get the answers related to the question and display them one by one. For each answer, we check whether it was accepted. If it is accepted, the "Adopted" mark will be displayed; otherwise, a label will be displayed. Clicking the label will call accept-answer.php
to accept the answer.
In the accept-answer.php
file, we need to process the answer acceptance request and update accepted_answers
table.
Here is a code example to handle an accepted answer request:
<?php // 获取问题 ID 和答案 ID $questionId = $_GET['question']; $answerId = $_GET['answer']; // 将答案 ID 更新为被采纳 $acceptAnswerQuery = "UPDATE accepted_answers SET answer_id = :answer_id WHERE question_id = :question_id"; $acceptAnswerStmt = $pdo->prepare($acceptAnswerQuery); $acceptAnswerStmt->bindParam(':answer_id', $answerId, PDO::PARAM_INT); $acceptAnswerStmt->bindParam(':question_id', $questionId, PDO::PARAM_INT); $acceptAnswerStmt->execute(); // 返回问题详情页 header("Location: question.php?id=" . $questionId); ?>
In the above code, we first get the ID of the question and answer. Then, update the answer ID to the accepted answer by executing a SQL statement. Finally, we redirect to the issue details page and refresh the page to show the latest adoption status.
Through the above steps, we have successfully implemented the function of adopting and recommending answers to questions in the knowledge question and answer website. Users can adopt answers they approve of in the question details page and improve the quality of questions and answers through this feature. This helps users better capture and share knowledge.
The above is the detailed content of Use PHP to develop question answer acceptance and recommendation functions in a knowledge question and answer website.. For more information, please follow other related articles on the PHP Chinese website!