当前位置:首页 > PHP

php实现问卷制作

2026-02-16 11:56:06PHP

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

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

php实现问卷制作

数据库设计

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

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>';
}

后端答案处理

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

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实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…