Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour implémenter un système simple de questions et réponses en ligne

Comment utiliser PHP pour implémenter un système simple de questions et réponses en ligne

PHPz
PHPzoriginal
2023-09-26 09:52:461421parcourir

Comment utiliser PHP pour implémenter un système simple de questions et réponses en ligne

Comment utiliser PHP pour mettre en œuvre un système simple de questions et réponses en ligne

Introduction :

Avec le développement d'Internet, de plus en plus de personnes commencent à s'appuyer sur Internet pour obtenir des informations et résoudre des problèmes. Les questions-réponses en ligne et les systèmes de questions-réponses sont devenus un outil très important permettant aux utilisateurs de poser des questions et d'obtenir des réponses. Dans cet article, nous apprendrons comment utiliser le langage PHP pour implémenter un système simple de questions et réponses en ligne. Non seulement vous pouvez visualiser et poser des questions, mais vous pouvez également y répondre et communiquer avec d'autres utilisateurs.

Partie 1 : Concevoir la structure de la base de données

Avant de commencer, nous devons concevoir une base de données pour stocker les informations sur les utilisateurs, les questions et les réponses. Nous pouvons utiliser MySQL comme système de gestion de base de données.

Tout d'abord, nous créons une base de données nommée "qa_system". Ensuite, nous devons créer trois tables pour stocker les informations sur les utilisateurs, les questions et les réponses. Voici la conception de ces tables :

Table des utilisateurs (utilisateurs) :

  • id : int (clé primaire)
  • nom d'utilisateur : varchar(50)
  • mot de passe : varchar(50)

table des questions (questions ):

  • id: int (clé primaire)
  • user_id: int (clé étrangère, correspondant au champ id de la table user)
  • title: varchar(255)
  • content: text
  • created_at: datetime
  • updated_at : datetime

Table de réponses (réponses) :

  • id : int (clé primaire)
  • question_id : int (clé étrangère, correspondant au champ id de la table de questions)
  • user_id : int (clé étrangère , correspondant au champ id de la table utilisateur)
  • content : text
  • created_at: datetime
  • updated_at: datetime

En utilisant la conception de table ci-dessus, nous pouvons facilement stocker les informations des utilisateurs, les questions et les réponses.

Partie 2 : Écriture du code PHP

  1. Créer la page d'accueil (index.php) :

Tout d'abord, nous allons créer une page d'accueil qui affiche la dernière liste de questions et les options de connexion/inscription.

<?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>
  1. Créez la page de connexion (login.php) :

Lorsque l'utilisateur remplit le nom d'utilisateur et le mot de passe et clique sur Connexion, nous vérifierons si l'utilisateur existe dans la base de données et passerons à la page du problème s'il existe.

<?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>
  1. Créez la page d'inscription (register.php) :

Lorsque l'utilisateur remplit le nom d'utilisateur et le mot de passe et clique sur s'inscrire, nous insérerons le nouvel utilisateur dans la base de données et passerons à la page de questions.

<?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>
  1. Créer une page de questions (questions.php) :

Sur cette page, nous afficherons les détails d'une question et toutes les réponses. Les utilisateurs peuvent répondre aux questions et communiquer avec d'autres utilisateurs.

<?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>
  1. Créer la page de réponse (answer.php) :

Lorsque l'utilisateur remplit la réponse et la soumet, nous insérerons la réponse dans la base de données et actualiserons la page de questions.

<?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");
}
?>

Résumé :

Grâce aux étapes ci-dessus, nous avons réussi à créer un système de questions-réponses en ligne simple. Les utilisateurs peuvent s'inscrire, se connecter et poser des questions. Les autres utilisateurs peuvent consulter les questions et y répondre. Il ne s'agit que d'une implémentation de base, vous pouvez ajouter plus de fonctionnalités et d'expérience utilisateur en fonction de vos besoins. J'espère que cet article pourra vous aider et je vous souhaite du succès dans la rédaction d'un système de questions et réponses PHP !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn