PHP は知識質疑応答 Web サイトの質問ディスカッションと評価機能を実現します。
情報化時代の到来に伴い、知識質疑応答 Web サイトはますます多くの人々の注目と支持を集めています。これらのウェブサイトは、ユーザー同士のコミュニケーションや知識の共有のためのプラットフォームを提供するだけでなく、ディスカッションや評価機能を通じてユーザーが有益な情報をより適切に入手できるようにします。この記事では、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 、作成時間、更新時間など); answers
テーブルは、回答情報 (質問 ID、内容、回答者 ID、作成時間、更新時間などを含む) を保存するために使用されます。 ); 評価
このテーブルは、回答の評価情報(回答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## が使用されています。 # および
< ;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() 関数を通じて質問ページにリダイレクトされます。
以上がPHP は、知識の質問と回答の Web サイトに質問のディスカッションと評価の機能を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。