Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP melaksanakan fungsi undian soalan dalam laman web soalan dan jawapan pengetahuan.

PHP melaksanakan fungsi undian soalan dalam laman web soalan dan jawapan pengetahuan.

WBOY
WBOYasal
2023-07-02 16:06:07681semak imbas

PHP melaksanakan fungsi pengundian soalan dalam laman web Soal Jawab

Dengan populariti telefon pintar dan Internet, laman web Soal Jawab telah menjadi platform penting untuk orang ramai mendapatkan maklumat dan berkongsi pengetahuan. Ciri biasa dalam tapak Soal Jawab ini ialah pengundian soalan. Pengguna boleh menilai kepentingan dan kualiti soalan dengan mengundi, dengan itu membantu pengguna lain menyaring dengan lebih baik dan mencari soalan yang berharga.

Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengundian soalan mudah. Kami akan menggunakan pangkalan data MySQL untuk menyimpan data soalan dan tinjauan pendapat, dan HTML dan CSS untuk membina halaman hadapan.

Pertama, kita perlu mencipta pangkalan data untuk menyimpan soalan dan data pengundian. Katakan pangkalan data kami dipanggil "qavote" dan mengandungi dua jadual "soalan" dan "undi". Berikut ialah definisi jadual:

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

Seterusnya, kita perlu membuat halaman PHP untuk mengendalikan pengundian soalan. Kita boleh menamakan halaman ini "vote.php". Berikut ialah contoh kod dari halaman 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();
?>

Dalam vote.php kita mula-mula menyambung ke pangkalan data dan kemudian menyemak sama ada question_id dan parameter tindakan telah diluluskan. Berdasarkan nilai parameter tindakan, kami mengemas kini bilangan undian untuk soalan yang sepadan. Akhirnya, kami menutup sambungan pangkalan data. Ambil perhatian bahawa untuk memudahkan contoh, kami tidak melakukan pengesahan input dan keselamatan. Dalam aplikasi praktikal, ini adalah perlu.

Akhir sekali, kita perlu membuat halaman HTML yang memaparkan soalan dan keputusan pengundian. Berikut ialah contoh mudah:

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

Dalam halaman HTML di atas, kami mula-mula menyambung ke pangkalan data, kemudian menanyakan bilangan soalan dan undian, dan mengeluarkan soalan dan keputusan pengundian berdasarkan keputusan pertanyaan. Untuk setiap soalan, kami menyediakan pautan "thumbs up" dan "thumbs down" yang pengguna boleh klik untuk mengundi. Dalam aplikasi praktikal, kami boleh mengawal kebenaran mengundi berdasarkan status log masuk pengguna.

Ringkasan:
Dalam artikel ini, kami mempelajari cara menggunakan PHP dan MySQL untuk melaksanakan fungsi pengundian soalan dalam laman web Soal Jawab pengetahuan. Kami mencipta pangkalan data untuk menyimpan soalan dan data tinjauan pendapat dan menulis halaman PHP dan halaman HTML yang sepadan. Walaupun ini hanyalah contoh mudah, ia boleh memberikan titik permulaan yang baik untuk anda membina tapak web Soal Jawab yang lebih lengkap dan kompleks. Harap artikel ini dapat membantu anda!

Atas ialah kandungan terperinci PHP melaksanakan fungsi undian soalan dalam laman web soalan dan jawapan pengetahuan.. 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