📑 목차
상세보기 모드 (view) 수정 모드 (edit) 모드 감지 로직 기존 데이터 프리필 수정 저장 프로세스

👁️ 상세보기 및 수정

admin_source_improvements_form.php는 3가지 모드로 동작합니다. action 파라미터로 읽기 전용 상세보기와 편집 모드를 구분합니다.

3가지 액션 모드

URL모드설명
?id=5&action=view보기읽기 전용. 모든 필드는 비활성화(disabled). 하단에 「수정하기」「목록으로」 버튼
?id=5&action=edit수정편집 모드. 기존 데이터가 프리필됨. 하단에 「수정」버튼
(파라미터 없음)신규 등록빈 폼. 하단에 「등록」버튼

모드 감지 로직

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$mode = $id ? 'edit' : 'create';

if ($mode == 'edit') {
    $sql = "SELECT * FROM source_improvements WHERE id = {$id}";
    $result = mysqli_query($self_con, $sql);
    $data = mysqli_fetch_array($result);
    if (!$data) {
        echo '<script>alert("존재하지 않는 항목입니다.");history.back();</script>';
        exit;
    }
}

기존 데이터 프리필 방식

수정 모드에서는 $data 배열에서 값을 읽어 각 input의 value 속성에 채워넣습니다.

// 일반 텍스트 필드
value="<?php echo htmlspecialchars($data['title']); ?>"

// 셀렉트 박스 (selected 비교)
<?php echo $data['project'] == $p ? 'selected' : ''; ?>

// 체크박스 (쉼표 분리된 environments 파싱)
$selected_envs = explode(',', $data['environments']);
<?php echo in_array($env, $selected_envs) ? 'checked' : ''; ?>

// datetime-local (공백→T 변환)
value="<?php echo str_replace(' ', 'T', $data['deployed_date']); ?>"

수정 저장 프로세스

수정과 신규 등록은 동일한 AJAX 엔드포인트를 사용합니다. 숨겨진 action 필드로 구분:

<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="hidden" name="action"
       value="<?php echo $mode=='edit' ? 'update' : 'create'; ?>">

서버 측(source_improvements_save.php)에서 action=update면 UPDATE 쿼리, action=create면 INSERT 쿼리 실행.

💡 참고: 수정 완료 후에도 목록 페이지로 리다이렉트됩니다. updated_at 컬럼이 자동 갱신되어 최종 수정 시점을 추적할 수 있습니다.