首頁  >  文章  >  後端開發  >  建立一個可客製化的PHP線上投票平台

建立一個可客製化的PHP線上投票平台

王林
王林原創
2023-08-08 09:25:01796瀏覽

建立一個可客製化的PHP線上投票平台

建立一個可客製化的PHP線上投票平台

隨著網路的普及和技術的不斷發展,線上投票已經成為一種常見的方式來收集大眾的意見和決策。建立一個可客製化的PHP線上投票平台,將為用戶提供一個靈活、高效和安全的投票環境。本文將介紹如何使用PHP編寫一個簡單的線上投票平台,並提供程式碼範例。

首先,我們需要建立一個資料庫來儲存投票相關的資料。我們可以使用MySQL作為後端資料庫。建立一個名為"voting"的資料庫,然後在其中建立兩張表,分別是"polls"和"votes"。

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

接下來,我們需要建立一個投票頁面,用於顯示投票問題和選項,並記錄使用者的投票。建立一個名為"index.php"的文件,並新增以下程式碼:

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

上述程式碼會從資料庫中取得投票問題和相關選項,並將其顯示在頁面上。每個選項都會產生一個單選框,供使用者選擇。用戶選擇一個選項後,可以點擊"提交投票"按鈕提交投票。

接下來,我們需要處理使用者的投票並將其記錄到資料庫中。修改"index.php"文件,新增以下程式碼:

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

上述程式碼將處理"提交投票"按鈕的POST請求,並將投票記錄插入到"votes"表中。

除了投票功能,我們還可以加入其他功能來提升投票平台的客製化。例如新增後台管理頁面,可以動態建立投票問題和選項,以及查看投票結果。我們可以建立一個名為"admin.php"的文件,並在其中新增以下程式碼:

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

上述程式碼會從資料庫中取得所有投票問題,並顯示每個選項及其對應的投票數。

以上就是一個簡單的可客製化的PHP線上投票平台的實作。透過使用PHP編寫的簡單程式碼範例,我們可以實現投票的展示、記錄和統計等功能。你可以根據自己的需求進一步客製化和擴展這個平台,例如新增使用者登入、投票截止時間、投票結果的圖表展示等功能,以滿足不同場景下的投票需求。

以上是建立一個可客製化的PHP線上投票平台的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn