PHP는 지식문답 사이트에 질문 토론 및 평가 기능을 구현합니다
정보화 시대가 도래하면서 지식 문답 사이트는 점점 더 많은 사람들의 관심과 호응을 얻고 있습니다. 이들 웹사이트는 사용자들에게 상호 소통과 지식 공유의 플랫폼을 제공할 뿐만 아니라, 토론과 평가 기능을 통해 사용자들이 유용한 정보를 더 잘 얻을 수 있도록 돕습니다. 이 기사에서는 PHP를 사용하여 지식 Q&A 웹사이트에서 질문 토론 및 평가 기능을 구현하는 방법을 소개합니다.
우선 사용자의 질문, 답변, 댓글 등의 데이터를 저장할 데이터베이스를 설계해야 합니다. 다음은 간단한 데이터베이스 설계 예입니다.
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和评价分数等)。接下来,我们需要使用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来显示问题和回答的内容。其中,问题的标题和内容使用4a249f0d628e2318394fd9b75b4636b1
和e388a4556c0f65e1904146cc1a846bee
标签,回答的内容使用c1a436a314ed609750bd7c7d319db4da
和e388a4556c0f65e1904146cc1a846bee
标签。
接下来,我们需要添加回答和评价功能。首先,在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()
답변
테이블은 답변 정보(질문 ID, 콘텐츠, 응답자 ID, 생성 시간 및 업데이트 시간 등 포함)를 저장하는 데 사용됩니다. <p></p>
등급
테이블은 답변에 대한 평가 정보(답안 ID, 평가자 ID, 평가 점수 등 포함)를 저장하는 데 사용됩니다. <p></p>
질문과 답변 표시
index.php
파일을 생성하여 모든 질문 목록을 표시할 수 있습니다. 코드는 다음과 같습니다. question.php
페이지로 이동하여 질문과 답변을 표시합니다. 세부. question.php
파일을 만들어 질문과 답변의 세부 정보를 표시할 수 있습니다. 코드는 다음과 같습니다. rrreee
위 코드는 먼저 데이터베이스에 연결하여 질문 ID를 기준으로 질문과 답변의 데이터를 가져옵니다. 그런 다음 HTML을 출력하여 질문과 답변의 내용을 표시합니다. 그 중 질문의 제목과 내용은<h1></h1>
, <p></p>
태그를 사용하고, 답변의 내용은 <h2> 태그를 사용합니다. </h2>
및 e388a4556c0f65e1904146cc1a846bee 태그입니다. 🎜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 중국어 웹사이트의 기타 관련 기사를 참조하세요!