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
테이블은 질문 정보(제목, 내용, 질문자 ID, 생성 시간 및 업데이트 시간 등 포함)를 저장하는 데 사용됩니다. .); questions
表用来存储问题的信息(包括标题、内容、提问者ID、创建时间和更新时间等);answers
表用来存储回答的信息(包括问题ID、内容、回答者ID、创建时间和更新时间等);ratings
表用来存储回答的评价信息(包括回答ID、评价者ID和评价分数等)。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(); ?>
question.php
页面,用来显示问题和回答的详细内容。<p>然后,我们可以创建一个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(); ?>
<h1>
和<p>
标签,回答的内容使用<h2>
和<p>
标签。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,以便在后续的处理中能够知道回答对应的问题。<p>然后,我们创建一个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()
函数将用户重定向回到问题页面。<p>同样地,我们可以创建一个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()
답변
테이블은 답변 정보(질문 ID, 콘텐츠, 응답자 ID, 생성 시간 및 업데이트 시간 등 포함)를 저장하는 데 사용됩니다. <p>
등급
테이블은 답변에 대한 평가 정보(답안 ID, 평가자 ID, 평가 점수 등 포함)를 저장하는 데 사용됩니다. <p>
index.php
파일을 생성하여 모든 질문 목록을 표시할 수 있습니다. 코드는 다음과 같습니다. question.php
페이지로 이동하여 질문과 답변을 표시합니다. 세부. question.php
파일을 만들어 질문과 답변의 세부 정보를 표시할 수 있습니다. 코드는 다음과 같습니다. <p>rrreee위 코드는 먼저 데이터베이스에 연결하여 질문 ID를 기준으로 질문과 답변의 데이터를 가져옵니다. 그런 다음 HTML을 출력하여 질문과 답변의 내용을 표시합니다. 그 중 질문의 제목과 내용은 <h1>
, <p>
태그를 사용하고, 답변의 내용은 <h2> 태그를 사용합니다.
및 <p> 태그입니다. 🎜question.php
페이지의 답변 아래에 사용자가 답변 내용을 입력할 수 있는 양식을 추가하세요. 코드는 다음과 같습니다. 🎜rrreee🎜위 코드는 POST
메서드를 사용하여 양식을 생성하고, 사용자가 textarea
태그를 통해 답변 내용을 입력할 수 있도록 합니다. 동시에, 후속 처리에서 해당 질문에 답변할 수 있도록 질문 ID가 숨겨진 필드를 통해 전달됩니다. 🎜🎜그런 다음 사용자가 제출한 답변을 처리하기 위해 answer.php
파일을 만듭니다. 코드는 다음과 같습니다. 🎜rrreee🎜위 코드는 먼저 사용자가 제출한 답변 데이터를 가져와서 데이터베이스에 연결합니다. 그런 다음 prepare()
메서드와 bind_param()
메서드를 통해 데이터를 바인딩하고 데이터베이스에 삽입합니다. 마지막으로 사용자는 header()
함수를 통해 질문 페이지로 다시 리디렉션됩니다. 🎜🎜마찬가지로 rate.php
파일을 생성하여 답변에 대한 사용자 평가를 처리할 수 있습니다. 코드는 다음과 같습니다. 🎜rrreee🎜위 코드는 먼저 사용자가 제출한 평가 데이터를 가져와서 데이터베이스에 연결합니다. 그런 다음 prepare()
메서드와 bind_param()
메서드를 통해 데이터를 바인딩하고 데이터베이스에 업데이트합니다. 마지막으로 사용자는 header()
함수를 통해 질문 페이지로 다시 리디렉션됩니다. 🎜🎜위의 단계를 통해 지식질문답변 사이트에 질문 토론 및 평가 기능을 성공적으로 구현했습니다. 사용자는 질문하고 답변할 수 있을 뿐만 아니라 답변을 평가할 수도 있습니다. 이러한 기능은 정보의 정확성과 신뢰성을 향상시킬 뿐만 아니라 사용자가 유용한 지식과 정보를 더 잘 얻을 수 있도록 해줍니다. 🎜🎜위 예시의 코드는 단순한 예시일 뿐이라는 점에 유의하시기 바랍니다. 실제 애플리케이션에서는 시스템의 보안과 신뢰성을 보장하기 위해 데이터 확인, 사용자 인증, 권한 제어도 필요합니다. 🎜🎜참고 자료: 🎜🎜🎜PHP 공식 문서: https://www.php.net/docs.php 🎜🎜MySQL 공식 웹사이트: https://www.mysql.com/🎜🎜🎜이 기사가 도움이 되기를 바랍니다. 귀하의 도움에 감사드립니다. 지식 질의응답 웹사이트 구현 과정의 성공을 기원합니다! 🎜위 내용은 PHP는 지식질문답변 웹사이트에서 질문 토론 및 평가 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!