Home  >  Article  >  Backend Development  >  PHP implements the voting and adoption functions of question answers in the knowledge question and answer website.

PHP implements the voting and adoption functions of question answers in the knowledge question and answer website.

WBOY
WBOYOriginal
2023-07-01 21:19:461003browse

PHP implements the voting and adoption functions of question answers in the knowledge question and answer website.

With the development of the Internet, knowledge question and answer websites have gained more and more users, and have become an important way for people to obtain knowledge and solve problems. In these question and answer websites, the voting and adoption functions of question answers are very important. They can help users better choose the best answers, improve the credibility of the questions and the reputation of the answerers.

This article will introduce how to use PHP to implement the voting and adoption functions of question answers, and provide corresponding code examples.

First, we need a database to store question and answer information. Suppose there are two tables in our database, one is questions used to store question information, and the other is answers used to store answer information. The structure of the questions table is as follows:

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
);

The structure of the answers table is as follows:

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
);

Next, we need to implement the voting function for question answers. Users can like or dislike the answers under the questions to express their approval or disapproval of the answers. We can add two new fields to the answers table, upvote and downvote, to store the number of likes and dislikes for the answer.

ALTER TABLE answers ADD COLUMN upvote INT(11) DEFAULT 0;
ALTER TABLE answers ADD COLUMN downvote INT(11) DEFAULT 0;

In the question answer list, we can add a voting button for each answer. When the user clicks the button, we can send the type of vote (like or dislike) and answer to the server through an Ajax request. ID, and then update the number of likes or dislikes of the corresponding answer in the database. The following is a simple code example:

<!-- 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>

In the vote.php file, we can update the number of likes or dislikes for the corresponding answer in the database based on the vote type and answer ID sent by the user. The following is a simple code example:

<?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";
}

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

// 返回响应
// ...
?>

The above is the code example of the voting function for question answers. Next, we will introduce how to implement the acceptance function of question answers.

The question answer adoption function means that the questioner can choose a best answer as the solution to the question and mark it as adopted. We can add a new field is_accepted in the answers table to indicate whether the answer is accepted.

ALTER TABLE answers ADD COLUMN is_accepted TINYINT(1) DEFAULT 0;

In the question answer list, we can add an adopt button for each answer. When the questioner clicks the button, we can send the answer ID to the server through an Ajax request, and then update the corresponding answer in the database. is_accepted field. The following is a simple code example:

<!-- 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>

In the accept.php file, we can update the is_accepted field of the corresponding answer in the database based on the answer ID sent by the user. The following is a simple code example:

<?php
// accept.php

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

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

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

// 返回响应
// ...
?>

The above is the code example of the acceptance function of the answer to the question. Through these code examples, we can implement the voting and adoption functions of question answers in the knowledge question and answer website, improving user experience and information quality. Of course, the above is just a simple example, and more details and security need to be considered in actual applications. Hope this article is helpful to you!

The above is the detailed content of PHP implements the voting and adoption functions of question answers in the knowledge question and answer website.. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn