이곳에 올라온 좋은 자료들을 이용하여 아래와 같이 2단 셀렉트를 이용한 지역 검색페이지(list.php)를 만들고 있습니다.
아래와 같이 하면 작동은 잘 합니다만, 한가지 문제점이 "wr_1=부산&wr_1=강서구"와 같이 검색이 되다보니 '서울 강서구'와 '부산 강서구'가 같이 검색이 되어 버립니다.
그리고 <script>$("#wr_1").val("<?=$_GET[wr_1]?>")</script> 해서 아이디를 이용해서 검색된 지역이 계속 고정되게 되어야 하는데 현재 처럼하니 id="wr_1"이 안 먹히는 것 같습니다.
"wr_1=부산&wr_1=강서구"가 아닌 "wr_1=부산 강서구" 처럼 하려면 어떻게 하면 될까요?
그리고 검색후 지역이 고정되게 하려면 또 어떻게 하면 될까요?
제가 한번 해결해 보려고 하루종일 구글링도 해보고 해도 도저히 해결이 안되어 도움을 요청드립니다.
고수님들은 5분이면 해결하실 것 같은데 제 실력으로는 도저히 해결이 안되네요...^^;;
소스는 길어서 보기 쉽게 필요한 부분만 발췌하여 올려드립니다.
<select name="wr_1" onchange="getList(this.selectedIndex)" class="frm_input">
<option value=''>시/도 선택</option>
<option value='서울'>서울</option>
<option value='경기'>경기</option>
</select>
<select name="wr_1" class="frm_input">
<option>-------</option>
</select>
<script>$("#wr_1").val("<?=$_GET[wr_1]?>")</script
<select name="sfl" id="sfl" style='display:none;'>
<option value="wr_subject||wr_content||wr_1||wr_2||wr_3||wr_4||wr_5">통합검색</option>
</select>
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" id="stx" class="frm_input" size="25" maxlength="20" placeholder=" 검색어를 입력해주세요">
<input type="submit" value="검색" id="btn05">
<script type="text/javascript">
var listText = new Array();
var listValue = new Array();
listText[0] = new Array('강남구','강동구','강북구','강서구','관악구','광진구','구로구','금천구','노원구','도봉구','동대문구','동작구','마포구','서대문구','서초구','성동구','성북구','송파구','양천구','영등포구','용산구','은평구','종로구','중구','중랑구'); // 각 option의 text
listValue[0] = new Array('강남구','강동구','강북구','강서구','관악구','광진구','구로구','금천구','노원구','도봉구','동대문구','동작구','마포구','서대문구','서초구','성동구','성북구','송파구','양천구','영등포구','용산구','은평구','종로구','중구','중랑구'); // 각 option의 value
listText[1] = new Array('고양시');
listValue[1] = new Array('고양시');
function getList(sel_id) {
var sel = document.getElementsByName('wr_1');
var sel_id = sel_id - 1;
if(sel_id>=0) {
sel[1].options.length = listText[sel_id].length;
for(i=0;i<listText[sel_id].length;i++){
sel[1].options[i] = new Option(listText[sel_id][i], listValue[sel_id][i]);
}
} else {
sel[1].options.length = 1;
sel[1].options[0].text = "-------";
sel[1].options[0].value = 0;
}
}
</script>
답변 2개 / 댓글 3개
변수를 같은걸로 사용하면 뒤에 붙은 강서구만 검색될거같네요.
두개를 같은 변수명으로 사용하지 마시길 바랍니다.
일단 두가지 방법이 있습니다.
1. 검색 submit 할때 시도 값과 시군구 값을 합치는 방법
2. 시도의 wr_1 을 wr-1_1, 시군구의 wr_1 을 wr_1_2 로 바꾸고 검색해주는 곳에서 합치는 방법입니다.
1번은 해당 값을 선택된것처럼 해주는 부분
<script>$("#wr_1").val("<?=$_GET[wr_1]?>")</script>
저라면 2번방법으로 하겠습니다.
답변에 대한 댓글 3개
list.php 에서 같은 페이지에서 검색결과를 보여준다면 list.php
검색결과가 다른곳에서 보여준다면 다른곳의 url로 보내주면 되지요.
검색은 <form>태그에
<form action="URL"></form>
저기에 있거나 action값이 없다면 자기 자신 즉 list.php거나 <form onSubmit="return 유효성검증함수명()"></form>에 적혀 있는 유효성검증함수() 에 form.action="URL" 이라고 적혀있을겁니다.
검색결과를 보여주는 페이지 즉, wr_1_1, wr_1_2를 받는곳에서는 다음과 같이 처리하시면 될겁니다. (GET방식으로 넘겨 받는기준입니다. 문의글기준)
검색을 위한 추가 쿼리문을 $sql_search 라고 하면
[code]
$sql_search .= ($_GET['wr_1_1'] != '') ? " and wr_1 like '%".$_GET['wr_1_1']."%' " : "";
$sql_search .= ($_GET['wr_1_2'] != '') ? " and wr_1 like '%".$_GET['wr_1_2']."%' " : "";
[/code]
이런방식으로 추가하면 될듯합니다.
그리고 선택하는 javascript부분은 알아서 하시겠지요. ^^
제일 쉬운방법이 지역별로 하지 않고 다음 주소를 이용해서 하면 되요 ㅋㅋㅋ
저도 지역별 데이타 싸그리 가져오려니까.. 너무 많아서..
답변을 작성하려면 로그인이 필요합니다.
$wr_1 = $wr-1_1." ". $wr-1_2; 하면 되겠죠?
그렇게 두개를 보낼 경우에는 list.php에서는 어디로 보내지는가요?
각 페이지 마다 테스트를 해 보는데 해당 페이지를 못 찾겠습니다.
참고로 아래 스킨을 사용하고 있습니다.
https://sir.kr/g5_skin/34034?sfl=wr_subject%7C%7Cwr_content&stx=%EB%8B%A4%EC%A4%91+%EA%B2%80%EC%83%89