신청폼관리는 현재 구조대로 스킨형식이라면 하나의 신청폼만 사용할 수 있는 구조라, 하나의 사이트에 다중의 형식이 다른 신청폼을 사용한다면 문제가 될 수 있어 별도의 DB와 별도의 관리자 메뉴로 분리할 필요가 있음
- 게시판 테이블과 완전 분리하여 별도의 신청폼 데이터 생성(통합검색이나 SEO에 노출되지 않도록)
- 관리자모드 좌측메뉴 게시판 관리 아래에 [신청폼관리] 메뉴 추가, 하위메뉴로 신청폼 관리 생성, id, 신청폼 명칭으로.. 다중생성, 신청폼 항목관리는 기존과 동일
- 신청폼 관리 아래 신청내역관리에서 신청폼별 신청내역 확인, 목록 상단에 풀다운 메뉴로 신청폼 선택, 해당 신청폼으로 신청된 내역만 관리, 신청내역 검색, 상세보기, 엑셀저장 등 기존과 동일
- 생성된 신청폼은 메뉴관리에서 일반페이지, 게시판과 같은 형식으로 연결 /form/regist_01 등과 같이

admin/migrations/create_application_form_tables.php
<?php
// 파일: admin/migrations/create_application_form_tables.php
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "Starting migration...<br>";

// DB 연결
if (!isset($pdo)) {
echo "Loading config.php...<br>";
require_once __DIR__ . '/../../config.php';
}

if (!isset($pdo)) {
die("Error: PDO object not found after loading config.php");
}

$prefix = defined('DB_PREFIX') ? DB_PREFIX : 'cms_';
echo "Using prefix: $prefix<br>";

try {
// 신청폼 마스터 테이블
echo "Creating application_forms table...<br>";
$pdo->exec("CREATE TABLE IF NOT EXISTS {$prefix}application_forms (
id INT AUTO_INCREMENT PRIMARY KEY,
form_id VARCHAR(50) NOT NULL UNIQUE,
title VARCHAR(255) NOT NULL,
description TEXT,
options LONGTEXT,
site_id INT DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_site_id (site_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");

// 신청폼 데이터 테이블
echo "Creating application_data table...<br>";
$pdo->exec("CREATE TABLE IF NOT EXISTS {$prefix}application_data (
id INT AUTO_INCREMENT PRIMARY KEY,
form_id INT NOT NULL,
applicant_name VARCHAR(255) NOT NULL,
password VARCHAR(255),
content LONGTEXT NOT NULL,
ip_address VARCHAR(45),
user_agent TEXT,
is_read TINYINT(1) DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_form_id (form_id),
INDEX idx_created_at (created_at),
FOREIGN KEY (form_id) REFERENCES {$prefix}application_forms(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");

echo "<b>Success: Application form tables created successfully.</b>";
} catch (Exception $e) {
echo "<b>Error creating tables: " . $e->getMessage() . "</b>";
}