Home  >  Article  >  Backend Development  >  PHP implements the question discussion and evaluation functions in the knowledge question and answer website.

PHP implements the question discussion and evaluation functions in the knowledge question and answer website.

PHPz
PHPzOriginal
2023-07-01 20:00:12863browse

PHP realizes the question discussion and evaluation functions in the knowledge question and answer website

With the advent of the information age, the knowledge question and answer website has attracted more and more people's attention and favor. These websites not only provide users with a platform for mutual communication and knowledge sharing, but also allow users to better obtain useful information through discussion and evaluation functions. This article will introduce how to use PHP to implement question discussion and evaluation functions in a knowledge Q&A website.

  1. Database design

First of all, we need to design a database to store data such as questions, answers and evaluations raised by users. The following is a simple database design example:

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

Among them, the

  • questions table is used to store question information (including title, content, questioner ID , creation time and update time, etc.);
  • answers table is used to store answer information (including question ID, content, respondent ID, creation time, update time, etc.);
  • ratings The table is used to store the evaluation information of the answer (including answer ID, evaluator ID, evaluation score, etc.).
  1. Display questions and answers

Next, we need to write code using PHP to display questions and answers. First, we can create an index.php file to display a list of all questions. The code is as follows:

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

The above code first connects to the database and obtains data for all questions through queries. Next, output the question list through a loop and create a link with the question ID for each question. After clicking the link, the user will jump to the question.php page to display the details of the question and answer. content.

Then, we can create a question.php file to display the details of the question and answer. The code is as follows:

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

The above code first connects to the database and obtains question and answer data based on the question ID. Then, display the content of the question and answer by outputting HTML. Among them, the title and content of the question use 4a249f0d628e2318394fd9b75b4636b1 and e388a4556c0f65e1904146cc1a846bee tags, and the content of the answer uses c1a436a314ed609750bd7c7d319db4da and &lt ;p> tag.

  1. Add answer and evaluation functions

Next, we need to add answer and evaluation functions. First, add a form below the answer on the question.php page to allow users to enter the answer content. The code is as follows:

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

The above code creates a form with the POST method, allowing the user to enter the answer content through the textarea tag. At the same time, the question ID is passed through the hidden field so that the corresponding question can be answered in subsequent processing.

Then, we create a answer.php file to process the answers submitted by users. The code is as follows:

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

The above code first obtains the answer data submitted by the user and connects to the database. Then, bind the data and insert it into the database through the prepare() method and the bind_param() method. Finally, the user is redirected back to the question page through the header() function.

Similarly, we can create a rate.php file to process user evaluations of answers. The code is as follows:

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

The above code first obtains the evaluation data submitted by the user and connects to the database. Then, bind the data and update it to the database through the prepare() method and the bind_param() method. Finally, the user is redirected back to the question page through the header() function.

Through the above steps, we successfully implemented the question discussion and evaluation functions in the knowledge Q&A website. Users can not only ask and answer questions, but also rate the answers. Such functions can not only improve the accuracy and credibility of information, but also allow users to better obtain useful knowledge and information.

It should be noted that the codes in the above examples are only simple examples. In actual applications, data verification, user authentication, and permission control are also required to ensure the security and reliability of the system.

Reference materials:

  • PHP official documentation: https://www.php.net/docs.php
  • MySQL official website: https://www .mysql.com/

I hope this article can be helpful to you, and I wish you success in the process of implementing a knowledge question and answer website!

The above is the detailed content of PHP implements the question discussion and evaluation functions 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