다중 셀렉트 문의 드립니다.

· 20년 전 · 1919
쓰기 폼에서 다중 셀렉트를 사용할려고 합니다.
셀렉트 되는 내용은 디비에서 가져올려고 합니다.
php 스쿨에서 거친마루님 소스를 참고해서 어떤분이 작성한 소스를 살펴보고 있는데.
도저히 모르겠습니다.. ㅠㅠ 한번 보시고 도움 좀 주세요..
테이블 구조하고 쿼리의 where 절 부분을 어떻게 처리해야 할지 모르겠습니다.
이것 저것으로 해봐도 잘 안되네요...

내용은 첫번째 셀렉트에서 내용을 선택하면 그 내용이 두번째 셀렉트에 표시되고.. 두번째 설렉트 내용을 선택하면 세번째 셀렉트에 내용이 이런식입니다.


======== index.php ==================
<?
function connect(){
$connect = mysql_connect(localhost, 디비계정, 패스워스);
mysql_select_db(nurim, $connect);
return $connect;
}
$connect = connect();
$query = "select * from 테이블이름 where 조건문";
$result = mysql_query($query, $connect);
$total = mysql_num_rows($result);
?>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>다중 selectbox</title>
<script id="dynamic"></script> <!-- 이거 빼먹지 말것 -->
<script>
function loadData(sel,target) {
var trigger = sel.options[sel.selectedIndex].value; // 첫번째 selectbox의 선택된 텍스트
var form = sel.form.name;
dynamic.src = "loadData.php?form=" + form + "&trigger=" + trigger + "&target=" + target;
}
</script>
</head>
<body>
<form name="selectform">
<select name="s1" onChange="loadData(this,'s2')">
<option value="not">---선 택---</option>
<?
while($row = mysql_fetch_array($result)){?>
<option value="<?=$row[h_code]?>"><?=$row[p_company]?></option>
<?}?>
</select>
<select name="s2" onChange="loadData(this,'s3')">
<option>---선 택---</option>
</select>
<select name="s3" onChange="loadData(this,'s4')">
<option>---선 택---</option>
</select>
<select name="s4" onChange="loadData(this,'s5')">
<option>---선 택---</option>
</select>
<select name="s5">
<option>---선 택---</option>
</select>
</form>
</body>
</html>

========= loadData.php ================
<?
$trigger = $_GET['trigger'];
$target = $_GET['target'];
$form = $_GET['form'];

function connect(){
$connect = mysql_connect(localhost, 디비아이디, 패스워드);
mysql_select_db(nurim, $connect);
return $connect;
}
$connect = connect();
$query = "select * from 테이블이름 where 조건문";
$result = mysql_query($query, $connect);
$total = mysql_num_rows($result);


header("Content-Type: application/x-javascript");
echo "document.forms['$form'].elements['$target'].length =$total; \n";//$total은 추가할 옵션의 수

$i=0; //옵션 수의 초기화

if($trigger == "not"){ //1번 select 박스가 초기값(선택)일시 2번 select 초기화.
echo "document.forms['$form'].elements['s2'].length =1; \n";
echo "document.forms['$form'].elements['s2'].options[0].text = '---선 택---'; \n";
}

while($row = mysql_fetch_array($result)){

echo "document.forms['$form'].elements['$target'].options[$i].text = '$row[cate_name]'; \n";

echo "document.forms['$form'].elements['$target'].options[$i].value = '$row[cate_code]'; \n";

$i++; // 실행시 1씩 증가


if($target == "s2"){ //지정 타겟 이외의 select의 값을 초기화.
echo "document.forms['$form'].elements['s3'].length =1; \n";
echo "document.forms['$form'].elements['s3'].options[0].text = '---선 택---'; \n";
echo "document.forms['$form'].elements['s4'].length =1; \n";
echo "document.forms['$form'].elements['s4'].options[0].text = '---선 택---'; \n";
echo "document.forms['$form'].elements['s5'].length =1; \n";
echo "document.forms['$form'].elements['s5'].options[0].text = '---선 택---'; \n";
}elseif($target == "s3"){
echo "document.forms['$form'].elements['s4'].length =1; \n";
echo "document.forms['$form'].elements['s4'].options[0].text = '---선 택---'; \n";
echo "document.forms['$form'].elements['s5'].length =1; \n";
echo "document.forms['$form'].elements['s5'].options[0].text = '---선 택---'; \n";
}elseif($target == "s4"){
echo "document.forms['$form'].elements['s5'].length =1; \n";
echo "document.forms['$form'].elements['s5'].options[0].text = '---선 택---'; \n";

}
}
?>
|

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고