PHP を使用してナレッジ Q&A Web サイトでの質問回答の受付および推奨機能を開発する
ナレッジ Q&A Web サイトでは、ユーザーが質問し、他のユーザーが回答を提供します。複数の回答のうち 1 つ以上が質問者または他のユーザーによって最良の回答として認識されることがよくあります。そこで今回は、質問に対する回答をより適切に表示・管理するために、PHPを使って質問に対する回答の採用・レコメンド機能を開発する方法を紹介します。
まず、質問と回答に関する情報を保存するデータベースを設計する必要があります。ここでは 3 つのテーブルを作成します。
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>"; } ?>
上記のコードでは、最初に問題情報を取得し、それをページに表示します。次に、質問に関連する回答を取得し、1 つずつ表示します。回答ごとに、それが受け入れられたかどうかを確認します。受け入れられた場合は「採用」マークが表示され、受け入れられなかった場合はラベルが表示され、ラベルをクリックすると accept-answer.php
が呼び出され、回答が受け入れられます。
accept-answer.php
ファイルで、回答受け入れリクエストを処理し、 を更新する必要があります。 accept_answers
テーブル。
これは、受け入れられた回答リクエストを処理するコード例です:
<?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); ?>
上記のコードでは、最初に質問と回答の ID を取得します。次に、SQL ステートメントを実行して、回答 ID を受け入れられた回答に更新します。最後に、問題の詳細ページにリダイレクトし、ページを更新して最新の導入ステータスを表示します。
以上の手順により、知識Q&Aサイトの質問に対する回答を採用・推奨する機能を実装することができました。この機能により、ユーザーは質問の詳細ページで承認した回答を採用し、質問と回答の品質を向上させることができます。これにより、ユーザーは知識をより適切に取得し、共有することができます。
以上がPHP を使用して、知識に関する質問と回答の Web サイトで質問の回答の受け入れおよび推奨機能を開発します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。