셀렉트박스 다중 출력? 질문드립니다.
본문
도움주신 덕분에 이전 문제사항은 해결 하였습니다. 정말 감사합니다. 추가적인 질문이 있어 도움을 구해봅니다..
<select onchange="categoryChange(this)">
<option>전화번호</option>
<?php
$sql = "SELECT mb_id, mb_1 FROM {$g5['member_table']} WHERE mb_1 !='' ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
echo "<option value='" . $row['mb_1'] . "'>" . $row['mb_1'] . " </option>";
}
?>
</select>
현재 해당 코드를 이용하여 셀렉트박스 에 모든 전화번호가 불러와 지고 있습니다.
셀렉트박스2를 생성하여 셀렉트박스1에서 불러온 전화번호를 선택하면 해당 전화번호(mb_1)의 값과 일치하는 주소(mb_2)만 출력되도록 만들고 싶습니다.
구글링하다 발견한 코드
<select id="good">
<option>찾아오시는길</option>
</select>
<script>
function categoryChange(e) {
var good_a ='주소 출력부분?'
var target = document.getElementById("good");
if(e.value == "셀렉트박스1전화번호 입력부분?") var d = good_a;
target.options.length = 0;
for (x in d) {
var opt = document.createElement("option");
opt.value = d[x];
opt.innerHTML = d[x];
target.appendChild(opt);
}
}
</script>
해당 코드를 활용하여 value 값에 셀렉트1값을 넣고 var good_a 부분에 해당 전화번호(mb_1)값과 일치하는 주소(mb_2)값을 출력하도록 하고싶은데 힌트좀 주실수 있을까요?
아니면 다른 참고할 코드가 있다면 알려주시면 도움이 많이 될거 같습니다!
답변 2
이건 1번을 선택해서 서버요청 > 1번과 일치하는 데이터를 가져와서 출력해야 하며 ajax를 이용하셔야 합니다.
아래 코드로 교체해주세요
<select id="phoneSelect">
<option value="">전화번호</option>
<?php
$sql = "SELECT mb_id, mb_1 FROM {$g5['member_table']} WHERE mb_1 !=''";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
echo "<option value='" . $row['mb_1'] . "'>" . $row['mb_1'] . "</option>";
}
?>
</select>
<select id="addressSelect">
<option value="">주소</option>
</select>
<script>
$(document).ready(function() {
$('#phoneSelect').change(function() {
var selectedPhone = $(this).val();
$.ajax({
type: 'POST',
url: 'get_address.php',
data: { phone: selectedPhone },
success: function(response) {
$('#addressSelect').html(response);
}
});
});
});
</script>
이제 index.php 파일이 있는 최상단에 get_address.php 파일을 생성해주세요
만약 폴더 설정하실거면 위 스크립트 ajax요청 경로도 변경하셔야 합니다.
잘 모르겠다?하심 수정하지마시고 최상단에 설정하시면 됩니다
<?php
include_once('./_common.php'); // 그누보드 공통 파일
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['phone'])) {
$phone = sql_real_escape_string($_POST['phone']);
$sql = "SELECT mb_2 FROM {$g5['member_table']} WHERE mb_1 = '{$phone}'";
$result = sql_query($sql);
$options = "<option value=''>주소</option>";
while ($row = sql_fetch_array($result)) {
$options .= "<option value='" . $row['mb_2'] . "'>" . $row['mb_2'] . "</option>";
}
echo $options;
}
?>
!-->!-->
문법이 잘못 되었습니다. 아래 코드로 변경하세요
<select id="phoneSelect">
<option value="">전화번호</option>
<?php
$sql = "SELECT mb_id, mb_1 FROM {$g5['member_table']} WHERE mb_1 !=''";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
echo "<option value='" . $row['mb_1'] . "'>" . $row['mb_1'] . "</option>";
}
?>
</select>
<select id="addressSelect">
<option value="">주소</option>
</select>
<select id="nameSelect">
<option value="">대표자 이름</option>
</select>
<script>
$(document).ready(function() {
$('#phoneSelect').change(function() {
var selectedPhone = $(this).val();
$.ajax({
type: 'POST',
url: 'get_address.php',
data: { phone: selectedPhone },
success: function(response) {
$('#addressSelect').html(response);
$('#nameSelect').html('<option value="">대표자 이름</option>'); // Reset nameSelect
}
});
});
$('#addressSelect').change(function() {
var selectedPhone = $('#phoneSelect').val();
var selectedAddress = $(this).val();
$.ajax({
type: 'POST',
url: 'get_name.php',
data: { phone: selectedPhone, address: selectedAddress },
success: function(response) {
$('#nameSelect').html(response);
}
});
});
});
</script>
get_address.php 최상단에 생성
<?php
include_once('./_common.php'); // 그누보드 공통 파일
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['phone'])) {
$phone = sql_real_escape_string($_POST['phone']);
$sql = "SELECT DISTINCT mb_2 FROM {$g5['member_table']} WHERE mb_1 = '{$phone}'";
$result = sql_query($sql);
$options = "<option value=''>주소</option>";
while ($row = sql_fetch_array($result)) {
$options .= "<option value='" . $row['mb_2'] . "'>" . $row['mb_2'] . "</option>";
}
echo $options;
}
?>
get_name.php 최상단 폴더에 생성
<?php
include_once('./_common.php'); // 그누보드 공통 파일
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['phone']) && isset($_POST['address'])) {
$phone = sql_real_escape_string($_POST['phone']);
$address = sql_real_escape_string($_POST['address']);
$sql = "SELECT mb_3 FROM {$g5['member_table']} WHERE mb_1 = '{$phone}' AND mb_2 = '{$address}'";
$result = sql_query($sql);
$options = "<option value=''>대표자 이름</option>";
while ($row = sql_fetch_array($result)) {
$options .= "<option value='" . $row['mb_3'] . "'>" . $row['mb_3'] . "</option>";
}
echo $options;
}
?>