Maison >développement back-end >tutoriel php >PHP implémente les fonctions de discussion et d'évaluation des questions dans le site Web de questions et réponses de connaissances.

PHP implémente les fonctions de discussion et d'évaluation des questions dans le site Web de questions et réponses de connaissances.

PHPz
PHPzoriginal
2023-07-01 20:00:12924parcourir

PHP implémente les fonctions de discussion et d'évaluation des questions dans le site Web de questions et réponses sur les connaissances

Avec l'avènement de l'ère de l'information, le site Web de questions et réponses sur les connaissances a reçu de plus en plus d'attention et de faveur de la part des gens. Ces sites Web fournissent non seulement aux utilisateurs une plate-forme de communication mutuelle et de partage de connaissances, mais permettent également aux utilisateurs de mieux obtenir des informations utiles grâce à des fonctions de discussion et d'évaluation. Cet article explique comment utiliser PHP pour implémenter des fonctions de discussion et d'évaluation de questions dans un site Web de questions et réponses de connaissances.

  1. Conception de base de données

Tout d'abord, nous devons concevoir une base de données pour stocker des données telles que des questions, des réponses et des commentaires des utilisateurs. Voici un exemple simple de conception de base de données :

CREATE TABLE `questions` (
  `id` INT(11) UNSIGNED AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `content` TEXT NOT NULL,
  `user_id` INT(11) UNSIGNED NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME,
  PRIMARY KEY (`id`)
);

CREATE TABLE `answers` (
  `id` INT(11) UNSIGNED AUTO_INCREMENT,
  `question_id` INT(11) UNSIGNED NOT NULL,
  `content` TEXT NOT NULL,
  `user_id` INT(11) UNSIGNED NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME,
  PRIMARY KEY (`id`)
);

CREATE TABLE `ratings` (
  `id` INT(11) UNSIGNED AUTO_INCREMENT,
  `answer_id` INT(11) UNSIGNED NOT NULL,
  `user_id` INT(11) UNSIGNED NOT NULL,
  `rating` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
);

Parmi eux, la table

  • questions est utilisée pour stocker les informations sur les questions (y compris le titre, le contenu, l'identifiant de l'interrogateur, l'heure de création et l'heure de mise à jour, etc. .); questions 表用来存储问题的信息(包括标题、内容、提问者ID、创建时间和更新时间等);
  • answers 表用来存储回答的信息(包括问题ID、内容、回答者ID、创建时间和更新时间等);
  • ratings 表用来存储回答的评价信息(包括回答ID、评价者ID和评价分数等)。
  1. 显示问题和回答

接下来,我们需要使用PHP编写代码来显示问题和回答。首先,我们可以创建一个index.php文件,用来显示所有问题列表。代码如下:

<?php
// index.php

// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
if ($conn->connect_errno) {
    die('连接数据库失败');
}

// 获取问题列表
$result = $conn->query("SELECT * FROM questions");
if (!$result) {
    die('查询数据失败');
}

// 显示问题列表
while ($row = $result->fetch_assoc()) {
    echo '<a href="question.php?id=' . $row['id'] . '">' . $row['title'] . '</a>';
    echo '<br>';
}

// 关闭数据库连接
$conn->close();
?>

上述代码首先连接到数据库,并通过查询获取所有问题的数据。接下来,通过循环输出问题列表,并为每个问题创建一个带有问题ID的链接,点击链接后用户将跳转到question.php页面,用来显示问题和回答的详细内容。

然后,我们可以创建一个question.php文件,用来显示问题和回答的详细内容。代码如下:

<?php
// question.php

// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
if ($conn->connect_errno) {
    die('连接数据库失败');
}

// 获取问题ID
$question_id = $_GET['id'];

// 获取问题信息
$result = $conn->query("SELECT * FROM questions WHERE id = $question_id");
if (!$result) {
    die('查询数据失败');
}
$question = $result->fetch_assoc();

// 获取回答列表
$result = $conn->query("SELECT * FROM answers WHERE question_id = $question_id");
if (!$result) {
    die('查询数据失败');
}

// 显示问题和回答内容
echo '<h1>' . $question['title'] . '</h1>';
echo '<p>' . $question['content'] . '</p>';

while ($row = $result->fetch_assoc()) {
    echo '<h2>回答:</h2>';
    echo '<p>' . $row['content'] . '</p>';
}

// 关闭数据库连接
$conn->close();
?>

上述代码首先连接到数据库,并根据问题ID获取问题和回答的数据。然后,通过输出HTML来显示问题和回答的内容。其中,问题的标题和内容使用4a249f0d628e2318394fd9b75b4636b1e388a4556c0f65e1904146cc1a846bee标签,回答的内容使用c1a436a314ed609750bd7c7d319db4dae388a4556c0f65e1904146cc1a846bee标签。

  1. 添加回答和评价功能

接下来,我们需要添加回答和评价功能。首先,在question.php页面的回答下方添加一个表单,用来让用户输入回答的内容。代码如下:

<h2>我要回答:</h2>
<form action="answer.php" method="POST">
    <textarea name="content" rows="5" cols="50"></textarea><br>
    <input type="hidden" name="question_id" value="<?php echo $question_id; ?>">
    <input type="submit" value="提交回答">
</form>

上述代码创建了一个POST方法的表单,通过textarea标签让用户输入回答的内容。同时,通过隐藏域传递问题ID,以便在后续的处理中能够知道回答对应的问题。

然后,我们创建一个answer.php文件,用来处理用户提交的回答。代码如下:

<?php
// answer.php

// 获取回答数据
$question_id = $_POST['question_id'];
$content = $_POST['content'];

// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
if ($conn->connect_errno) {
    die('连接数据库失败');
}

// 插入回答数据
$stmt = $conn->prepare("INSERT INTO answers (question_id, content) VALUES (?, ?)");
$stmt->bind_param("is", $question_id, $content);
$result = $stmt->execute();
if (!$result) {
    die('插入数据失败');
}

// 关闭数据库连接
$conn->close();

// 回到问题页面
header("Location: question.php?id=$question_id");
?>

上述代码首先获取用户提交的回答数据,并连接到数据库。然后,通过prepare()方法和bind_param()方法来绑定数据并插入到数据库中。最后,通过header()函数将用户重定向回到问题页面。

同样地,我们可以创建一个rate.php文件,用来处理用户对回答的评价。代码如下:

<?php
// rate.php

// 获取评价数据
$answer_id = $_GET['answer_id'];
$rating = $_GET['rating'];

// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
if ($conn->connect_errno) {
    die('连接数据库失败');
}

// 更新评价数据
$stmt = $conn->prepare("INSERT INTO ratings (answer_id, rating) VALUES (?, ?)");
$stmt->bind_param("ii", $answer_id, $rating);
$result = $stmt->execute();
if (!$result) {
    die('更新数据失败');
}

// 关闭数据库连接
$conn->close();

// 回到问题页面
$question_id = $_GET['question_id'];
header("Location: question.php?id=$question_id");
?>

上述代码首先获取用户提交的评价数据,并连接到数据库。然后,通过prepare()方法和bind_param()方法来绑定数据并更新到数据库中。最后,通过header()

Le tableau réponses est utilisé pour stocker les informations sur les réponses (y compris l'identifiant de la question, le contenu, l'identifiant du répondant, l'heure de création et l'heure de mise à jour, etc.) ; Le tableau est utilisé pour stocker les informations d'évaluation de la réponse (y compris l'ID de réponse, l'ID de l'évaluateur, le score d'évaluation, etc.).

    Afficher les questions et réponses

    Ensuite, nous devons écrire du code en utilisant PHP pour afficher les questions et réponses. Tout d'abord, nous pouvons créer un fichier index.php pour afficher une liste de toutes les questions. Le code est le suivant :
    rrreee
  • Le code ci-dessus se connecte d'abord à la base de données et obtient les données de toutes les questions via une requête. Ensuite, affichez la liste des questions en boucle et créez un lien avec l'ID de question pour chaque question. Après avoir cliqué sur le lien, l'utilisateur accédera à la page question.php pour afficher les questions et réponses. Détails.
  • Ensuite, nous pouvons créer un fichier question.php pour afficher les détails de la question et de la réponse. Le code est le suivant :
  • rrreee
Le code ci-dessus se connecte d'abord à la base de données et obtient les données des questions et réponses en fonction de l'ID de la question. Ensuite, affichez le contenu de la question et de la réponse en produisant du HTML. Parmi eux, le titre et le contenu de la question utilisent les balises 4a249f0d628e2318394fd9b75b4636b1 et e388a4556c0f65e1904146cc1a846bee, et le contenu de la réponse utilise les balises c1a436a314ed609750bd7c7d319db4da et e388a4556c0f65e1904146cc1a846bee.

    Ajouter des fonctions de réponse et d'évaluation🎜🎜🎜Ensuite, nous devons ajouter des fonctions de réponse et d'évaluation. Tout d'abord, ajoutez un formulaire sous la réponse sur la page question.php pour permettre aux utilisateurs de saisir le contenu de la réponse. Le code est le suivant : 🎜rrreee🎜Le code ci-dessus crée un formulaire avec la méthode POST, permettant à l'utilisateur de saisir le contenu de la réponse via la balise textarea. Dans le même temps, l'ID de la question est transmis via le champ masqué afin que la question correspondante puisse recevoir une réponse lors d'un traitement ultérieur. 🎜🎜Ensuite, nous créons un fichier answer.php pour traiter les réponses soumises par les utilisateurs. Le code est le suivant : 🎜rrreee🎜Le code ci-dessus obtient d'abord les données de réponse soumises par l'utilisateur et se connecte à la base de données. Ensuite, liez les données et insérez-les dans la base de données via la méthode prepare() et la méthode bind_param(). Enfin, l'utilisateur est redirigé vers la page de questions via la fonction header(). 🎜🎜De même, nous pouvons créer un fichier rate.php pour traiter les évaluations des réponses par les utilisateurs. Le code est le suivant : 🎜rrreee🎜Le code ci-dessus obtient d'abord les données d'évaluation soumises par l'utilisateur et se connecte à la base de données. Ensuite, liez les données et mettez-les à jour dans la base de données via la méthode prepare() et la méthode bind_param(). Enfin, l'utilisateur est redirigé vers la page de questions via la fonction header(). 🎜🎜Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès les fonctions de discussion et d'évaluation des questions dans le site Web de questions et réponses sur les connaissances. Les utilisateurs peuvent non seulement poser des questions et y répondre, mais également évaluer les réponses. De telles fonctions peuvent non seulement améliorer l'exactitude et la crédibilité des informations, mais également permettre aux utilisateurs de mieux obtenir des connaissances et des informations utiles. 🎜🎜Il convient de noter que les codes dans les exemples ci-dessus ne sont que des exemples simples. Dans les applications réelles, la vérification des données, l'authentification des utilisateurs et le contrôle des autorisations sont également requis pour garantir la sécurité et la fiabilité du système. 🎜🎜Matériaux de référence : 🎜🎜🎜Documentation officielle PHP : https://www.php.net/docs.php 🎜🎜Site officiel MySQL : https://www.mysql.com/🎜🎜🎜J'espère que cet article pourra être utile à vous Merci pour votre aide, je vous souhaite du succès dans le processus de mise en place d'un site de questions et réponses de 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!

Déclaration:
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