Rumah >pembangunan bahagian belakang >tutorial php >Gunakan PHP untuk membangunkan fungsi penerimaan jawapan soalan dan pengesyoran dalam tapak web soalan dan jawapan pengetahuan.

Gunakan PHP untuk membangunkan fungsi penerimaan jawapan soalan dan pengesyoran dalam tapak web soalan dan jawapan pengetahuan.

PHPz
PHPzasal
2023-07-02 10:52:581065semak imbas

Gunakan PHP untuk membangunkan fungsi penerimaan jawapan dan pengesyoran dalam laman web Soal Jawab pengetahuan

Dalam laman web Soal Jawab pengetahuan, pengguna bertanya soalan dan pengguna lain memberikan jawapan. Selalunya berlaku bahawa satu atau lebih daripada berbilang jawapan diiktiraf sebagai jawapan terbaik oleh penyoal atau pengguna lain. Oleh itu, untuk memaparkan dan mengurus jawapan kepada soalan dengan lebih baik, dalam artikel ini kami akan memperkenalkan cara membangunkan fungsi penerimaan dan cadangan jawapan soalan menggunakan PHP.

  1. Reka Bentuk Pangkalan Data

Pertama, kita perlu mereka bentuk pangkalan data untuk menyimpan maklumat tentang soalan dan jawapan. Di sini kita mencipta tiga jadual.

  • Jadualsoalan menyimpan maklumat soalan, seperti ID soalan, tajuk, kandungan, ID penyoal, masa soalan, dsb. questions 表存储问题信息,例如问题 ID、标题、内容、提问者 ID、提问时间等。
  • answers 表存储答案信息,例如答案 ID、问题 ID、回答内容、回答者 ID、回答时间等。
  • accepted_answers 表用于存储被采纳的答案信息,其中包含问题 ID、被采纳答案 ID。

以下是数据库结构的示例:

CREATE TABLE questions (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255),
    content TEXT,
    owner_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE answers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    question_id INT,
    content TEXT,
    owner_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE accepted_answers (
    question_id INT PRIMARY KEY,
    answer_id INT
);
  1. 问题页面开发

在问题详情页面上,我们需要显示问题的标题、内容以及相关答案。对于当前问题,我们还需要显示被采纳的答案(如果有的话)。

首先,我们要获取问题的信息并显示在页面上。我们可以使用以下代码示例:

<?php
// 获取问题 ID
$questionId = $_GET['id'];

// 获取问题信息
$questionQuery = "SELECT * FROM questions WHERE id = :id";
$questionStmt = $pdo->prepare($questionQuery);
$questionStmt->bindParam(':id', $questionId, PDO::PARAM_INT);
$questionStmt->execute();
$question = $questionStmt->fetch(PDO::FETCH_ASSOC);

// 显示问题标题和内容
echo "<h1>" . $question['title'] . "</h1>";
echo "<p>" . $question['content'] . "</p>";

// 获取问题的回答信息
$answersQuery = "SELECT * FROM answers WHERE question_id = :question_id";
$answersStmt = $pdo->prepare($answersQuery);
$answersStmt->bindParam(':question_id', $questionId, PDO::PARAM_INT);
$answersStmt->execute();
$answers = $answersStmt->fetchAll(PDO::FETCH_ASSOC);

// 显示回答列表
foreach ($answers as $answer) {
    echo "<div>";
    echo "<p>" . $answer['content'] . "</p>";

    // 检查答案是否被采纳
    if ($answer['id'] === $question['accepted_answer_id']) {
        echo "<span>已采纳</span>";
    } else {
        // 显示采纳按钮
        echo "<a href='accept-answer.php?question=" . $questionId . "&answer=" . $answer['id'] . "'>采纳该答案</a>";
    }

    echo "</div>";
}
?>

以上代码中,我们首先获取问题的信息并展示在页面上。然后,获取问题相关的答案并逐个显示。对于每个答案,我们检查其是否被采纳。如被采纳,则显示“已采纳”标志;反之,则显示一个标签,点击该标签将调用 accept-answer.php 进行答案的采纳。

  1. 采纳答案的处理

accept-answer.php 文件中,我们需要处理答案的采纳请求,并更新 accepted_answers

jawapan jadual menyimpan maklumat jawapan, seperti ID jawapan, ID soalan, kandungan jawapan, ID penjawab, masa menjawab, dsb.

Jadual accepted_answers digunakan untuk menyimpan maklumat jawapan yang diterima, yang termasuk ID soalan dan ID jawapan yang diterima.

Berikut ialah contoh struktur pangkalan data:

<?php
// 获取问题 ID 和答案 ID
$questionId = $_GET['question'];
$answerId = $_GET['answer'];

// 将答案 ID 更新为被采纳
$acceptAnswerQuery = "UPDATE accepted_answers SET answer_id = :answer_id WHERE question_id = :question_id";
$acceptAnswerStmt = $pdo->prepare($acceptAnswerQuery);
$acceptAnswerStmt->bindParam(':answer_id', $answerId, PDO::PARAM_INT);
$acceptAnswerStmt->bindParam(':question_id', $questionId, PDO::PARAM_INT);
$acceptAnswerStmt->execute();

// 返回问题详情页
header("Location: question.php?id=" . $questionId);
?>

    Pembangunan halaman soalan🎜🎜🎜Pada halaman butiran soalan, kami perlu memaparkan tajuk, kandungan dan jawapan yang berkaitan daripada soalan itu. Untuk soalan semasa, kami juga perlu menunjukkan jawapan yang diterima (jika ada). 🎜🎜Pertama, kita perlu mendapatkan maklumat masalah dan memaparkannya pada halaman. Kita boleh menggunakan contoh kod berikut: 🎜rrreee🎜Dalam kod di atas, kami mula-mula mendapat maklumat masalah dan memaparkannya pada halaman. Kemudian, dapatkan jawapan yang berkaitan dengan soalan dan paparkan satu persatu. Untuk setiap jawapan, kami menyemak sama ada ia diterima. Jika ia diterima, tanda "Diterima" akan dipaparkan; jika tidak, label akan dipaparkan dengan mengklik label akan memanggil accept-answer.php untuk menerima jawapan. 🎜
      🎜Pemprosesan jawapan yang diterima🎜🎜🎜Dalam fail accept-answer.php, kami perlu memproses permintaan penerimaan jawapan dan mengemas kini accepted_answers Jadual. 🎜🎜Berikut ialah contoh kod yang mengendalikan permintaan jawapan yang diterima: 🎜rrreee🎜Dalam kod di atas, kami mula-mula mendapat ID soalan dan jawapan. Kemudian, kemas kini ID jawapan kepada jawapan yang diterima dengan melaksanakan pernyataan SQL. Akhir sekali, kami mengubah hala ke halaman butiran isu dan memuat semula halaman untuk menunjukkan status penerimaan terkini. 🎜🎜Melalui langkah di atas, kami telah berjaya melaksanakan fungsi menerima pakai dan mengesyorkan jawapan kepada soalan dalam laman web soal jawab ilmu. Pengguna boleh menerima pakai jawapan yang mereka luluskan dalam halaman butiran soalan dan meningkatkan kualiti soalan dan jawapan melalui ciri ini. Ini membantu pengguna menangkap dan berkongsi pengetahuan dengan lebih baik. 🎜

Atas ialah kandungan terperinci Gunakan PHP untuk membangunkan fungsi penerimaan jawapan soalan dan pengesyoran dalam tapak web soalan dan jawapan pengetahuan.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn