Maison  >  Article  >  développement back-end  >  PHP implémente la fonction de vote par questions dans le site Web de questions et réponses de connaissances.

PHP implémente la fonction de vote par questions dans le site Web de questions et réponses de connaissances.

WBOY
WBOYoriginal
2023-07-02 16:06:07671parcourir

PHP implémente la fonction de vote par question sur le site Web de questions-réponses

Avec la popularité des smartphones et d'Internet, le site Web de questions-réponses est devenu une plate-forme importante permettant aux utilisateurs d'obtenir des informations et de partager des connaissances. Une caractéristique commune à ces sites de questions-réponses est le vote par questions. Les utilisateurs peuvent évaluer l'importance et la qualité des questions en votant, aidant ainsi les autres utilisateurs à mieux filtrer et trouver des questions intéressantes.

Cet article expliquera comment utiliser PHP pour implémenter une fonction de vote par question simple. Nous utiliserons une base de données MySQL pour stocker les données des questions et des sondages, ainsi que HTML et CSS pour créer les pages frontales.

Tout d'abord, nous devons créer une base de données pour stocker les questions et les données de vote. Supposons que notre base de données s'appelle "qavote" et contienne deux tables "questions" et "votes". Voici la définition du tableau :

CREATE TABLE questions (
  id INT(11) AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  content TEXT NOT NULL
);

CREATE TABLE votes (
  id INT(11) AUTO_INCREMENT PRIMARY KEY,
  question_id INT(11) NOT NULL,
  vote_count INT(11) NOT NULL DEFAULT 0,
  FOREIGN KEY (question_id) REFERENCES questions(id)
);

Ensuite, nous devons créer une page PHP pour gérer le vote des questions. Nous pouvons nommer cette page « vote.php ». Voici un exemple de code de la page vote.php :

<?php
// 连接数据库
$conn = new mysqli("localhost", "username", "password", "qavote");

// 检查数据库连接是否成功
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

// 检查是否传入了 question_id 和 action 参数
if (isset($_GET["question_id"]) && isset($_GET["action"])) {
    $question_id = $_GET["question_id"];
    $action = $_GET["action"];

    // 根据 action 参数执行相应的操作
    if ($action == "upvote") {
        // 更新问题的投票数
        $sql = "UPDATE votes SET vote_count = vote_count + 1 WHERE question_id = " . $question_id;
        $conn->query($sql);
    } elseif ($action == "downvote") {
        // 更新问题的投票数
        $sql = "UPDATE votes SET vote_count = vote_count - 1 WHERE question_id = " . $question_id;
        $conn->query($sql);
    }
}

// 关闭数据库连接
$conn->close();
?>

Dans vote.php, nous nous connectons d'abord à la base de données, puis vérifions si les paramètres question_id et action ont été transmis. En fonction de la valeur du paramètre action, nous mettons à jour le nombre de votes pour la question correspondante. Enfin, nous fermons la connexion à la base de données. Notez que pour simplifier l'exemple, nous ne faisons pas de validation et de sécurité des entrées. Dans les applications pratiques, ceux-ci sont nécessaires.

Enfin, nous devons créer une page HTML qui affiche les questions et les résultats du vote. Voici un exemple simple :

<!DOCTYPE html>
<html>
<head>
  <title>问题投票</title>
  <style>
    .question {
      margin-bottom: 20px;
    }
  </style>
</head>
<body>
  <?php
    // 连接数据库
    $conn = new mysqli("localhost", "username", "password", "qavote");

    // 检查数据库连接是否成功
    if ($conn->connect_error) {
        die("数据库连接失败: " . $conn->connect_error);
    }

    // 查询问题和投票数
    $sql = "SELECT questions.id, questions.title, questions.content, votes.vote_count FROM questions
            LEFT JOIN votes ON questions.id = votes.question_id";
    $result = $conn->query($sql);

    // 循环输出问题和投票结果
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo "<div class='question'>";
            echo "<h3>" . $row["title"] . "</h3>";
            echo "<p>" . $row["content"] . "</p>";
            echo "<p>投票数: " . $row["vote_count"] . "</p>";
            echo "<a href='vote.php?question_id=" . $row["id"] . "&action=upvote'>赞同</a>";
            echo "<a href='vote.php?question_id=" . $row["id"] . "&action=downvote'>反对</a>";
            echo "</div>";
        }
    } else {
        echo "暂无问题";
    }

    // 关闭数据库连接
    $conn->close();
  ?>
</body>
</html>

Dans la page HTML ci-dessus, nous nous connectons d'abord à la base de données, puis recherchons le nombre de questions et de votes, et générons les questions et les résultats du vote en fonction des résultats de la requête. Pour chaque question, nous fournissons des liens « pouce levé » et « pouce vers le bas » sur lesquels les utilisateurs peuvent cliquer pour voter. Dans des applications pratiques, nous pouvons contrôler les autorisations de vote en fonction du statut de connexion de l'utilisateur.

Résumé :
Dans cet article, nous avons appris à utiliser PHP et MySQL pour implémenter la fonction de vote par questions dans un site Web de questions-réponses de connaissances. Nous avons créé une base de données pour stocker les questions et les données du sondage et écrit les pages PHP et HTML correspondantes. Bien qu’il ne s’agisse que d’un exemple simple, il peut constituer un bon point de départ pour créer des sites Web de questions-réponses plus complets et plus complexes. J'espère que cet article pourra vous être utile !

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