首頁 > 後端開發 > php教程 > PHP 實現知識問答網站中的問題答案投票和採納功能。

PHP 實現知識問答網站中的問題答案投票和採納功能。

WBOY
發布: 2023-07-01 21:22:02
原創
1023 人瀏覽過

PHP 實現知識問答網站中的問題答案投票和採納功能。

隨著網路的發展,知識問答網站得到了越來越多的用戶,並且成為了人們獲取知識、解決問題的重要途徑。在這些知識問答網站中,問題答案的投票和採納功能是非常重要的,它們可以幫助使用者更好地選擇最佳答案、提高問題的可信度和回答者的聲望。

本文將介紹如何使用PHP來實現問題答案的投票和採納功能,並提供對應的程式碼範例。

首先,我們需要一個資料庫來儲存問題和答案的資訊。假設我們的資料庫中有兩個表,一個是questions用來儲存問題的訊息,另一個是answers用來儲存答案的資訊。 questions表的架構如下:

CREATE TABLE questions (
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  title VARCHAR(255) NOT NULL,
  content TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
登入後複製

answers表的架構如下:

CREATE TABLE answers (
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  question_id INT(11) NOT NULL,
  content TEXT NOT NULL,
  is_accepted TINYINT(1) DEFAULT 0,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
登入後複製

接下來,我們需要實作問題答案的投票功能。使用者可以對問題下的答案進行按讚或點踩,以表達對答案的認可或不認可。我們可以在answers表中新增兩個字段,分別是upvote和downvote,用來儲存答案的按讚數和點踩數。

ALTER TABLE answers ADD COLUMN upvote INT(11) DEFAULT 0;
ALTER TABLE answers ADD COLUMN downvote INT(11) DEFAULT 0;
登入後複製

在問題答案清單中,我們可以為每個答案添加一個投票按鈕,當用戶點擊按鈕時,我們可以透過Ajax請求向伺服器發送投票的類型(按讚或點擊)和答案的ID,然後更新資料庫中對應答案的讚或點踩數。以下是一個簡單的程式碼範例:

<!-- question.php -->
<div>
  <h3>问题标题</h3>
  <p>问题内容</p>
</div>

<div>
  <h4>答案列表</h4>
  <?php
  // 从数据库中获取问题的答案列表
  $answers = get_answers($question_id);
  foreach ($answers as $answer) {
    echo '<div>';
    echo '<p>' . $answer['content'] . '</p>';
    echo '<p>点赞数:' . $answer['upvote'] . '</p>';
    echo '<p>点踩数:' . $answer['downvote'] . '</p>';
    echo '<button onclick="vote(' . $answer['id'] . ', 'upvote')">点赞</button>';
    echo '<button onclick="vote(' . $answer['id'] . ', 'downvote')">点踩</button>';
    echo '</div>';
  }
  ?>
</div>

<script>
function vote(answerId, type) {
  // 发起Ajax请求
  $.ajax({
    url: 'vote.php',
    method: 'POST',
    data: { answer_id: answerId, type: type },
    success: function(response) {
      // 更新点赞或点踩数
      if (type === 'upvote') {
        $('#' + answerId + ' .upvote').text(parseInt($('#' + answerId + ' .upvote').text()) + 1);
      } else if (type === 'downvote') {
        $('#' + answerId + ' .downvote').text(parseInt($('#' + answerId + ' .downvote').text()) + 1);
      }
    }
  });
}
</script>
登入後複製

在vote.php檔案中,我們可以根據使用者發送的投票類型和答案ID,更新資料庫中對應答案的按讚或點踩數。以下是一個簡單的程式碼範例:

<?php
// vote.php

// 获取答案ID和投票类型
$answerId = $_POST['answer_id'];
$type = $_POST['type'];

// 更新答案的点赞或点踩数
if ($type === 'upvote') {
  $sql = "UPDATE answers SET upvote = upvote + 1 WHERE id = $answerId";
} else if ($type === 'downvote') {
  $sql = "UPDATE answers SET downvote = downvote + 1 WHERE id = $answerId";
}

// 执行更新操作
// ...

// 返回响应
// ...
?>
登入後複製

以上就是問題答案的投票功能的程式碼範例。接下來,我們將介紹如何實現問題答案的採納功能。

問題答案的採納功能是指提問者可以選擇一個最佳答案作為問題的解決方案,並將其標記為已採納。我們可以在answers表中新增一個欄位is_accepted來表示該答案是否被採納。

ALTER TABLE answers ADD COLUMN is_accepted TINYINT(1) DEFAULT 0;
登入後複製

在問題答案清單中,我們可以為每個答案添加一個採納按鈕,當提問者點擊按鈕時,我們可以透過Ajax請求向伺服器發送答案的ID,然後更新資料庫中對應答案的is_accepted字段。以下是一個簡單的程式碼範例:

<!-- question.php -->
<div>
  <h3>问题标题</h3>
  <p>问题内容</p>
</div>

<div>
  <h4>答案列表</h4>
  <?php
  // 从数据库中获取问题的答案列表
  $answers = get_answers($question_id);
  foreach ($answers as $answer) {
    echo '<div>';
    echo '<p>' . $answer['content'] . '</p>';
    echo '<p>点赞数:' . $answer['upvote'] . '</p>';
    echo '<p>点踩数:' . $answer['downvote'] . '</p>';
    echo '<button onclick="vote(' . $answer['id'] . ', 'upvote')">点赞</button>';
    echo '<button onclick="vote(' . $answer['id'] . ', 'downvote')">点踩</button>';
    if ($question['user_id'] === $_SESSION['user_id']) { // 如果是提问者
      echo '<button onclick="accept(' . $answer['id'] . ')">采纳</button>';
    }
    echo '</div>';
  }
  ?>
</div>

<script>
function accept(answerId) {
  // 发起Ajax请求
  $.ajax({
    url: 'accept.php',
    method: 'POST',
    data: { answer_id: answerId },
    success: function(response) {
      // 更新答案的采纳状态
      $('#' + answerId).addClass('accepted');
    }
  });
}
</script>
登入後複製

在accept.php檔案中,我們可以根據使用者傳送的答案ID,更新資料庫中對應答案的is_accepted欄位。以下是一個簡單的程式碼範例:

<?php
// accept.php

// 获取答案ID
$answerId = $_POST['answer_id'];

// 更新答案的采纳状态
$sql = "UPDATE answers SET is_accepted = 1 WHERE id = $answerId";

// 执行更新操作
// ...

// 返回响应
// ...
?>
登入後複製

以上就是問題答案的採納功能的程式碼範例。透過這些程式碼範例,我們可以在知識問答網站中實現問題答案的投票和採納功能,提升使用者體驗和資訊品質。當然,以上只是一個簡單的範例,實際應用中還需要考慮更多的細節和安全性。希望本文對你有幫助!

以上是PHP 實現知識問答網站中的問題答案投票和採納功能。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板