Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP untuk melaksanakan sistem soal jawab dalam talian yang mudah

Cara menggunakan PHP untuk melaksanakan sistem soal jawab dalam talian yang mudah

PHPz
PHPzasal
2023-09-26 09:52:461421semak imbas

Cara menggunakan PHP untuk melaksanakan sistem soal jawab dalam talian yang mudah

Cara menggunakan PHP untuk melaksanakan sistem soal jawab dalam talian yang mudah

Pengenalan:

Dengan perkembangan Internet, semakin ramai orang mula bergantung pada Internet untuk mendapatkan maklumat dan menyelesaikan masalah. Sistem Soal Jawab dan Soal Jawab dalam talian telah menjadi alat yang sangat penting untuk pengguna bertanya soalan dan mendapatkan jawapan. Dalam artikel ini, kita akan belajar cara menggunakan bahasa PHP untuk melaksanakan sistem soal jawab dalam talian yang mudah. Anda bukan sahaja boleh melihat dan bertanya soalan, tetapi anda juga boleh menjawabnya dan berkomunikasi dengan pengguna lain.

Bahagian 1: Reka bentuk struktur pangkalan data

Sebelum kita mula, kita perlu mereka bentuk pangkalan data untuk menyimpan maklumat pengguna, soal jawab. Kita boleh menggunakan MySQL sebagai sistem pengurusan pangkalan data.

Pertama, kami mencipta pangkalan data bernama "qa_system". Kemudian kita perlu mencipta tiga jadual untuk menyimpan maklumat pengguna, soalan dan jawapan. Berikut ialah reka bentuk jadual ini:

Jadual pengguna (pengguna):

  • id: int (kunci utama)
  • nama pengguna: varchar(50)
  • kata laluan: varchar(50) (soalan
):

    id: int (kunci utama)
  • user_id: int (kunci asing, sepadan dengan medan id jadual pengguna)
  • tajuk: varchar(255)
  • kandungan: tarikh
  • dibuat_
  • :
  • updated_at: datetime
  • Jadual jawapan (jawapan):

id: int (primary key)
  • question_id: int (foreign key, sepadan dengan medan id jadual soalan)
  • id: int (user_id: int , sepadan dengan medan id jadual pengguna)
  • kandungan : text
  • created_at: datetime
  • updated_at: datetime
  • Menggunakan reka bentuk jadual di atas, kami boleh menyimpan maklumat pengguna, soalan dan jawapan dengan mudah.
Bahagian 2: Menulis Kod PHP

Buat laman utama (index.php):

  1. Pertama, kami akan membuat halaman utama yang memaparkan senarai soalan terkini dan pilihan log masuk/pendaftaran.
  2. <?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>

Buat halaman log masuk (login.php):

  1. Apabila pengguna mengisi nama pengguna dan kata laluan dan mengklik log masuk, kami akan menyemak sama ada pengguna wujud dalam pangkalan data dan melompat ke halaman masalah jika wujud.
  2. <?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>

Buat halaman pendaftaran (register.php):

  1. Apabila pengguna mengisi nama pengguna dan kata laluan dan mengklik daftar, kami akan memasukkan pengguna baharu ke dalam pangkalan data dan melompat ke halaman soalan.
  2. <?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>

Buat halaman soalan (soalan.php):

  1. Di halaman ini kami akan memaparkan butiran soalan dan semua jawapan. Pengguna boleh menjawab soalan dan berkomunikasi dengan pengguna lain.
  2. <?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>

Buat halaman jawapan (answer.php):

  1. Apabila pengguna mengisi jawapan dan menyerahkannya, kami akan memasukkan jawapan ke dalam pangkalan data dan memuat semula halaman soalan.
  2. <?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");
    }
    ?>
Ringkasan:

Melalui langkah di atas, kami berjaya mencipta sistem Soal Jawab dalam talian yang mudah. Pengguna boleh mendaftar, log masuk dan bertanya soalan. Pengguna lain boleh melihat soalan dan menjawabnya. Ini hanyalah pelaksanaan asas, anda boleh menambah lebih banyak ciri dan pengalaman pengguna berdasarkan keperluan anda. Saya harap artikel ini dapat membantu anda, dan saya doakan anda berjaya dalam menulis sistem soal jawab PHP!

Atas ialah kandungan terperinci Cara menggunakan PHP untuk melaksanakan sistem soal jawab dalam talian yang mudah. 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