코딩(php,javascript,mysql)
PHP로 동적 select 옵션 생성하기: 실전 예제
mylife365
2024. 12. 1. 11:52
PHP로 데이터를 활용해 동적으로 <select> 옵션을 생성하는 방법을 알아보겠습니다. 이번 예제에서는 JSON 데이터를 기반으로, 특정 항목의 세부항목을 select 옵션으로 표시하는 과정을 보여드립니다.
문제 상황
JSON 데이터에서 '차입금' 항목의 세부항목(예: '개인대출', '주일기업')을 추출하여 동적으로 <select> 옵션으로 표시하려고 합니다. 하지만 잘못된 배열 구조로 인해 숫자 키(0, 1)가 출력되는 문제가 발생했습니다. 이를 해결하고, 값이 제대로 출력되도록 수정하는 방법을 소개합니다.
PHP 코드
먼저, JSON 데이터를 기반으로 세부항목을 추출하고, 이를 배열로 저장합니다.
// JSON에서 세부항목 추출
$details = [
[
'개인대출' => [
'level' => 2,
'description' => '신동조 대표',
'parent' => '차입금',
'하위계정' => []
]
],
[
'주일기업' => [
'level' => 2,
'description' => '토지구매로 인한 대출',
'parent' => '차입금',
'하위계정' => []
]
]
];
// 키값(항목 이름)만 추출
$Suboptions = [];
foreach ($details as $detail) {
foreach ($detail as $key => $value) {
$Suboptions[] = $key;
}
}
// 확인용 출력
echo '<pre>';
print_r($Suboptions);
echo '</pre>';
출력 결과:
Array
(
[0] => 개인대출
[1] => 주일기업
)
HTML 코드
이제 $Suboptions 배열을 사용해 <select> 태그를 동적으로 생성합니다.
<td class="text-center fs-6 fw-bold" style="width:150px;">세부항목</td>
<td class="text-center">
<select class="form-control fs-6" id="contentSub" name="contentSub">
<?php foreach ($Suboptions as $value): ?>
<option value="<?= htmlspecialchars($value) ?>"><?= htmlspecialchars($value) ?></option>
<?php endforeach; ?>
</select>
</td>
결과:
<select class="form-control fs-6" id="contentSub" name="contentSub">
<option value="개인대출">개인대출</option>
<option value="주일기업">주일기업</option>
</select>
핵심 포인트
- foreach로 배열 순회:
- $details 배열에서 키(항목 이름)를 추출해 $Suboptions 배열에 저장합니다.
- HTML select 태그 생성:
- PHP의 foreach 문을 사용해 배열의 각 값을 <option>으로 출력합니다.
- 문자열 이스케이프 처리:
- htmlspecialchars를 사용해 HTML에서 안전하게 값을 출력합니다.
결론
이 방식은 동적 옵션 생성이 필요한 다양한 상황(예: 카테고리, 서브 카테고리)에서 유용하게 활용될 수 있습니다. 특히, JSON이나 API에서 데이터를 가져오는 경우에도 쉽게 확장 가능합니다.
동적 웹 애플리케이션을 개발할 때 PHP와 HTML을 활용해 이런 자동화된 UI를 구현해 보세요. 코드 효율성과 사용자 경험 모두 한 단계 업그레이드할 수 있습니다! 😊
반응형