在互联网时代,问卷调查是获取用户反馈、市场调研的重要手段。本文将带你一步步用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)