使用 PHP 開發知識問答網站中的問題答案採納和推薦功能
在知識問答類網站中,使用者提出問題,其他使用者提供答案。常常會出現多個回答中有一個或多個被提問者或其他使用者認可為最佳答案的情況。因此,為了更好地展示和管理問題的答案,我們將在本文中介紹如何使用 PHP 開發問題答案的採納和推薦功能。
首先,我們需要設計資料庫來儲存問題和答案的相關資訊。在這裡,我們建立三個表格。
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
表。
以下是處理採納答案請求的程式碼範例:
<?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 更新為被採納的答案。最後,我們重定向到問題詳情頁,刷新頁面以顯示最新的採納狀態。
透過以上的步驟,我們成功實現了知識問答網站中問題答案的採納和推薦功能。使用者可以在問題詳情頁中採納自己認可的答案,並透過此功能提升問題和答案的品質。這有助於用戶更好地獲取和分享知識。
以上是使用 PHP 開發知識問答網站中的問題答案採納和推薦功能。的詳細內容。更多資訊請關注PHP中文網其他相關文章!