首頁 >後端開發 >php教程 >PHP 實作知識問答網站中的問題討論與評價功能。

PHP 實作知識問答網站中的問題討論與評價功能。

PHPz
PHPz原創
2023-07-01 20:00:12922瀏覽

PHP 實現知識問答網站中的問題討論和評價功能

隨著資訊時代的到來,知識問答網站越來越受到人們的關注和青睞。這些網站不僅為使用者提供了一個互相交流和分享知識的平台,還能讓使用者透過討論和評價功能更好地獲取有用的資訊。本文將介紹如何使用PHP實現知識問答網站中的問題討論與評估功能。

  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、建立時間和更新時間等);
  • ratings 表格用來儲存回答的評價資訊(包括回答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來顯示問題和回答的內容。其中,問題的標題和內容使用4a249f0d628e2318394fd9b75b4636b1e388a4556c0f65e1904146cc1a846bee標籤,回答的內容使用c1a436a314ed609750bd7c7d319db4da&lt ;p>標籤。

  1. 新增答案和評價功能

接下來,我們需要加入答案和評價功能。首先,在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官方文件:https://www.php.net/docs.php
  • MySQL官方網站:https://www .mysql.com/

希望這篇文章能對你有幫助,祝你在實現知識問答網站的過程中取得成功!

以上是PHP 實作知識問答網站中的問題討論與評價功能。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn