지식Q&A사이트에서 PHP를 사용하여 질문답변 수용 및 추천 기능 개발
지식Q&A사이트에서는 사용자가 질문하고 다른 사용자가 답변을 제공합니다. 복수의 답변 중 하나 이상이 질문자나 다른 사용자에게 베스트 답변으로 인식되는 경우가 종종 있습니다. 따라서 질문에 대한 답변을 더 잘 표시하고 관리하기 위해 이 기사에서는 PHP를 사용하여 질문 답변의 채택 및 추천 기능을 개발하는 방법을 소개합니다.
먼저 질문과 답변에 대한 정보를 저장할 데이터베이스를 디자인해야 합니다. 여기서는 세 개의 테이블을 만듭니다.
questions
테이블은 질문 ID, 제목, 내용, 질문자 ID, 질문 시간 등과 같은 질문 정보를 저장합니다. questions
表存储问题信息,例如问题 ID、标题、内容、提问者 ID、提问时间等。answers
表存储答案信息,例如答案 ID、问题 ID、回答内容、回答者 ID、回答时间等。accepted_answers
表用于存储被采纳的答案信息,其中包含问题 ID、被采纳答案 ID。以下是数据库结构的示例:
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 );
在问题详情页面上,我们需要显示问题的标题、内容以及相关答案。对于当前问题,我们还需要显示被采纳的答案(如果有的话)。
首先,我们要获取问题的信息并显示在页面上。我们可以使用以下代码示例:
<?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>"; } ?>
以上代码中,我们首先获取问题的信息并展示在页面上。然后,获取问题相关的答案并逐个显示。对于每个答案,我们检查其是否被采纳。如被采纳,则显示“已采纳”标志;反之,则显示一个标签,点击该标签将调用 accept-answer.php
进行答案的采纳。
在 accept-answer.php
文件中,我们需要处理答案的采纳请求,并更新 accepted_answers
답변
테이블은 답변 ID, 질문 ID, 답변 내용, 답변자 ID, 답변 시간 등과 같은 답변 정보를 저장합니다. accepted_answers
테이블은 질문 ID와 수락된 답변 ID를 포함하는 수락된 답변 정보를 저장하는 데 사용됩니다. 다음은 데이터베이스 구조의 예입니다. <?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); ?>
accept-answer.php
가 호출됩니다. 🎜accept-answer.php
파일에서 답변 수락 요청을 처리하고 accepted_answers
를 업데이트해야 합니다. 테이블. 🎜🎜다음은 수락된 답변 요청을 처리하는 코드 예제입니다. 🎜rrreee🎜위 코드에서는 먼저 질문과 답변의 ID를 가져옵니다. 그런 다음 SQL 문을 실행하여 응답 ID를 허용된 답변으로 업데이트합니다. 마지막으로 문제 세부 정보 페이지로 리디렉션하고 페이지를 새로 고쳐 최신 채택 상태를 표시합니다. 🎜🎜위의 과정을 거쳐 지식질문답 사이트에서 질문에 대한 답변을 채택하고 추천하는 기능을 성공적으로 구현하였습니다. 사용자는 질문 세부정보 페이지에서 자신이 승인한 답변을 채택할 수 있으며, 이 기능을 통해 질문과 답변의 품질을 향상시킬 수 있습니다. 이를 통해 사용자는 지식을 더 잘 포착하고 공유할 수 있습니다. 🎜위 내용은 PHP를 사용하여 지식 질문 및 답변 웹사이트에서 질문 답변 수락 및 추천 기능을 개발합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!