👁️ 상세보기 및 수정
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 컬럼이 자동 갱신되어 최종 수정 시점을 추적할 수 있습니다.