>백엔드 개발 >PHP 튜토리얼 >PHP를 사용하여 간단한 설문지 기능을 개발하는 방법

PHP를 사용하여 간단한 설문지 기능을 개발하는 방법

WBOY
WBOY원래의
2023-09-21 14:04:541328검색

PHP를 사용하여 간단한 설문지 기능을 개발하는 방법

PHP를 사용하여 간단한 설문지 기능을 개발하려면 구체적인 코드 예제가 필요합니다.

설문지는 일반적인 데이터 수집 방법으로 시장 조사, 학술 연구, 여론 모니터링 및 기타 분야에서 널리 사용됩니다. 인터넷 시대에는 웹페이지를 통한 설문조사가 주류가 되었습니다. PHP는 일반적으로 사용되는 서버사이드 스크립팅 언어로 양식 데이터 처리, 데이터베이스 작업 등의 기능을 갖고 있어 간단한 설문지 기능을 개발하는 데 매우 적합합니다.

이 글에서는 PHP를 사용하여 설문지 작성, 사용자 응답 수집, 설문조사 결과 표시 등 간단한 설문지 기능을 개발하는 방법을 소개합니다. 다음은 구체적인 구현 단계와 샘플 코드입니다.

1단계: 데이터베이스 테이블 생성
먼저 설문지 관련 데이터를 저장할 데이터베이스를 생성해야 합니다. MySQL 또는 기타 관계형 데이터베이스를 사용하여 다음 두 테이블을 생성할 수 있습니다.

  1. 설문조사: 설문지 제목, 설명, 생성 시간과 같은 필드를 포함하여 설문지에 대한 기본 정보를 저장하는 데 사용됩니다.

    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 필드는 설문 조사 테이블과 외래 키 연결을 설정하는 데 사용됩니다.

    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단계: 설문지 페이지 만들기
다음으로 설문지를 표시할 웹페이지를 만들어야 합니다. 사용자는 이 페이지에서 답변을 선택하고 설문지를 제출할 수 있습니다. 아래는 간단한 설문조사 페이지(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.