Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian

Cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian

王林
王林asal
2023-08-26 15:55:451394semak imbas

Cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian

Cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian

Dengan perkembangan pesat Internet, komuniti Soal Jawab telah menjadi salah satu cara penting untuk orang ramai memperoleh pengetahuan dan menyelesaikan masalah. Sebagai bahasa pengaturcaraan sebelah pelayan yang popular, PHP mempunyai fleksibiliti dan skalabiliti yang tinggi, dan sangat sesuai untuk membangunkan komuniti soal jawab dalam talian. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian yang mudah dan menyediakan contoh kod yang sepadan.

1. Buat pangkalan data

Pertama, kita perlu mencipta pangkalan data untuk menyimpan data soal jawab. Anda boleh menggunakan MySQL atau sistem pengurusan pangkalan data lain yang menyokong bahasa SQL.

Berikut ialah contoh jadual pangkalan data MySQL yang mudah:

CREATE TABLE questions (
    id INT primary key auto_increment,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE answers (
    id INT primary key auto_increment,
    question_id INT NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Dalam contoh ini, kami telah mencipta dua jadual, satu untuk menyimpan soalan dan satu lagi untuk menyimpan jawapan. Kedua-dua jadual dikaitkan dengan ID soalan (quest_id).

2. Cipta fail PHP

Seterusnya, kita perlu mencipta beberapa fail PHP untuk mengendalikan permintaan pengguna dan berinteraksi dengan pangkalan data.

  1. index.php

fail index.php ialah halaman utama komuniti Soal Jawab dan digunakan untuk memaparkan senarai soalan terkini.

<?php
// 连接数据库
$connection = new mysqli('localhost', 'username', 'password', 'database');

// 查询最新的问题列表
$result = $connection->query("SELECT * FROM questions ORDER BY created_at DESC");

// 输出问题列表
while ($row = $result->fetch_assoc()) {
    echo '<h3>'.$row['title'].'</h3>';
    echo '<p>'.$row['content'].'</p>';
}
?>
  1. ask.php

fail ask.php ialah halaman untuk pengguna menghantar soalan.

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 连接数据库
    $connection = new mysqli('localhost', 'username', 'password', 'database');

    // 获取用户输入
    $title = $_POST['title'];
    $content = $_POST['content'];

    // 将问题插入数据库
    $statement = $connection->prepare("INSERT INTO questions (title, content) VALUES (?, ?)");
    $statement->bind_param("ss", $title, $content);
    $statement->execute();

    // 跳转到首页
    header("Location: index.php");
    exit;
}
?>

<form method="POST" action="ask.php">
    <input type="text" name="title" placeholder="问题标题" required><br>
    <textarea name="content" placeholder="问题描述" required></textarea><br>
    <button type="submit">提交问题</button>
</form>
  1. question.php

fail question.php ialah halaman yang digunakan untuk memaparkan soalan tertentu dan jawapannya.

<?php
// 连接数据库
$connection = new mysqli('localhost', 'username', 'password', 'database');

// 根据问题ID查询问题和答案
$questionId = $_GET['id'];

$questionResult = $connection->query("SELECT * FROM questions WHERE id = $questionId");
$questionRow = $questionResult->fetch_assoc();

$answerResult = $connection->query("SELECT * FROM answers WHERE question_id = $questionId");

echo '<h3>'.$questionRow['title'].'</h3>';
echo '<p>'.$questionRow['content'].'</p>';

// 输出答案列表
while ($row = $answerResult->fetch_assoc()) {
    echo '<div>'.$row['content'].'</div>';
}
?>
  1. answer.php

fail answer.php ialah halaman untuk pengguna menjawab soalan.

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 连接数据库
    $connection = new mysqli('localhost', 'username', 'password', 'database');

    // 获取用户输入
    $content = $_POST['content'];
    $questionId = $_POST['question_id'];

    // 将答案插入数据库
    $statement = $connection->prepare("INSERT INTO answers (question_id, content) VALUES (?, ?)");
    $statement->bind_param("is", $questionId, $content);
    $statement->execute();

    // 跳转回问题页面
    header("Location: question.php?id=$questionId");
    exit;
}

$questionId = $_GET['id'];

echo '<form method="POST" action="answer.php">';
echo '<input type="hidden" name="question_id" value="'.$questionId.'">';
echo '<textarea name="content" placeholder="请输入您的回答"></textarea><br>';
echo '<button type="submit">提交回答</button>';
echo '</form>';

3 Jalankan dan uji

Selepas menyediakan pangkalan data dan mencipta fail PHP, anda boleh menggunakan fail ini pada pelayan web, dan kemudian mengakses halaman utama (index.php) melalui penyemak imbas untuk menguji fungsi komuniti Soal Jawab.

Ringkasan

Artikel ini memperkenalkan cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian yang mudah dan menyediakan contoh kod yang sepadan. Sudah tentu, ini hanyalah contoh asas, dan fungsi komuniti Soal Jawab sebenar mungkin melibatkan lebih banyak fungsi dan butiran teknikal, seperti pengesahan pengguna, ulasan, carian, dsb. Saya harap artikel ini dapat memberi anda beberapa idea dan bantuan supaya anda boleh menggunakan PHP dengan lebih baik untuk membangunkan fungsi komuniti Soal Jawab dalam talian.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk membangunkan fungsi komuniti Soal Jawab dalam talian. 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