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`) );
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.). 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(); ?>
question.php
page to display the details of the question and answer. content. <p>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(); ?>
<h1>
and <p>
tags, and the content of the answer uses <h2>
and < ;p>
tag. 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>
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. <p>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"); ?>
prepare()
method and the bind_param()
method. Finally, the user is redirected back to the question page through the header()
function. <p>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"); ?>
prepare()
method and the bind_param()
method. Finally, the user is redirected back to the question page through the header()
function.
<p>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.
<p>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.
<p>Reference materials:
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!