ホームページ  >  記事  >  バックエンド開発  >  PHP は、知識の質問と回答の Web サイトに質問のディスカッションと評価の機能を実装します。

PHP は、知識の質問と回答の Web サイトに質問のディスカッションと評価の機能を実装します。

PHPz
PHPzオリジナル
2023-07-01 20:00:12897ブラウズ

PHP は知識質疑応答 Web サイトの質問ディスカッションと評価機能を実現します。

情報化時代の到来に伴い、知識質疑応答 Web サイトはますます多くの人々の注目と支持を集めています。これらのウェブサイトは、ユーザー同士のコミュニケーションや知識の共有のためのプラットフォームを提供するだけでなく、ディスカッションや評価機能を通じてユーザーが有益な情報をより適切に入手できるようにします。この記事では、PHP を使用してナレッジ Q&A サイトに質問ディスカッションと評価機能を実装する方法を紹介します。

  1. データベース設計

まず、ユーザーから寄せられた質問、回答、評価などのデータを保存するデータベースを設計する必要があります。以下に簡単なデータベース設計例を示します。

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 、作成時間、更新時間など);
  • answers テーブルは、回答情報 (質問 ID、内容、回答者 ID、作成時間、更新時間などを含む) を保存するために使用されます。 );
  • 評価 このテーブルは、回答の評価情報(回答ID、評価者ID、評価スコアなど)を格納するために使用されます。
  1. 質問と回答の表示

次に、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## が使用されています。 # および < ;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 が隠しフィールドに渡され、後続の処理で対応する質問に回答できるようになります。

次に、ユーザーが送信した回答を処理するための

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() 関数を通じて質問ページにリダイレクトされます。

上記の手順により、ナレッジ Q&A Web サイトに質問ディスカッションと評価機能を実装することができました。ユーザーは質問や回答を行うだけでなく、回答を評価することもできます。このような機能により、情報の正確性や信頼性が向上するだけでなく、ユーザーにとって有用な知識や情報をより適切に入手できるようになります。

なお、上記例のコードは単純な例であり、実際のアプリケーションでは、システムの安全性と信頼性を確保するために、データ検証、ユーザー認証、権限制御も必要となります。

参考資料:

    PHP 公式ドキュメント: https://www.php.net/docs.php
  • MySQL 公式 Web サイト: https://www .mysql.com/
この記事があなたのお役に立てば幸いです。また、知識に関する質問と回答の Web サイトの実装プロセスが成功することを願っています。

以上がPHP は、知識の質問と回答の Web サイトに質問のディスカッションと評価の機能を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。