Penjelasan terperinci sistem pengundian dalam talian yang dibangunkan oleh PHP

王林
Lepaskan: 2023-08-09 15:30:01
asal
1560 orang telah melayarinya

Penjelasan terperinci sistem pengundian dalam talian yang dibangunkan oleh PHP

Penjelasan terperinci tentang sistem pengundian dalam talian yang dibangunkan oleh PHP

Sistem pengundian adalah fungsi yang sangat biasa di Internet Ia digunakan secara meluas dalam pelbagai aktiviti dalam talian, tinjauan, pilihan raya dan senario lain. Artikel ini akan memperkenalkan secara terperinci cara menggunakan PHP untuk membangunkan sistem pengundian dalam talian yang mudah.

  1. Buat pangkalan data

Pertama, kita perlu mencipta pangkalan data untuk menyimpan data berkaitan pengundian. Katakan pangkalan data kami dinamakan "undi" dan mengandungi dua jadual berikut:

  • "polls": jadual yang digunakan untuk menyimpan maklumat seperti topik pengundian dan tarikh akhir.
  • "pilihan": Jadual yang digunakan untuk menyimpan setiap pilihan pengundian, berkaitan dengan jadual tinjauan pendapat melalui kunci asing.

Berikut ialah kod contoh SQL untuk mencipta pangkalan data dan jadual:

CREATE DATABASE vote;

USE vote;

CREATE TABLE polls (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  deadline DATE NOT NULL
);

CREATE TABLE options (
  id INT AUTO_INCREMENT PRIMARY KEY,
  poll_id INT,
  title VARCHAR(255) NOT NULL,
  votes INT DEFAULT 0,
  FOREIGN KEY (poll_id) REFERENCES polls(id)
);
Salin selepas log masuk
  1. Menulis halaman mengundi

Langkah seterusnya ialah menulis halaman hadapan yang memaparkan topik dan pilihan pengundian, dan menerima undian daripada pengguna. Berikut ialah contoh kod HTML dan PHP yang mudah:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>在线投票系统</title>
</head>
<body>
  <h1>投票主题</h1>
  
  <?php
  // 连接数据库
  $conn = mysqli_connect("localhost", "username", "password", "vote");
  
  // 查询投票主题和选项
  $poll_id = $_GET['poll_id'];
  $poll_query = "SELECT * FROM polls WHERE id = $poll_id";
  $poll_result = mysqli_query($conn, $poll_query);
  
  if (mysqli_num_rows($poll_result) > 0) {
    // 显示投票主题
    $poll = mysqli_fetch_assoc($poll_result);
    echo "<h2>{$poll['title']}</h2>";
    
    // 查询投票选项
    $options_query = "SELECT * FROM options WHERE poll_id = $poll_id";
    $options_result = mysqli_query($conn, $options_query);
    
    if (mysqli_num_rows($options_result) > 0) {
      // 显示投票选项
      echo "<form method='POST' action='vote.php'>";
      while ($option = mysqli_fetch_assoc($options_result)) {
        echo "<input type='radio' name='option_id' value='{$option['id']}'>{$option['title']}<br>";
      }
      echo "<input type='hidden' name='poll_id' value='$poll_id'>";
      echo "<input type='submit' value='提交投票'>";
      echo "</form>";
    } else {
      echo "没有投票选项。";
    }
  } else {
    echo "投票主题不存在。";
  }
  
  // 关闭数据库连接
  mysqli_close($conn);
  ?>
  
</body>
</html>
Salin selepas log masuk
  1. Mengendalikan permintaan pengundian

Dalam halaman pengundian, kami menggunakan pengendali yang dipanggil "vote.php" untuk menerima dan memproses permintaan pengundian pengguna. Berikut ialah contoh kod:

<?php
// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "vote");

// 根据用户的投票选项,更新选项的票数
$option_id = $_POST['option_id'];
$poll_id = $_POST['poll_id'];

$update_query = "UPDATE options SET votes = votes + 1 WHERE id = $option_id";
mysqli_query($conn, $update_query);

// 关闭数据库连接
mysqli_close($conn);

// 重定向到结果页面
header("Location: results.php?poll_id=$poll_id");
exit();
?>
Salin selepas log masuk

Apabila pengguna menyerahkan undian, vote.php akan mengemas kini bilangan undian untuk pilihan dan melencong ke halaman bernama "results.php" untuk memaparkan keputusan undian.

  1. Paparkan keputusan pengundian

Akhir sekali, kita perlu menulis halaman keputusan untuk memaparkan keputusan pengundian. Berikut ialah contoh kod PHP mudah:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>投票结果</title>
</head>
<body>
  <h1>投票结果</h1>
  
  <?php
  // 连接数据库
  $conn = mysqli_connect("localhost", "username", "password", "vote");
  
  // 查询投票主题和选项
  $poll_id = $_GET['poll_id'];
  $poll_query = "SELECT * FROM polls WHERE id = $poll_id";
  $poll_result = mysqli_query($conn, $poll_query);
  
  if (mysqli_num_rows($poll_result) > 0) {
    // 显示投票主题
    $poll = mysqli_fetch_assoc($poll_result);
    echo "<h2>{$poll['title']}(截止日期:{$poll['deadline']})</h2>";
    
    // 查询投票选项
    $options_query = "SELECT * FROM options WHERE poll_id = $poll_id";
    $options_result = mysqli_query($conn, $options_query);
    
    if (mysqli_num_rows($options_result) > 0) {
      // 显示投票选项和票数
      while ($option = mysqli_fetch_assoc($options_result)) {
        echo "{$option['title']}: {$option['votes']} 票<br>";
      }
    } else {
      echo "没有投票选项。";
    }
  } else {
    echo "投票主题不存在。";
  }
  
  // 关闭数据库连接
  mysqli_close($conn);
  ?>
  
</body>
</html>
Salin selepas log masuk

Di atas adalah pengenalan terperinci kepada sistem pengundian dalam talian ringkas yang dibangunkan menggunakan PHP. Dengan menggabungkan pangkalan data dan halaman hadapan, kami hanya boleh melaksanakan fungsi pengundian pengguna dan mengira serta memaparkan keputusan pengundian. Sudah tentu, sistem pengundian sebenar mungkin memerlukan lebih banyak ciri dan langkah keselamatan untuk memenuhi keperluan khusus, tetapi contoh yang disediakan dalam artikel ini boleh digunakan sebagai rujukan untuk memulakan membangunkan sistem pengundian asas.

Atas ialah kandungan terperinci Penjelasan terperinci sistem pengundian dalam talian yang dibangunkan oleh PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan