> 백엔드 개발 > PHP 튜토리얼 > PHP를 사용하여 온라인 투표 및 폴링 기능을 구현하는 방법

PHP를 사용하여 온라인 투표 및 폴링 기능을 구현하는 방법

PHPz
풀어 주다: 2023-09-05 10:58:01
원래의
890명이 탐색했습니다.

如何使用 PHP 实现在线投票和民意调查功能

PHP를 사용하여 온라인 투표 및 여론 조사 기능을 구현하는 방법

현대 사회에서 여론 조사와 온라인 투표는 여론을 얻고 의사 결정을 내리는 중요한 수단이 되었습니다. 웹 개발에 널리 사용되는 프로그래밍 언어인 PHP는 이러한 기능을 달성하기 위한 풍부한 도구와 기능을 제공합니다. 이 기사에서는 PHP를 사용하여 온라인 투표 및 폴링 기능을 구현하는 방법을 소개합니다.

  1. 데이터베이스 설계

먼저 투표 및 설문조사 관련 데이터를 저장할 데이터베이스를 설계해야 합니다. 설문 제목, 옵션, 각 옵션에 대한 투표 수를 포함한 투표 정보를 저장하기 위해 "polls"라는 테이블을 만들 수 있습니다. 샘플 코드는 다음과 같습니다.

CREATE TABLE polls (

id INT(11) AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
options TEXT NOT NULL,
votes TEXT DEFAULT '{"option1":0, "option2":0}'
로그인 후 복사

)

  1. 설문조사 및 설문조사 양식 표시

다음으로 현재 사용 가능한 설문조사 및 설문조사 양식을 표시하는 PHP 페이지를 만들 수 있습니다. SELECT 문을 사용하여 데이터베이스에서 설문조사 목록을 가져와 페이지에 표시할 수 있습니다. 샘플 코드는 다음과 같습니다.

//데이터베이스에 연결
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database ";

$ 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["title"]."</h2>";
    $options = json_decode($row["options"]);
    echo "<form action="vote.php" method="POST">";
    foreach ($options as $option) {
        echo "<input type="radio" name="option" value="$option">$option<br>";
    }
    echo "<input type="hidden" name="poll_id" value="".$row["id"]."">";
    echo "<input type="submit" value="投票">";
    echo "</form>";
}
로그인 후 복사

} else {

echo "暂无可用的调查。";
로그인 후 복사
로그인 후 복사

}
$conn->close();
?>

  1. 투표 요청 처리

사용자가 투표 양식을 제출하면 투표 요청을 처리하고 데이터베이스의 투표 카운터를 업데이트합니다. 샘플 코드는 다음과 같습니다.

// 투표 옵션 및 설문조사 ID 가져오기
$option = $_POST["option"];
$poll_id = $_POST["poll_id"];

// 데이터베이스에 연결
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname );
if ($conn->connect_error) {

die("连接失败: " . $conn->connect_error);
로그인 후 복사
로그인 후 복사
로그인 후 복사

}

// 현재 투표 정보 가져오기
$sql = "SELECT * FROM polls WHERE id = $poll_id";
$result = $conn-> 쿼리($sql);
if ($result->num_rows > 0) {

$row = $result->fetch_assoc();
$votes = json_decode($row["votes"], true);

// 更新投票计数器
$votes[$option]++;
$votes_json = json_encode($votes);

// 更新数据库中的投票信息
$sql = "UPDATE polls SET votes = '$votes_json' WHERE id = $poll_id";
if ($conn->query($sql) === TRUE) {
    echo "投票成功!";
} else {
    echo "投票失败: " . $conn->error;
}
로그인 후 복사

} else {

echo "调查不存在。";
로그인 후 복사

}

$conn->close();
?>

  1. 투표 결과 표시

마지막으로 투표 결과를 표시할 PHP 페이지를 만들어야 합니다. SELECT 문을 사용하여 데이터베이스에서 투표 정보를 가져와 페이지에 표시할 수 있습니다. 샘플 코드는 다음과 같습니다.

//데이터베이스에 연결
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database ";

$ 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["title"]."</h2>";
    $votes = json_decode($row["votes"], true);
    $total_votes = array_sum($votes);
    foreach ($votes as $option => $vote_count) {
        $percentage = ($vote_count / $total_votes) * 100;
        echo "<p>$option : $vote_count 票 ($percentage%)</p>";
    }
}
로그인 후 복사

} else {

echo "暂无可用的调查。";
로그인 후 복사
로그인 후 복사

}
$conn ->close();
?>

위 단계를 통해 PHP를 사용하여 온라인 투표 및 투표 기능을 구현할 수 있습니다. 특정 프로젝트의 요구 사항을 충족하기 위해 확인, 권한 제어 및 기타 기능을 추가하는 등 필요에 따라 확장하고 사용자 정의할 수 있습니다.

이 기사가 도움이 되기를 바랍니다!

위 내용은 PHP를 사용하여 온라인 투표 및 폴링 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿