PHP poll

Giới thiệu về PHP Poll

PHP Poll là một ứng dụng đơn giản giúp bạn tạo một cuộc khảo sát (poll) trên trang web của mình. Những cuộc khảo sát này thường được sử dụng để thu thập ý kiến từ người dùng về các vấn đề cụ thể, sản phẩm hoặc dịch vụ.

Setup cơ bản

Để bắt đầu, bạn cần có môi trường PHP hoạt động, chẳng hạn như XAMPP hoặc WAMP. Sau đó, bạn cần tạo một cơ sở dữ liệu để lưu trữ các câu hỏi và đáp án của cuộc khảo sát.

Bước 1: Tạo cơ sở dữ liệu

CREATE DATABASE poll_db;
USE poll_db;

CREATE TABLE polls (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE options (
    id INT AUTO_INCREMENT PRIMARY KEY,
    poll_id INT NOT NULL,
    option_text VARCHAR(255) NOT NULL,
    votes INT DEFAULT 0,
    FOREIGN KEY (poll_id) REFERENCES polls(id)
);

Bước 2: Tạo form để thêm cuộc khảo sát

Bạn có thể tạo một form HTML để thêm các câu hỏi và đáp án vào cơ sở dữ liệu.

Bước 3: Lưu dữ liệu vào cơ sở dữ liệu

Trong tệp add_poll.php, bạn sẽ xử lý việc lưu trữ các câu hỏi và đáp án vào cơ sở dữ liệu như sau:

$conn = new mysqli('localhost', 'username', 'password', 'poll_db');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $question = $_POST['question'];
    $option1 = $_POST['option1'];
    $option2 = $_POST['option2'];
    
    // Thêm câu hỏi
    $stmt = $conn->prepare("INSERT INTO polls (question) VALUES (?)");
    $stmt->bind_param("s", $question);
    $stmt->execute();
    
    $poll_id = $stmt->insert_id;
    
    // Thêm các đáp án
    $stmt = $conn->prepare("INSERT INTO options (poll_id, option_text) VALUES (?, ?)");
    $stmt->bind_param("is", $poll_id, $option1);
    $stmt->execute();

    $stmt->bind_param("is", $poll_id, $option2);
    $stmt->execute();

    echo "Thêm khảo sát thành công!";
}

Hiển thị cuộc khảo sát

Để hiển thị cuộc khảo sát, bạn có thể tạo một trang mới để lấy dữ liệu từ cơ sở dữ liệu và hiển thị dưới dạng danh sách.

$result = $conn->query("SELECT * FROM polls");
while ($row = $result->fetch_assoc()) {
    echo "

" . $row['question'] . "

"; $poll_id = $row['id']; $options = $conn->query("SELECT * FROM options WHERE poll_id = $poll_id"); while ($option = $options->fetch_assoc()) { echo "

" . $option['option_text'] . " - " . $option['votes'] . " votes

"; } }

Đếm phiếu bầu

Khi người dùng chọn một đáp án và gửi phiếu bầu, bạn cần cập nhật số lượng phiếu bầu trong cơ sở dữ liệu.

if (isset($_POST['vote'])) {
    $option_id = $_POST['option_id'];
    $stmt = $conn->prepare("UPDATE options SET votes = votes + 1 WHERE id = ?");
    $stmt->bind_param("i", $option_id);
    $stmt->execute();
    
    echo "Cảm ơn bạn đã tham gia bỏ phiếu!";
}

Kết luận

PHP Poll là một công cụ hữu ích để thu thập ý kiến từ người dùng. Bạn có thể mở rộng ứng dụng này bằng cách thêm các tính năng như tính năng an toàn, thống kê, và hiển thị kết quả theo đồ họa.