ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して簡単なオンライン質疑応答システムを実装する方法

PHP を使用して簡単なオンライン質疑応答システムを実装する方法

PHPz
PHPzオリジナル
2023-09-26 09:52:461478ブラウズ

PHP を使用して簡単なオンライン質疑応答システムを実装する方法

PHP を使用して簡単なオンライン質疑応答システムを実装する方法

はじめに:

インターネットの発展に伴い、ますます多くの人々が、情報や問題解決のためにインターネットに依存し始めます。オンライン Q&A および Q&A システムは、ユーザーが質問して回答を得るための非常に重要なツールとなっています。この記事では、PHP 言語を使用して簡単なオンライン質疑応答システムを実装する方法を学びます。質問を表示して質問できるだけでなく、質問に答えたり、他のユーザーとコミュニケーションしたりすることもできます。

パート 1: データベース構造の設計

始める前に、ユーザー、質問、および回答の情報を保存するデータベースを設計する必要があります。データベース管理システムとして MySQL を使用できます。

まず、「qa_system」という名前のデータベースを作成します。次に、ユーザー、質問、回答の情報を保存する 3 つのテーブルを作成する必要があります。これらのテーブルの設計は次のとおりです:

User table (users):

  • id: int (主キー)
  • username: varchar(50)
  • password: varchar(50)

質問テーブル (質問):

  • id: int (主キー)
  • user_id: int (ユーザーテーブルの id フィールドに対応する外部キー)
  • #title: varchar(255)
  • content: text
  • created_at: datetime
  • updated_at: datetime
回答テーブル (回答):

    id: int (主キー)
  • question_id: int (外部キー、に対応)質問テーブルの id フィールド)
  • user_id: int (外部キー、ユーザー テーブルの id フィールドに対応)
  • content: text
  • created_at: datetime
  • updated_at: datetime
上記のテーブル設計を使用すると、ユーザー、質問、回答に関する情報を簡単に保存できます。

パート 2: PHP コードの記述

    ホームページ (index.php) を作成する:
まず、最新の情報を表示するホームページを作成します。質問とログイン/登録オプションのリスト。

<?php
// index.php

// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "qa_system");

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

?>

<!DOCTYPE html>
<html>
<head>
    <title>在线问答系统</title>
</head>
<body>
    <h1>在线问答系统</h1>

    <h2>最新的问题:</h2>
    <?php while ($row = mysqli_fetch_assoc($result)) { ?>
        <h3><?php echo $row['title']; ?></h3>
        <p><?php echo $row['content']; ?></p>
    <?php } ?>

    <h2>登录/注册</h2>
    <form action="login.php" method="POST">
        <input type="text" name="username" placeholder="用户名">
        <input type="password" name="password" placeholder="密码">
        <input type="submit" value="登录">
    </form>
    
    <form action="register.php" method="POST">
        <input type="text" name="username" placeholder="用户名">
        <input type="password" name="password" placeholder="密码">
        <input type="submit" value="注册">
    </form>
</body>
</html>

    ログイン ページ (login.php) を作成します:
ユーザーがユーザー名とパスワードを入力してログインをクリックすると、ユーザーが次の場所に存在するかどうかが確認されます。データベースが存在する場合は、問題のページにジャンプします。

<?php
// login.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取用户提交的数据
    $username = $_POST["username"];
    $password = $_POST["password"];

    // 连接数据库
    $conn = mysqli_connect("localhost", "username", "password", "qa_system");

    // 查询用户信息
    $query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
    $result = mysqli_query($conn, $query);

    // 检查用户是否存在
    if (mysqli_num_rows($result) > 0) {
        // 用户存在,将其用户信息存储到会话中并跳转到问题页面
        $user = mysqli_fetch_assoc($result);
        session_start();
        $_SESSION["user_id"] = $user["id"];
        header("Location: questions.php");
    } else {
        // 用户不存在,显示错误信息
        echo "用户名或密码错误";
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>用户登录</title>
</head>
<body>
    <h1>用户登录</h1>

    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
        <input type="text" name="username" placeholder="用户名">
        <input type="password" name="password" placeholder="密码">
        <input type="submit" value="登录">
    </form>
</body>
</html>

    登録ページ (register.php) を作成します:
ユーザーがユーザー名とパスワードを入力して「登録」をクリックすると、新しいユーザーがデータベースを参照し、質問ページに移動します。

<?php
// register.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取用户提交的数据
    $username = $_POST["username"];
    $password = $_POST["password"];

    // 连接数据库
    $conn = mysqli_connect("localhost", "username", "password", "qa_system");

    // 插入新用户
    $query = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
    mysqli_query($conn, $query);

    // 跳转到问题页面
    header("Location: questions.php");
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>用户注册</title>
</head>
<body>
    <h1>用户注册</h1>

    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
        <input type="text" name="username" placeholder="用户名">
        <input type="password" name="password" placeholder="密码">
        <input type="submit" value="注册">
    </form>
</body>
</html>

    質問ページ (questions.php) の作成:
このページには、質問の詳細とすべての回答が表示されます。ユーザーは質問に答えたり、他のユーザーとコミュニケーションしたりできます。

<?php
// questions.php

// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "qa_system");

// 获取问题的ID
$question_id = $_GET["id"];

// 查询问题的详细信息
$query = "SELECT * FROM questions WHERE id = $question_id";
$question_result = mysqli_query($conn, $query);
$question = mysqli_fetch_assoc($question_result);

// 查询问题的回答列表
$query = "SELECT * FROM answers WHERE question_id = $question_id";
$answers_result = mysqli_query($conn, $query);

?>

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $question["title"]; ?></title>
</head>
<body>
    <h1><?php echo $question["title"]; ?></h1>
    <p><?php echo $question["content"]; ?></p>

    <h2>回答:</h2>
    <?php while ($row = mysqli_fetch_assoc($answers_result)) { ?>
        <p><?php echo $row["content"]; ?></p>
    <?php } ?>

    <h2>我要回答:</h2>
    <?php
        session_start();
        $user_id = $_SESSION["user_id"];
    ?>
    <form action="answer.php" method="POST">
        <input type="hidden" name="question_id" value="<?php echo $question_id; ?>">
        <input type="hidden" name="user_id" value="<?php echo $user_id; ?>">
        <textarea name="content" rows="4" cols="50" placeholder="请输入您的答案"></textarea>
        <input type="submit" value="提交">
    </form>
</body>
</html>

    回答ページ (answer.php) を作成します:
ユーザーが回答を入力して送信すると、回答がデータベースに挿入されて更新されます。質問ページ。

<?php
// answer.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取用户提交的数据
    $question_id = $_POST["question_id"];
    $user_id = $_POST["user_id"];
    $content = $_POST["content"];

    // 连接数据库
    $conn = mysqli_connect("localhost", "username", "password", "qa_system");

    // 插入新答案
    $query = "INSERT INTO answers (question_id, user_id, content) VALUES ($question_id, $user_id, '$content')";
    mysqli_query($conn, $query);

    // 跳转回问题页面
    header("Location: questions.php?id=$question_id");
}
?>

要約:

上記の手順により、簡単なオンライン Q&A および Q&A システムを作成することができました。ユーザーは登録、ログインし、質問することができます。他のユーザーは質問を表示して回答することができます。これは単なる基本的な実装であり、ニーズに基づいてさらに機能やユーザー エクスペリエンスを追加できます。この記事があなたのお役に立てれば幸いです。また、PHP の質問と回答システムの作成が成功することを願っています。

以上がPHP を使用して簡単なオンライン質疑応答システムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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