Heim > Backend-Entwicklung > PHP-Tutorial > PHP implementiert die Abstimmungs- und Annahmefunktionen von Frage-Antworten auf der Wissens-Frage-und-Antwort-Website.

PHP implementiert die Abstimmungs- und Annahmefunktionen von Frage-Antworten auf der Wissens-Frage-und-Antwort-Website.

WBOY
Freigeben: 2023-07-01 21:22:02
Original
1024 Leute haben es durchsucht

PHP implementiert die Abstimmungs- und Annahmefunktionen von Frage-Antworten auf der Wissens-Frage-und-Antwort-Website.

Mit der Entwicklung des Internets haben Wissens-Frage- und Antwort-Websites immer mehr Nutzer gewonnen und sind zu einer wichtigen Möglichkeit für Menschen geworden, sich Wissen anzueignen und Probleme zu lösen. Bei diesen Frage-und-Antwort-Websites sind die Abstimmungs- und Annahmefunktionen von Frageantworten sehr wichtig. Sie können Benutzern dabei helfen, die besten Antworten besser auszuwählen, die Glaubwürdigkeit der Fragen und den Ruf der Antwortenden zu verbessern.

In diesem Artikel wird erläutert, wie Sie mit PHP die Abstimmungs- und Annahmefunktionen von Frageantworten implementieren und entsprechende Codebeispiele bereitstellen.

Zunächst benötigen wir eine Datenbank zum Speichern von Frage- und Antwortinformationen. Angenommen, unsere Datenbank enthält zwei Tabellen, eine mit Fragen zum Speichern von Frageninformationen und eine mit Antworten zum Speichern von Antwortinformationen. Die Struktur der Fragentabelle ist wie folgt:

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
);
Nach dem Login kopieren

Die Struktur der Antworttabelle ist wie folgt:

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
);
Nach dem Login kopieren

Als nächstes müssen wir die Abstimmungsfunktion für Fragenantworten implementieren. Benutzer können die Antworten unter den Fragen mit „Gefällt mir“ oder „Gefällt mir nicht“ markieren, um ihre Zustimmung oder Ablehnung der Antworten auszudrücken. Wir können der Antworttabelle zwei neue Felder hinzufügen, „Upvote“ und „Downvote“, um die Anzahl der „Gefällt mir“- und „Abneigungs“-Felder für die Antwort zu speichern.

ALTER TABLE answers ADD COLUMN upvote INT(11) DEFAULT 0;
ALTER TABLE answers ADD COLUMN downvote INT(11) DEFAULT 0;
Nach dem Login kopieren

In der Frage-Antwort-Liste können wir für jede Antwort eine Abstimmungsschaltfläche hinzufügen. Wenn der Benutzer auf die Schaltfläche klickt, können wir die Art der Abstimmung (Gefällt mir oder Daumen nach unten) und die ID der Antwort über eine senden Ajax-Anfrage und aktualisieren Sie dann die Anzahl der Likes oder Dislikes für die entsprechende Antwort in der Datenbank. Das Folgende ist ein einfaches Codebeispiel:

<!-- 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>
Nach dem Login kopieren

In der Datei vote.php können wir die Anzahl der Likes oder Dislikes für die entsprechende Antwort in der Datenbank basierend auf dem vom Benutzer gesendeten Abstimmungstyp und der Antwort-ID aktualisieren. Hier ist ein einfaches Codebeispiel:

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

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

// 返回响应
// ...
?>
Nach dem Login kopieren

Das Obige ist das Codebeispiel der Abstimmungsfunktion für Fragenantworten. Als Nächstes stellen wir vor, wie die Akzeptanzfunktion von Frageantworten implementiert wird.

Die Übernahmefunktion von Fragenantworten bedeutet, dass der Fragesteller die beste Antwort als Lösung für die Frage auswählen und diese als angenommen markieren kann. Wir können der Antworttabelle ein neues Feld is_accepted hinzufügen, um anzugeben, ob die Antwort akzeptiert wird.

ALTER TABLE answers ADD COLUMN is_accepted TINYINT(1) DEFAULT 0;
Nach dem Login kopieren

In der Frage-Antwort-Liste können wir für jede Antwort eine Schaltfläche „Akzeptieren“ hinzufügen. Wenn der Fragesteller auf die Schaltfläche klickt, können wir die Antwort-ID über eine Ajax-Anfrage an den Server senden und dann das Feld „is_accepted“ der entsprechenden Antwort aktualisieren in der Datenbank. Das Folgende ist ein einfaches Codebeispiel:

<!-- 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>
Nach dem Login kopieren

In der Datei „accept.php“ können wir das Feld „is_accepted“ der entsprechenden Antwort in der Datenbank basierend auf der vom Benutzer gesendeten Antwort-ID aktualisieren. Das Folgende ist ein einfaches Codebeispiel:

<?php
// accept.php

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

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

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

// 返回响应
// ...
?>
Nach dem Login kopieren

Das Obige ist das Codebeispiel der Frage-Antwort-Akzeptanzfunktion. Durch diese Codebeispiele können wir die Abstimmungs- und Annahmefunktionen von Frage-Antworten in der Wissens-Frage-und-Antwort-Website implementieren und so die Benutzererfahrung und Informationsqualität verbessern. Natürlich ist das Obige nur ein einfaches Beispiel, und in tatsächlichen Anwendungen müssen weitere Details und Sicherheit berücksichtigt werden. Ich hoffe, dieser Artikel ist hilfreich für Sie!

Das obige ist der detaillierte Inhalt vonPHP implementiert die Abstimmungs- und Annahmefunktionen von Frage-Antworten auf der Wissens-Frage-und-Antwort-Website.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage