false, 'message' => '잘못된 요청입니다.']); exit; } $content_id = isset($_POST['content_id']) ? trim($_POST['content_id']) : ''; $seqRaw = isset($_POST['seq']) ? trim((string)$_POST['seq']) : ''; $seq = ($seqRaw !== '' ? (int)$seqRaw : null); $title = isset($_POST['title']) ? trim($_POST['title']) : ''; $is_active = isset($_POST['is_active']) ? '1' : '0'; if ($content_id === '') { echo json_encode(['success' => false, 'message' => '콘텐츠 ID가 필요합니다.']); exit; } try { if ($seq === null) { // 신규 등록: seq를 순차증감(최대 3개) $stmt = $pdo->prepare("SELECT COALESCE(MAX(seq), 0) FROM edu_content_memos WHERE content_id = :c"); $stmt->execute([':c' => $content_id]); $nextSeq = (int)$stmt->fetchColumn() + 1; if ($nextSeq > 3) { echo json_encode(['success' => false, 'message' => '포스트잇은 최대 3개까지만 등록할 수 있습니다.']); exit; } $ins = $pdo->prepare("INSERT INTO edu_content_memos (content_id, seq, title, is_active, created_by, created_at, updated_by, updated_at) VALUES (:c, :s, :t, :a, 'admin', NOW(), 'admin', NOW())"); $ins->execute([':c' => $content_id, ':s' => $nextSeq, ':t' => $title, ':a' => $is_active]); echo json_encode(['success' => true, 'seq' => $nextSeq]); exit; } if ($seq < 1 || $seq > 3) { echo json_encode(['success' => false, 'message' => 'seq는 1~3 범위만 가능합니다.']); exit; } // 수정: 존재하면 UPDATE, 없으면 INSERT(지정 seq) $sql = "INSERT INTO edu_content_memos (content_id, seq, title, is_active, created_by, created_at, updated_by, updated_at) VALUES (:c, :s, :t, :a, 'admin', NOW(), 'admin', NOW()) ON DUPLICATE KEY UPDATE title = VALUES(title), is_active = VALUES(is_active), updated_by = 'admin', updated_at = NOW()"; $stmt = $pdo->prepare($sql); $stmt->execute([':c' => $content_id, ':s' => $seq, ':t' => $title, ':a' => $is_active]); echo json_encode(['success' => true, 'seq' => $seq]); } catch (PDOException $e) { echo json_encode(['success' => false, 'message' => 'DB 에러: ' . $e->getMessage()]); } exit;