Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bina platform pengundian dalam talian PHP yang boleh disesuaikan

Bina platform pengundian dalam talian PHP yang boleh disesuaikan

王林
王林asal
2023-08-08 09:25:01796semak imbas

Bina platform pengundian dalam talian PHP yang boleh disesuaikan

Bina platform pengundian dalam talian PHP yang boleh disesuaikan

Dengan populariti Internet dan perkembangan teknologi yang berterusan, pengundian dalam talian telah menjadi cara biasa untuk mengumpul pendapat dan keputusan orang ramai. Membina platform pengundian dalam talian PHP yang boleh disesuaikan akan menyediakan pengguna dengan persekitaran pengundian yang fleksibel, cekap dan selamat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis platform pengundian dalam talian yang mudah dan memberikan contoh kod.

Pertama, kita perlu mencipta pangkalan data untuk menyimpan data berkaitan pengundian. Kita boleh menggunakan MySQL sebagai pangkalan data backend. Cipta pangkalan data bernama "mengundi", dan kemudian buat dua jadual di dalamnya, "pungutan suara" dan "undi".

CREATE DATABASE voting;

CREATE TABLE polls (
    id INT(11) NOT NULL AUTO_INCREMENT,
    question VARCHAR(255) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE votes (
    id INT(11) NOT NULL AUTO_INCREMENT,
    poll_id INT(11) NOT NULL,
    option_id INT(11) NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (poll_id) REFERENCES polls(id)
);

Seterusnya, kita perlu membuat halaman undian yang memaparkan soalan dan pilihan undian dan merekodkan undian pengguna. Cipta fail bernama "index.php" dan tambahkan kod berikut:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "voting";

// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);

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

// 获取投票问题和选项
$sql = "SELECT id, question FROM polls";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 输出每个投票问题和选项
    while($row = $result->fetch_assoc()) {
        echo "<h2>".$row['question']."</h2>";

        $optionsSql = "SELECT id, option_name FROM options WHERE poll_id=".$row['id'];
        $optionsResult = $conn->query($optionsSql);

        if ($optionsResult->num_rows > 0) {
            // 输出每个选项的投票按钮
            while($optionRow = $optionsResult->fetch_assoc()) {
                echo '<input type="radio" name="poll'.$row['id'].'" value="'.$optionRow['id'].'"> '.$optionRow['option_name'].'<br>';
            }
        }
    }
    echo '<input type="submit" value="提交投票">';
} else {
    echo "暂无投票问题";
}

$conn->close();
?>

Kod di atas akan mendapat soalan undian dan pilihan berkaitan daripada pangkalan data dan memaparkannya pada halaman. Setiap pilihan menjana butang radio untuk dipilih oleh pengguna. Selepas pengguna memilih pilihan, mereka boleh mengklik butang "Serahkan Undi" untuk menyerahkan undian mereka.

Seterusnya, kita perlu memproses undian pengguna dan log masuk ke dalam pangkalan data. Ubah suai fail "index.php" dan tambahkan kod berikut:

<?php
// ...

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $pollId = $_POST['pollId'];
    $optionId = $_POST['optionId'];

    $sql = "INSERT INTO votes (poll_id, option_id) VALUES ('$pollId', '$optionId')";

    if ($conn->query($sql) === TRUE) {
        echo "投票成功";
    } else {
        echo "投票失败";
    }
}

$conn->close();
?>

Kod di atas akan mengendalikan permintaan POST butang "Serah Undi" dan memasukkan rekod pengundian ke dalam jadual "undi".

Selain fungsi pengundian, kami juga boleh menambah fungsi lain untuk menambah baik penyesuaian platform pengundian. Sebagai contoh, menambah halaman pengurusan bahagian belakang membolehkan anda membuat soalan dan pilihan pengundian secara dinamik serta melihat hasil pengundian. Kami boleh mencipta fail yang dipanggil "admin.php" dan menambah kod berikut di dalamnya:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "voting";

// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);

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

// 查询所有投票问题
$sql = "SELECT * FROM polls";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 输出每个投票问题和选项
    while($row = $result->fetch_assoc()) {
        echo "<h2>".$row['question']."</h2>";

        $optionsSql = "SELECT * FROM options WHERE poll_id=".$row['id'];
        $optionsResult = $conn->query($optionsSql);

        if ($optionsResult->num_rows > 0) {
            // 输出每个选项和对应的投票数
            while($optionRow = $optionsResult->fetch_assoc()) {
                $voteCountSql = "SELECT COUNT(*) AS count FROM votes WHERE poll_id=".$row['id']." AND option_id=".$optionRow['id'];
                $voteCountResult = $conn->query($voteCountSql);
                $voteCount = $voteCountResult->fetch_assoc()['count'];

                echo $optionRow['option_name'].": ".$voteCount."<br>";
            }
        }
    }
} else {
    echo "暂无投票问题";
}

$conn->close();
?>

Kod di atas akan mendapat semua soalan undian daripada pangkalan data dan memaparkan setiap pilihan serta bilangan undian yang sepadan.

Di atas ialah pelaksanaan platform pengundian dalam talian PHP yang mudah disesuaikan. Dengan menggunakan contoh kod ringkas yang ditulis dalam PHP, kita boleh melaksanakan fungsi seperti paparan undian, rakaman dan statistik. Anda boleh menyesuaikan dan mengembangkan lagi platform ini mengikut keperluan anda sendiri, seperti menambah fungsi seperti log masuk pengguna, tarikh akhir pengundian dan paparan carta keputusan pengundian untuk memenuhi keperluan pengundian dalam senario yang berbeza.

Atas ialah kandungan terperinci Bina platform pengundian dalam talian PHP yang boleh disesuaikan. 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