PHP在线问卷调查系统实战指南

admin 2025-01-14 594 0

在互联网时代,问卷调查是获取用户反馈、市场调研的重要手段。本文将带你一步步用PHP搭建一个功能完善的在线问卷调查系统,助你轻松收集和分析数据。

PHP在线问卷调查系统实战指南

项目准备

首先,确保你的开发环境已安装PHP和MySQL。你可以使用XAMPP、WAMP等集成环境快速搭建。

1. 数据库设计

在MySQL中创建一个名为survey的数据库,并设计以下表结构:

  • questions:存储问卷问题

    • id (INT, PRIMARY KEY)
    • question_text (TEXT)
    • question_type (VARCHAR, 如单选、多选)
  • options:存储问题选项

    • id (INT, PRIMARY KEY)
    • question_id (INT, FOREIGN KEY)
    • option_text (TEXT)
  • responses:存储用户回答

    • id (INT, PRIMARY KEY)
    • question_id (INT, FOREIGN KEY)
    • option_id (INT, FOREIGN KEY)
    • user_ip (VARCHAR)

2. 创建数据库连接

在PHP中创建一个db.php文件,用于连接数据库:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "survey";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

功能实现

1. 设计问卷表单

创建一个index.php文件,用于展示问卷表单:

<?php
include 'db.php';

$sql = "SELECT * FROM questions";
$result = $conn->query($sql);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>问卷调查</title>
</head>
<body>
    <h1>欢迎参与问卷调查</h1>
    <form action="submit.php" method="post">
        <?php
        while($row = $result->fetch_assoc()) {
            echo "<div>";
            echo "<p>" . $row['question_text'] . "</p>";
            $question_id = $row['id'];
            $options_sql = "SELECT * FROM options WHERE question_id = $question_id";
            $options_result = $conn->query($options_sql);
            while($option = $options_result->fetch_assoc()) {
                echo "<input type='radio' name='question_$question_id' value='" . $option['id'] . "'>" . $option['option_text'] . "<br>";
            }
            echo "</div>";
        }
        ?>
        <input type="submit" value="提交">
    </form>
</body>
</html>

2. 处理表单提交

创建一个submit.php文件,用于处理用户提交的数据:

<?php
include 'db.php';

foreach ($_POST as $key => $value) {
    $question_id = str_replace("question_", "", $key);
    $user_ip = $_SERVER['REMOTE_ADDR'];
    $sql = "INSERT INTO responses (question_id, option_id, user_ip) VALUES ('$question_id', '$value', '$user_ip')";
    $conn->query($sql);
}

echo "<h1>感谢您的参与!</h1>";
?>

3. 数据统计与分析

创建一个results.php文件,用于展示问卷结果:

<?php
include 'db.php';

$sql = "SELECT q.question_text, o.option_text, COUNT(r.id) AS count FROM responses r JOIN options o ON r.option_id = o.id JOIN questions q ON r.question_id = q.id GROUP BY r.option_id";
$result = $conn->query($sql);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>问卷结果</title>
</head>
<body>
    <h1>问卷调查结果</h1>
    <table border="1">
        <tr>
            <th>问题</th>
            <th>选项</th>
            <th>选择人数</th>
        </tr>
        <?php
        while($row = $result->fetch_assoc()) {
            echo "<tr>";
            echo "<td>" . $row['question_text'] . "</td>";
            echo "<td>" . $row['option_text'] . "</td>";
            echo "<td>" . $row['count'] . "</td>";
            echo "</tr>";
        }
        ?>
    </table>
</body>
</html>

总结

通过以上步骤,你已经成功搭建了一个基于PHP的在线问卷调查系统。你可以根据实际需求进一步扩展功能,如增加用户登录、多页问卷、数据导出等。希望这篇文章能为你提供有价值的参考

评论(0)