= strtotime($sv_end_date)) { alert('종료일시는 시작일시보다 늦어야 합니다.'); } // 상태 결정 $sv_status = ($action === 'save_and_activate') ? 'active' : 'draft'; // 질문 데이터 $questions = isset($_POST['questions']) ? $_POST['questions'] : []; if ($sv_id > 0) { // 기존 설문 수정 $sql = "UPDATE survey_master SET sv_title = '".sql_real_escape_string($sv_title)."', sv_description = '".sql_real_escape_string($sv_description)."', sv_start_date = '".sql_real_escape_string($sv_start_date)."', sv_end_date = '".sql_real_escape_string($sv_end_date)."', sv_status = '".sql_real_escape_string($sv_status)."', sv_allow_anonymous = '$sv_allow_anonymous', sv_allow_multiple = '$sv_allow_multiple', sv_max_responses = ".($sv_max_responses ? "'$sv_max_responses'" : 'NULL').", sv_theme_color = '".sql_real_escape_string($sv_theme_color)."', sv_thank_message = '".sql_real_escape_string($sv_thank_message)."', sv_updated_at = NOW() WHERE sv_id = '$sv_id'"; sql_query($sql); // 기존 질문들 삭제 sql_query("DELETE FROM survey_questions WHERE sv_id = '$sv_id'"); } else { // 새 설문 생성 if ($template_id > 0) { // 템플릿으로부터 설문 생성 $new_sv_id = create_survey_from_template($template_id, $sv_title, $member['mb_id']); if ($new_sv_id) { // 템플릿으로 생성된 설문의 기본 정보 업데이트 $sql = "UPDATE survey_master SET sv_description = '".sql_real_escape_string($sv_description)."', sv_start_date = '".sql_real_escape_string($sv_start_date)."', sv_end_date = '".sql_real_escape_string($sv_end_date)."', sv_status = '".sql_real_escape_string($sv_status)."', sv_allow_anonymous = '$sv_allow_anonymous', sv_allow_multiple = '$sv_allow_multiple', sv_max_responses = ".($sv_max_responses ? "'$sv_max_responses'" : 'NULL').", sv_theme_color = '".sql_real_escape_string($sv_theme_color)."', sv_thank_message = '".sql_real_escape_string($sv_thank_message)."' WHERE sv_id = '$new_sv_id'"; sql_query($sql); $sv_id = $new_sv_id; // 템플릿 질문들을 사용자가 수정했다면 업데이트 if (!empty($questions)) { sql_query("DELETE FROM survey_questions WHERE sv_id = '$sv_id'"); } } else { alert('템플릿으로부터 설문 생성에 실패했습니다.'); } } else { // 직접 생성 $sql = "INSERT INTO survey_master (sv_title, sv_description, sv_start_date, sv_end_date, sv_status, sv_allow_anonymous, sv_allow_multiple, sv_max_responses, sv_theme_color, sv_thank_message, sv_created_by, sv_created_at) VALUES ('".sql_real_escape_string($sv_title)."', '".sql_real_escape_string($sv_description)."', '".sql_real_escape_string($sv_start_date)."', '".sql_real_escape_string($sv_end_date)."', '".sql_real_escape_string($sv_status)."', '$sv_allow_anonymous', '$sv_allow_multiple', ".($sv_max_responses ? "'$sv_max_responses'" : 'NULL').", '".sql_real_escape_string($sv_theme_color)."', '".sql_real_escape_string($sv_thank_message)."', '{$member['mb_id']}', NOW())"; sql_query($sql); $sv_id = sql_insert_id(); if (!$sv_id) { alert('설문 생성에 실패했습니다.'); } } } // 질문들 저장 (템플릿 사용 시에도 사용자가 수정했다면 저장) if (!empty($questions)) { foreach ($questions as $order => $question) { $sq_type = isset($question['type']) ? trim($question['type']) : 'text'; $sq_title = isset($question['title']) ? trim($question['title']) : ''; $sq_description = isset($question['description']) ? trim($question['description']) : ''; $sq_required = isset($question['required']) ? 1 : 0; $sq_options = ''; if (!$sq_title) { continue; // 제목이 없는 질문은 건너뛰기 } // 옵션 처리 (객관식 질문인 경우) if (in_array($sq_type, ['radio', 'checkbox', 'select']) && isset($question['options'])) { $options = array_filter($question['options'], function($option) { return trim($option) !== ''; }); if (!empty($options)) { $sq_options = json_encode(array_values($options), JSON_UNESCAPED_UNICODE); } } $sql = "INSERT INTO survey_questions (sv_id, sq_order, sq_type, sq_title, sq_description, sq_required, sq_options, sq_created_at) VALUES ('$sv_id', '".($order + 1)."', '".sql_real_escape_string($sq_type)."', '".sql_real_escape_string($sq_title)."', '".sql_real_escape_string($sq_description)."', '$sq_required', '".sql_real_escape_string($sq_options)."', NOW())"; sql_query($sql); } } // 활성화된 설문인 경우 질문이 있는지 확인 if ($sv_status === 'active') { $question_count = sql_fetch("SELECT COUNT(*) as cnt FROM survey_questions WHERE sv_id = '$sv_id'")['cnt']; if ($question_count == 0) { // 질문이 없으면 임시저장 상태로 변경 sql_query("UPDATE survey_master SET sv_status = 'draft' WHERE sv_id = '$sv_id'"); alert('질문이 없어서 임시저장 상태로 저장되었습니다. 질문을 추가한 후 활성화해주세요.', 'survey_form.php?sv_id='.$sv_id); } } $message = ''; if ($action === 'save_and_activate') { $message = '설문이 저장되고 활성화되었습니다.'; } else { $message = '설문이 임시저장되었습니다.'; } alert($message, 'survey_list.php'); ?>