Utilisez PHP pour développer des fonctions d'acceptation et de recommandation de questions-réponses dans un site Web de questions et réponses de connaissances.

PHPz
Libérer: 2023-07-02 10:56:01
original
1055 Les gens l'ont consulté

Utilisez PHP pour développer des fonctions d'acceptation et de recommandation de questions-réponses dans les sites Web de questions-réponses de connaissances

Dans les sites Web de questions-réponses de connaissances, les utilisateurs posent des questions et d'autres utilisateurs fournissent des réponses. Il arrive souvent qu'une ou plusieurs des réponses multiples soient reconnues comme la meilleure réponse par la personne qui pose la question ou par d'autres utilisateurs. Par conséquent, afin de mieux afficher et gérer les réponses aux questions, nous présenterons dans cet article comment développer les fonctions d'adoption et de recommandation des réponses aux questions à l'aide de PHP.

  1. Conception de base de données

Tout d'abord, nous devons concevoir une base de données pour stocker des informations sur les questions et réponses. Ici, nous créons trois tableaux.

  • La table questions stocke les informations sur les questions, telles que l'ID de la question, le titre, le contenu, l'ID de l'interrogateur, l'heure des questions, etc. 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
);
Copier après la connexion
  1. 问题页面开发

在问题详情页面上,我们需要显示问题的标题、内容以及相关答案。对于当前问题,我们还需要显示被采纳的答案(如果有的话)。

首先,我们要获取问题的信息并显示在页面上。我们可以使用以下代码示例:

<?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>";
}
?>
Copier après la connexion

以上代码中,我们首先获取问题的信息并展示在页面上。然后,获取问题相关的答案并逐个显示。对于每个答案,我们检查其是否被采纳。如被采纳,则显示“已采纳”标志;反之,则显示一个标签,点击该标签将调用 accept-answer.php 进行答案的采纳。

  1. 采纳答案的处理

accept-answer.php 文件中,我们需要处理答案的采纳请求,并更新 accepted_answers

La table answers stocke les informations de réponse, telles que l'ID de réponse, l'ID de question, le contenu de la réponse, l'ID du répondeur, le temps de réponse, etc.

La table accepted_answers est utilisée pour stocker les informations sur les réponses acceptées, qui incluent l'ID de la question et l'ID de la réponse acceptée.

Ce qui suit est un exemple de structure de base de données :

<?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);
?>
Copier après la connexion
    Développement de la page de questions🎜🎜🎜Sur la page de détails de la question, nous devons afficher le titre, le contenu et les réponses associées de la question. Pour la question actuelle, nous devons également afficher la réponse acceptée (le cas échéant). 🎜🎜Tout d'abord, nous devons obtenir les informations sur le problème et les afficher sur la page. Nous pouvons utiliser l'exemple de code suivant : 🎜rrreee🎜Dans le code ci-dessus, nous obtenons d'abord les informations sur le problème et les affichons sur la page. Ensuite, obtenez les réponses liées à la question et affichez-les une par une. Pour chaque réponse, nous vérifions si elle a été acceptée. S'il est accepté, la marque "Accepté" sera affichée ; sinon, une étiquette sera affichée. En cliquant sur l'étiquette, vous appellerez accept-answer.php pour accepter la réponse. 🎜
      🎜Traitement des réponses acceptées🎜🎜🎜Dans le fichier accept-answer.php, nous devons traiter la demande d'acceptation de réponse et mettre à jour accepted_answers Tableau. 🎜🎜Voici un exemple de code qui gère une demande de réponse acceptée : 🎜rrreee🎜Dans le code ci-dessus, nous obtenons d'abord les identifiants de la question et de la réponse. Ensuite, mettez à jour l’ID de réponse avec la réponse acceptée en exécutant une instruction SQL. Enfin, nous redirigeons vers la page de détails du problème et actualisons la page pour afficher le dernier statut d'adoption. 🎜🎜Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès la fonction d'adoption et de recommandation de réponses aux questions du site Web de questions et réponses sur les connaissances. Les utilisateurs peuvent adopter les réponses qu'ils approuvent dans la page de détails des questions et améliorer la qualité des questions et réponses grâce à cette fonctionnalité. Cela aide les utilisateurs à mieux capturer et partager les connaissances. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal