PHPを使った簡単なアンケート機能の開発方法

WBOY
リリース: 2023-09-21 14:06:01
オリジナル
1254 人が閲覧しました

PHPを使った簡単なアンケート機能の開発方法

PHP を使用して簡単なアンケート機能を開発する方法。具体的なコード例が必要です。

アンケートは一般的なデータ収集方法であり、市場調査や学術研究で広く使用されています。 、世論監視などの分野。インターネット時代では、Webページを通じてアンケート調査を行うことが主流になりました。 PHPはサーバーサイドスクリプト言語としてよく使われており、フォームデータの処理やデータベース操作などの機能を備えており、簡単なアンケート機能の開発に非常に適しています。

この記事では、PHPを使用してアンケートの作成、ユーザー回答の収集、アンケート結果の表示など、簡単なアンケート機能を開発する方法を紹介します。具体的な実装手順とサンプルコードを以下に示します。

ステップ 1: データベース テーブルを作成する
まず、アンケート関連のデータを保存するデータベースを作成する必要があります。 MySQL またはその他のリレーショナル データベースを使用して、次の 2 つのテーブルを作成できます。

  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)
    );
    ログイン後にコピー

ステップ 2: アンケート ページを作成する
次に、アンケートを表示する Web ページを作成する必要があります。ユーザーはこのページで回答を選択し、アンケートを送信できます。以下は、簡単なアンケート ページ (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>
ログイン後にコピー

ステップ 3: アンケート データの処理
ユーザーがアンケートを送信した後、回答データをデータベースに保存する必要があります。以下は、単純なデータ処理ページ (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");
ログイン後にコピー

ステップ 4: アンケート結果を表示する
最後に、アンケートの結果を表示するページを作成できます。以下は簡単な結果ページの例 (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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!