>  기사  >  백엔드 개발  >  맞춤형 PHP 온라인 투표 플랫폼 구축

맞춤형 PHP 온라인 투표 플랫폼 구축

王林
王林원래의
2023-08-08 09:25:01814검색

맞춤형 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 요청을 처리하고 투표 기록을 "투표" 테이블에 삽입합니다.

투표 기능 외에도 투표 플랫폼의 사용자 정의를 개선하기 위해 다른 기능을 추가할 수도 있습니다. 예를 들어 백엔드 관리 페이지를 추가하면 투표 질문과 옵션을 동적으로 생성하고 투표 결과를 볼 수 있습니다. "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으로 문의하세요.