首頁 > 後端開發 > php教程 > 如何使用PHP開發簡單的問卷調查功能

如何使用PHP開發簡單的問卷調查功能

WBOY
發布: 2023-09-21 14:06:01
原創
1327 人瀏覽過

如何使用PHP開發簡單的問卷調查功能

如何使用PHP開發簡單的問卷調查功能,需要具體程式碼範例

#問卷調查是一種常見的資料收集方法,廣泛應用於市場調查、學術研究、民意監測等領域。在網路時代,透過網頁形式來進行問卷調查已成為主流。 PHP作為常用的伺服器端腳本語言,具備處理表單資料和資料庫操作等功能,非常適合用來開發簡單的問卷調查功能。

本文將介紹如何使用PHP開發一個簡單的問卷調查功能,包括建立問卷、收集使用者答案和展示調查結果。以下是具體的實施步驟和範例程式碼。

步驟一:建立資料庫表格
首先,我們需要建立一個資料庫來儲存問卷調查的相關資料。可以使用MySQL或其他關係型資料庫來建立以下兩個表:

  1. surveys:用於儲存問卷調查的基本信息,包括問卷標題、描述和建立時間等欄位。

    CREATE TABLE surveys (
     id INT AUTO_INCREMENT PRIMARY KEY,
     title VARCHAR(255) NOT NULL,
     description TEXT,
     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    登入後複製
  2. questions:用於儲存每個問卷的問題以及選項訊息,包括問題內容、問題類型和選項列表等欄位。 survey_id欄位用於和surveys表建立外鍵關聯。

    CREATE TABLE questions (
     id INT AUTO_INCREMENT PRIMARY KEY,
     survey_id INT NOT NULL,
     question TEXT,
     type ENUM('单选', '多选', '文本') NOT NULL,
     options TEXT,
     FOREIGN KEY (survey_id) REFERENCES surveys(id)
    );
    登入後複製

步驟二:建立問卷頁面
接下來,我們需要建立一個用於顯示問卷的網頁。使用者可以在該網頁上選擇答案並提交問卷。以下是一個簡單的問卷頁面範例(survey.php)。

<?php
// 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");

// 获取问卷信息
$surveyId = $_GET['id']; // 从URL参数获取问卷ID
$surveyStmt = $pdo->prepare("SELECT * FROM surveys WHERE id = :id");
$surveyStmt->bindParam(':id', $surveyId);
$surveyStmt->execute();
$survey = $surveyStmt->fetch();

// 获取问题列表
$questionsStmt = $pdo->prepare("SELECT * FROM questions WHERE survey_id = :survey_id");
$questionsStmt->bindParam(':survey_id', $surveyId);
$questionsStmt->execute();
$questions = $questionsStmt->fetchAll();
?>

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $survey['title']; ?></title>
</head>
<body>
    <h1><?php echo $survey['title']; ?></h1>
    <p><?php echo $survey['description']; ?></p>

    <form action="submit.php" method="POST">
        <?php foreach ($questions as $question): ?>
            <h3><?php echo $question['question']; ?></h3>
            <?php if ($question['type'] == '单选' || $question['type'] == '多选'): ?>
                <?php $options = explode("
", $question['options']); ?>
                <?php foreach ($options as $option): ?>
                    <label>
                        <input type="<?php echo $question['type'] == '单选' ? 'radio' : 'checkbox'; ?>" name="answers[<?php echo $question['id']; ?>][]" value="<?php echo $option; ?>">
                        <?php echo $option; ?>
                    </label>
                <?php endforeach; ?>
            <?php else: ?>
                <textarea name="answers[<?php echo $question['id']; ?>]"></textarea>
            <?php endif; ?>
        <?php endforeach; ?>

        <input type="hidden" name="survey_id" value="<?php echo $surveyId; ?>">
        <input type="submit" value="提交">
    </form>
</body>
</html>
登入後複製

步驟三:處理問卷資料
使用者提交問卷後,我們需要將答案資料儲存到資料庫中。以下是一個簡單的資料處理頁面範例(submit.php)。

<?php
// 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");

// 获取问卷ID
$surveyId = $_POST['survey_id'];

// 处理问题答案
foreach ($_POST['answers'] as $questionId => $answer) {
    $answer = is_array($answer) ? implode(', ', $answer) : $answer;
    
    $answerStmt = $pdo->prepare("INSERT INTO answers (survey_id, question_id, answer) VALUES (?, ?, ?)");
    $answerStmt->execute([$surveyId, $questionId, $answer]);
}

// 跳转到结果页面
header("Location: result.php?id=$surveyId");
登入後複製

步驟四:展示調查結果
最後,我們可以建立一個頁面來展示問卷調查的結果。以下是一個簡單的結果頁面範例(result.php)。

<?php
// 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");

// 获取问卷ID
$surveyId = $_GET['id'];

// 获取问卷信息
$surveyStmt = $pdo->prepare("SELECT * FROM surveys WHERE id = :id");
$surveyStmt->bindParam(':id', $surveyId);
$surveyStmt->execute();
$survey = $surveyStmt->fetch();

// 获取问题列表和答案统计
$questionsStmt = $pdo->prepare("
    SELECT q.id, q.question, q.type, q.options, a.answer, COUNT(*) AS count
    FROM questions q
    LEFT JOIN answers a ON q.id = a.question_id
    WHERE q.survey_id = :survey_id
    GROUP BY q.id, a.answer
");
$questionsStmt->bindParam(':survey_id', $surveyId);
$questionsStmt->execute();
$questions = $questionsStmt->fetchAll();
?>

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $survey['title']; ?> - 结果</title>
</head>
<body>
    <h1><?php echo $survey['title']; ?> - 结果</h1>
    
    <?php foreach ($questions as $question): ?>
        <h3><?php echo $question['question']; ?></h3>
        <?php if ($question['type'] == '单选' || $question['type'] == '多选'): ?>
            <?php $options = explode("
", $question['options']); ?>
            <ul>
                <?php foreach ($options as $option): ?>
                    <li><?php echo $option; ?> - <?php echo $question['count']; ?></li>
                <?php endforeach; ?>
            </ul>
        <?php else: ?>
            <p><?php echo $question['answer']; ?></p>
        <?php endif; ?>
    <?php endforeach; ?>
</body>
</html>
登入後複製

使用上述程式碼範例,我們可以快速開發一個簡單的問卷調查功能。使用者可以在問卷頁面選擇答案並提交,系統會將答案儲存到資料庫中,並在結果頁面上展示統計資料。

當然,以上程式碼只是簡單範例,實際專案中可能還需要考慮安全性、資料驗證等問題。同時,可以根據實際需求對程式碼進行最佳化和擴展。

希望這篇文章對你理解和使用PHP開發簡單的問卷調查功能有所幫助!

以上是如何使用PHP開發簡單的問卷調查功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板