如何使用PHP開發簡單的問卷調查功能,需要具體代碼示例
問卷調查是一種常見的數據收集方法,廣泛應用于市場調研、學術研究、輿情監測等領域。在網絡時代,通過網頁形式來進行問卷調查已成為主流。PHP作為一種常用的服務器端腳本語言,具備處理表單數據和數據庫操作等功能,非常適合用來開發簡單的問卷調查功能。
本文將介紹如何使用PHP開發一個簡單的問卷調查功能,包括創建問卷、收集用戶回答和展示調查結果。以下是具體的實施步驟和示例代碼。
步驟一:創建數據庫表
首先,我們需要創建一個數據庫來存儲問卷調查的相關數據。可以使用MySQL或其他關系型數據庫來創建以下兩個表:
surveys:用于存儲問卷調查的基本信息,包括問卷標題、描述和創建時間等字段。
CREATE TABLE surveys ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
登錄后復制
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開發簡單的問卷調查功能的詳細內容,更多請關注www.92cms.cn其它相關文章!






