Maison >développement back-end >tutoriel php >Construire une plateforme de vote en ligne PHP personnalisable

Construire une plateforme de vote en ligne PHP personnalisable

王林
王林original
2023-08-08 09:25:01852parcourir

Construire une plateforme de vote en ligne PHP personnalisable

Créez une plateforme de vote en ligne PHP personnalisable

Avec la popularité d'Internet et le développement continu de la technologie, le vote en ligne est devenu un moyen courant de recueillir les opinions et les décisions publiques. La création d'une plateforme de vote en ligne PHP personnalisable offrira aux utilisateurs un environnement de vote flexible, efficace et sécurisé. Cet article explique comment utiliser PHP pour écrire une plateforme de vote en ligne simple et fournit des exemples de code.

Tout d'abord, nous devons créer une base de données pour stocker les données liées au vote. Nous pouvons utiliser MySQL comme base de données backend. Créez une base de données nommée « vote », puis créez-y deux tables, « sondages » et « 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)
);

Ensuite, nous devons créer une page de vote qui affiche les questions et options de vote et enregistre les votes de l'utilisateur. Créez un fichier appelé "index.php" et ajoutez le code suivant :

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

Le code ci-dessus récupérera les questions de vote et les options associées de la base de données et les affichera sur la page. Chaque option génère un bouton radio que l'utilisateur peut sélectionner. Une fois que l'utilisateur a sélectionné une option, il peut cliquer sur le bouton « Soumettre le vote » pour soumettre son vote.

Ensuite, nous devons traiter les votes des utilisateurs et les enregistrer dans la base de données. Modifiez le fichier "index.php" et ajoutez le code suivant :

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

Le code ci-dessus gérera la requête POST du bouton "Soumettre le vote" et insérera l'enregistrement du vote dans le tableau "votes".

En plus de la fonction de vote, nous pouvons également ajouter d'autres fonctions pour améliorer la personnalisation de la plateforme de vote. Par exemple, l'ajout d'une page de gestion backend vous permet de créer dynamiquement des questions et des options de vote et d'afficher les résultats du vote. Nous pouvons créer un fichier appelé "admin.php" et y ajouter le code suivant :

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

Le code ci-dessus récupérera toutes les questions de vote de la base de données et affichera chaque option et son nombre de votes correspondant.

Ce qui précède est la mise en œuvre d'une plateforme de vote en ligne PHP simple et personnalisable. En utilisant des exemples de code simples écrits en PHP, nous pouvons implémenter des fonctions telles que l'affichage des votes, l'enregistrement et les statistiques. Vous pouvez personnaliser et étendre davantage cette plate-forme en fonction de vos propres besoins, par exemple en ajoutant des fonctions telles que la connexion des utilisateurs, la date limite de vote et l'affichage graphique des résultats du vote pour répondre aux besoins de vote dans différents scénarios.

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