> 백엔드 개발 > PHP 튜토리얼 > PHP는 지식질문답변 웹사이트에서 질문 토론 및 평가 기능을 구현합니다.

PHP는 지식질문답변 웹사이트에서 질문 토론 및 평가 기능을 구현합니다.

PHPz
풀어 주다: 2023-07-01 20:02:02
원래의
944명이 탐색했습니다.
<p>PHP는 지식문답 사이트에 질문 토론 및 평가 기능을 구현합니다

<p>정보화 시대가 도래하면서 지식 문답 사이트는 점점 더 많은 사람들의 관심과 호응을 얻고 있습니다. 이들 웹사이트는 사용자들에게 상호 소통과 지식 공유의 플랫폼을 제공할 뿐만 아니라, 토론과 평가 기능을 통해 사용자들이 유용한 정보를 더 잘 얻을 수 있도록 돕습니다. 이 기사에서는 PHP를 사용하여 지식 Q&A 웹사이트에서 질문 토론 및 평가 기능을 구현하는 방법을 소개합니다.

  1. 데이터베이스 설계
<p>우선 사용자의 질문, 답변, 댓글 등의 데이터를 저장할 데이터베이스를 설계해야 합니다. 다음은 간단한 데이터베이스 설계 예입니다.

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`)
);
로그인 후 복사
<p>그 중

  • questions 테이블은 질문 정보(제목, 내용, 질문자 ID, 생성 시간 및 업데이트 시간 등 포함)를 저장하는 데 사용됩니다. .); questions 表用来存储问题的信息(包括标题、内容、提问者ID、创建时间和更新时间等);
  • answers 表用来存储回答的信息(包括问题ID、内容、回答者ID、创建时间和更新时间等);
  • ratings 表用来存储回答的评价信息(包括回答ID、评价者ID和评价分数等)。
  1. 显示问题和回答
<p>接下来,我们需要使用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();
?>
로그인 후 복사
<p>上述代码首先连接到数据库,并通过查询获取所有问题的数据。接下来,通过循环输出问题列表,并为每个问题创建一个带有问题ID的链接,点击链接后用户将跳转到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();
?>
로그인 후 복사
<p>上述代码首先连接到数据库,并根据问题ID获取问题和回答的数据。然后,通过输出HTML来显示问题和回答的内容。其中,问题的标题和内容使用<h1><p>标签,回答的内容使用<h2><p>标签。

  1. 添加回答和评价功能
<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>
로그인 후 복사
<p>上述代码创建了一个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");
?>
로그인 후 복사
<p>上述代码首先获取用户提交的回答数据,并连接到数据库。然后,通过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");
?>
로그인 후 복사
<p>上述代码首先获取用户提交的评价数据,并连接到数据库。然后,通过prepare()方法和bind_param()方法来绑定数据并更新到数据库中。最后,通过header()

답변 테이블은 답변 정보(질문 ID, 콘텐츠, 응답자 ID, 생성 시간 및 업데이트 시간 등 포함)를 저장하는 데 사용됩니다. <p>

등급 테이블은 답변에 대한 평가 정보(답안 ID, 평가자 ID, 평가 점수 등 포함)를 저장하는 데 사용됩니다. <p>

    <p>질문과 답변 표시

  • 다음으로, PHP를 사용하여 질문과 답변을 표시하는 코드를 작성해야 합니다. 먼저 index.php 파일을 생성하여 모든 질문 목록을 표시할 수 있습니다. 코드는 다음과 같습니다.
  • rrreee
  • 위 코드는 먼저 데이터베이스에 연결하고 쿼리를 통해 모든 문제의 데이터를 가져옵니다. 다음으로, 루프를 통해 질문 목록을 출력하고 각 질문에 대한 질문 ID가 포함된 링크를 생성합니다. 링크를 클릭하면 사용자는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿