当前位置:首页 > PHP

php实现问卷制作

2026-02-16 11:56:06PHP

PHP实现问卷制作的基本步骤

使用PHP创建问卷系统需要结合数据库(如MySQL)存储问题和用户回答,前端HTML/CSS用于展示表单,后端PHP处理逻辑。以下是关键实现方法:

数据库设计

创建问卷相关的数据表结构:

  • surveys表存储问卷基本信息(ID、标题、描述、创建时间等)
  • questions表存储问题(ID、问卷ID、问题类型、题干、选项等)
  • answers表存储用户提交的答案(ID、问题ID、用户ID、答案内容等)
CREATE TABLE surveys (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE questions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    survey_id INT,
    question_type ENUM('text','radio','checkbox') NOT NULL,
    question_text TEXT NOT NULL,
    options TEXT,
    FOREIGN KEY (survey_id) REFERENCES surveys(id)
);

CREATE TABLE answers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question_id INT,
    user_id INT,
    answer_text TEXT,
    FOREIGN KEY (question_id) REFERENCES questions(id)
);

前端表单生成

根据问题类型动态生成HTML表单:

// 获取问卷问题
$survey_id = $_GET['id'];
$questions = $pdo->query("SELECT * FROM questions WHERE survey_id = $survey_id");

foreach ($questions as $q) {
    echo '<div class="question">';
    echo '<label>'.$q['question_text'].'</label>';

    switch ($q['question_type']) {
        case 'text':
            echo '<input type="text" name="q'.$q['id'].'">';
            break;
        case 'radio':
            $options = json_decode($q['options']);
            foreach ($options as $opt) {
                echo '<input type="radio" name="q'.$q['id'].'" value="'.$opt.'"> '.$opt;
            }
            break;
        case 'checkbox':
            $options = json_decode($q['options']);
            foreach ($options as $opt) {
                echo '<input type="checkbox" name="q'.$q['id'].'[]" value="'.$opt.'"> '.$opt;
            }
            break;
    }
    echo '</div>';
}

后端答案处理

接收表单提交并存储答案:

php实现问卷制作

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $user_id = 1; // 实际应用中从会话获取

    foreach ($_POST as $key => $value) {
        if (strpos($key, 'q') === 0) {
            $question_id = substr($key, 1);

            // 处理多选答案
            if (is_array($value)) {
                $value = json_encode($value);
            }

            $stmt = $pdo->prepare("INSERT INTO answers (question_id, user_id, answer_text) 
                                 VALUES (?, ?, ?)");
            $stmt->execute([$question_id, $user_id, $value]);
        }
    }

    echo '问卷提交成功!';
}

安全增强措施

  1. 使用预处理语句防止SQL注入
  2. 对用户输入进行过滤和验证
  3. 实现CSRF保护
  4. 设置合理的权限控制
// 示例:输入过滤
$clean_input = filter_input(INPUT_POST, 'fieldname', FILTER_SANITIZE_STRING);

扩展功能建议

  1. 添加问卷截止日期功能
  2. 实现问题逻辑跳转(根据前题答案显示不同后续问题)
  3. 生成统计图表展示结果
  4. 支持导出问卷数据为Excel或CSV

通过以上方法,可以构建一个基础的PHP问卷系统。实际开发中可根据需求进一步扩展功能和完善用户体验。

标签: 问卷php
分享给朋友:

相关文章

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (f…