Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die Frageabstimmungsfunktion in der Wissensfrage- und -antwort-Website.

PHP implementiert die Frageabstimmungsfunktion in der Wissensfrage- und -antwort-Website.

WBOY
WBOYOriginal
2023-07-02 16:06:07638Durchsuche

PHP implementiert die Frageabstimmungsfunktion in der Q&A-Website

Mit der Popularität von Smartphones und dem Internet ist die Q&A-Website zu einer wichtigen Plattform für Menschen geworden, um Informationen zu erhalten und Wissen auszutauschen. Ein gemeinsames Merkmal dieser Frage-und-Antwort-Seiten ist die Frageabstimmung. Benutzer können die Wichtigkeit und Qualität von Fragen durch Abstimmung bewerten und so anderen Benutzern dabei helfen, wertvolle Fragen besser zu prüfen und zu finden.

In diesem Artikel erfahren Sie, wie Sie mit PHP eine einfache Frageabstimmungsfunktion implementieren. Wir verwenden eine MySQL-Datenbank zum Speichern von Fragen- und Umfragedaten sowie HTML und CSS zum Erstellen der Frontend-Seiten.

Zuerst müssen wir eine Datenbank erstellen, um die Fragen und Abstimmungsdaten zu speichern. Angenommen, unsere Datenbank heißt „qavote“ und enthält zwei Tabellen „Fragen“ und „Stimmen“. Hier ist die Definition der Tabelle:

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)
);

Als nächstes müssen wir eine PHP-Seite erstellen, um die Fragenabstimmung zu verwalten. Wir können diese Seite „vote.php“ nennen. Hier ist ein Codebeispiel von der Seite 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();
?>

In vote.php stellen wir zunächst eine Verbindung zur Datenbank her und prüfen dann, ob die Parameter questions_id und action übergeben wurden. Basierend auf dem Wert des Aktionsparameters aktualisieren wir die Anzahl der Stimmen für die entsprechende Frage. Abschließend schließen wir die Datenbankverbindung. Beachten Sie, dass wir zur Vereinfachung des Beispiels keine Eingabevalidierung und -sicherheit durchführen. In praktischen Anwendungen sind diese notwendig.

Zuletzt müssen wir eine HTML-Seite erstellen, die die Fragen und Abstimmungsergebnisse anzeigt. Das Folgende ist ein einfaches Beispiel:

<!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>

Auf der obigen HTML-Seite stellen wir zunächst eine Verbindung zur Datenbank her, fragen dann die Anzahl der Fragen und Stimmen ab und geben die Fragen und Abstimmungsergebnisse basierend auf den Abfrageergebnissen aus. Für jede Frage stellen wir „Daumen hoch“- und „Daumen runter“-Links zur Verfügung, auf die Benutzer klicken können, um abzustimmen. In praktischen Anwendungen können wir Abstimmungsberechtigungen basierend auf dem Anmeldestatus des Benutzers steuern.

Zusammenfassung:
In diesem Artikel haben wir gelernt, wie man PHP und MySQL verwendet, um die Frageabstimmungsfunktion in einer Wissens-Q&A-Website zu implementieren. Wir haben eine Datenbank zur Speicherung der Fragen und Umfragedaten erstellt und die entsprechenden PHP-Seiten und HTML-Seiten geschrieben. Obwohl dies nur ein einfaches Beispiel ist, kann es Ihnen einen guten Ausgangspunkt für die Erstellung umfassenderer und komplexerer Q&A-Websites bieten. Ich hoffe, dieser Artikel kann Ihnen hilfreich sein!

Das obige ist der detaillierte Inhalt vonPHP implementiert die Frageabstimmungsfunktion in der Wissensfrage- und -antwort-Website.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn