ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して強力なオンライン投票プラットフォームを作成する

PHP を使用して強力なオンライン投票プラットフォームを作成する

WBOY
WBOYオリジナル
2023-08-08 10:54:33918ブラウズ

PHP を使用して強力なオンライン投票プラットフォームを作成する

PHP を使用して強力なオンライン投票プラットフォームを作成する

はじめに:
インターネットの発展に伴い、オンライン投票は一般的で便利な投票方法となりました。意見を述べ、決定を下します。この記事では、PHP を使用して、ユーザーが簡単に投票に参加して結果を確認できる強力なオンライン投票プラットフォームを作成します。この機能を実現するには、HTML、CSS、PHP を組み合わせて使用​​します。

ステップ 1: データベースを作成する
まず、投票関連データを保存するデータベースを作成する必要があります。 MySQL データベースを使用してこのタスクを実行できます。 MySQL で「voting_platform」という名前のデータベースを作成し、その中に 2 つのテーブルを作成します。1 つは投票の質問と選択肢を保存するため、もう 1 つはユーザーの投票結果を保存するためです。

投票の質問とオプションのテーブルを作成します:

CREATE TABLE questions (
id int(11) NOT NULL AUTO_INCREMENT,
question varchar(255) NOT NULL,
主キー (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE options (
id int(11) NOT NULL AUTO_INCREMENT,
question_id int(11) NOT NULL,
option varchar(255) NOT NULL,
主キー (id),
外部キー (question_id) 参照 questions (id ) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ユーザー投票結果テーブルを作成します:

CREATE TABLE votes (
id int(11) NOT NULL AUTO_INCREMENT,
question_id int(11) NOT NULL,
option_id int(11) NOT NULL ,
主キー (id),
外部キー (question_id) 削除カスケード時の questions (id) の参照,
外部キー (option_id) 参照 options (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ステップ 2: 投票プラットフォーム ページを作成する
次に、投票プラットフォームのフロントエンド ページの作成を開始できます。 HTML と CSS を使用して、美しくユーザーフレンドリーなインターフェイスを作成します。このページには、投票の質問と選択肢が表示され、ユーザーが選択できる投票ボタンが表示されます。同時に投票結果も表​​示します。

<!DOCTYPE html>
<html>
<head>
  <title>在线投票平台</title>
  <style>
    /* 样式定义 */
  </style>
</head>
<body>
  <h1>在线投票平台</h1>
  
  <?php
    // 连接到数据库
    $conn = new mysqli('localhost', 'username', 'password', 'voting_platform');
  
    // 检查连接是否成功
    if ($conn->connect_error) {
      die("连接数据库失败: " . $conn->connect_error);
    }
  
    // 查询投票问题和选项
    $sql = "SELECT id, question FROM questions";
    $result = $conn->query($sql);
  
    if ($result->num_rows > 0) {
      // 输出投票问题
      while($row = $result->fetch_assoc()) {
        echo "<h2>" . $row["question"] . "</h2>";
  
        // 查询投票选项
        $sql = "SELECT id, option FROM options WHERE question_id=" . $row["id"];
        $options = $conn->query($sql);
  
        if ($options->num_rows > 0) {
          // 输出投票选项
          while($option = $options->fetch_assoc()) {
            echo "<input type='radio' name='option_" . $row["id"] . "' value='" . $option["id"] . "'>" . $option["option"] . "<br>";
          }
        }
  
        echo "<button onclick='vote(" . $row["id"] . ")'>投票</button>";
      }
    }
  
    // 关闭数据库连接
    $conn->close();
  ?>
  
  <h2>投票结果</h2>
  
  <?php
    // 连接到数据库
    $conn = new mysqli('localhost', 'username', 'password', 'voting_platform');
  
    // 检查连接是否成功
    if ($conn->connect_error) {
      die("连接数据库失败: " . $conn->connect_error);
    }
  
    // 查询投票结果
    $sql = "SELECT questions.id, questions.question, options.option, COUNT(votes.id) as count FROM questions JOIN options ON questions.id = options.question_id LEFT JOIN votes ON options.id = votes.option_id GROUP BY options.id";
    $result = $conn->query($sql);
  
    if ($result->num_rows > 0) {
      // 输出投票结果
      while($row = $result->fetch_assoc()) {
        echo "<p>" . $row["question"] . "<br>";
        echo $row["option"] . ": " . $row["count"] . " 票</p>";
      }
    }
  
    // 关闭数据库连接
    $conn->close();
  ?>
  
  <script>
    // 使用AJAX发送投票请求
    function vote(questionId) {
      var options = document.getElementsByName('option_' + questionId);
      var selectedOptionId;
      for (var i = 0; i < options.length; i++) {
        if (options[i].checked) {
          selectedOptionId = options[i].value;
          break;
        }
      }
  
      if (selectedOptionId) {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
          if (xhr.readyState === XMLHttpRequest.DONE) {
            if (xhr.status === 200) {
              alert("投票成功!");
              location.reload(); // 刷新页面以更新投票结果
            } else {
              alert("投票失败!");
            }
          }
        };
  
        xhr.open('POST', 'vote.php', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send('question_id=' + questionId + '&option_id=' + selectedOptionId);
      } else {
        alert("请选择一个选项进行投票!");
      }
    }
  </script>
</body>
</html>

ステップ 3: 投票リクエストを処理する
「vote.php」という名前の PHP ファイルを作成して、投票リクエストを処理し、結果をデータベースに保存します。

<?php
  // 获取问题ID和选项ID
  $questionId = $_POST['question_id'];
  $optionId = $_POST['option_id'];
  
  // 连接到数据库
  $conn = new mysqli('localhost', 'username', 'password', 'voting_platform');
  
  // 检查连接是否成功
  if ($conn->connect_error) {
    die("连接数据库失败: " . $conn->connect_error);
  }
  
  // 插入投票结果到数据库
  $sql = "INSERT INTO votes (question_id, option_id) VALUES ($questionId, $optionId)";
  
  if ($conn->query($sql) === TRUE) {
    echo "投票成功!";
  } else {
    echo "投票失败!";
  }
  
  // 关闭数据库连接
  $conn->close();
?>

結論:
上記の手順により、強力なオンライン投票プラットフォームを作成することに成功しました。ユーザーは質問と対応するオプションを選択して投票でき、投票結果を表示することもできます。 PHP とデータベースを使用することで、シンプルかつ強力な投票プラットフォームを実装し、意思決定と意見収集のための便利で効率的なツールを提供しました。

以上がPHP を使用して強力なオンライン投票プラットフォームを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。