시도, 시군구 셀렉트로 불러오기~ > 그누보드5 팁자료실

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누보드5 팁자료실

시도, 시군구 셀렉트로 불러오기~ 정보

시도, 시군구 셀렉트로 불러오기~

본문

셀렉트로 만드는게 기존게 있는지 모르겠는데...

 

매번 작업할때마다 기존에 하던거 까먹어 기록차 여기 남겨보아요

 

소스는 개판이라 이해부탁드림..ㅋ

 

1. 셀렉트 박스 생성

 


<select name="h_addr1" id="h_addr1" onChange="item_Search(this.value)">
    <option selected value="">시/도</option>
    <?
    $sido_array = array("서울", "경기", "인천", "부산", "대구", "대전", "광주", "세종", "울산", "강원", "경남", "경북", "전남", "전북", "충남", "충북", "제주");
    foreach($sido_array as $key => $value){
     $sel_chk = "";
     if($h_addr1 === $value){
      $sel_chk = "selected";
     }
     echo '<option value="'.$value.'" '.$sel_chk.'>'.$value.'</option>';
    }
    ?>
   </select>
   <select id="h_addr2" name="h_addr2" >
    <option value="">시/군/구</option>
   </select>

 

2. 스크립트

 


<script>
 
 function item_Search(Args){
  $('#h_addr2').empty();
  $('#h_addr2').append('<option value="">시/군/구</option>');
  if (Args == "")
   return;
  $.ajax({
   type  : "post",
   async  : false,
   cache  : false,
   data  : {"item1":Args},
   dataType : "xml",
   url   : g5_url+"/ajax.sidomake.php",
   success  : function(xml){
    if ($(xml).find("list").find("item").length > 0) {
     $(xml).find("list").find("item").each(function(i){
      var names  = $(this).find("names").text();
      $('#h_addr2').append('<option value="'+names+'">'+names+'</option>');
     });
     <?php if($h_addr2){ ?>
      $("select[name='h_addr2'] option[value='<?php echo $h_addr2; ?>']").attr('selected','selected');
     <? } ?>
    }
   }
  });

 }
</script>

 

3. 데이터 생성


<?php
include_once('./_common.php');
if(!$item1) die('');
$addr['서울'] = array("강남구", "강동구", "강북구","강서구","관악구","광진구","구로구","금천구","노원구","도봉구","동대문구","동작구","마포구","서대문구","서초구","성동구","성북구","송파구","양천구","영등포구","용산구","은평구","종로구","중구","중랑구");
$addr['경기'] = array("고양시 덕양구","고양시 일산동구","고양시 일산서구","과천시","광명시","광주시","구리시","군포시","김포시","남양주시","동두천시", "부천시 소사구","부천시 원미구","부천시 오정구","성남시 수정구","성남시 중원구","성남시 분당구","수원시 장안구","수원시 권선구","수원시 팔달구","수원시 영통구","시흥시","안산시 단원구","안산시 상록구","안성시","안양시 만안구","안양시 동안구","오산시","용인시 기흥구","용인시 수지구","용인시 처인구","의왕시","의정부시","이천시","파주시","평택시","하남시","가평군","양주시","양평군","여주시","연천군","포천시","화성시");
$addr['인천'] = array("계양구", "남구", "남동구","동구","부평구","서구","연수구","중구","강화군","옹진군");
$addr['강원'] = array("강릉시", "동해시", "삼척시","속초시","원주시","춘천시","태백시","고성군","양구군","양양군","영월군","인제군","정선군","철원군","평창군","홍천군","화천군","횡성군");
$addr['경남'] = array("거제시", "김해시", "마산시","밀양시","사천시","양산시","진주시","진해시","창원시","통영시","거창군","고성군","남해군","산청군","의령군","창녕군","하동군","함안군","함양군","합천군");
$addr['경북'] = array("경산시", "경주시", "구미시","김천시","문경시","상주시","안동시","영주시","영천시","포항시","고령군","군위군","봉화군","성주군","영덕군","영양군","예천군","울릉군","울진군","의성군","청도군","청송군","칠곡군");
$addr['광주'] = array("광산구", "남구", "동구","북구","서구");
$addr['대전'] = array("대덕구", "동구", "서구","유성구","중구");
$addr['대구'] = array("남구", "달서구", "동구","북구","서구","수성구","중구","달성군");
$addr['부산'] = array("강서구", "금정구", "남구","동구","동래구","부산진구","북구","사상구","사하구","서구","수영구","연제구","영도구","중구","해운대구","기장군");
$addr['울산'] = array("남구", "동구", "북구","중구","울주군");
$addr['전남'] = array("광양시", "나주시", "목포시","순천시","여수시","강진군","고흥군","곡성군","구례군","담양군","무안군","보성군","신안군","영광군","영암군","완도군","장성군","장흥군","진도군","함평군","해남군","화순군");
$addr['전북'] = array("군산시", "김제시", "남원시","익산시","전주시","정읍시","고창군","무주군","부안군","순창군","완주군","임실군","장수군","진안군");
$addr['충남'] = array("공주시", "논산시", "보령시","서산시","아산시", "천안시 서북구", "천안시 동남구", "금산군","당진군","부여군","서천군","연기군","예산군","청양군","태안군","홍성군");
$addr['충북'] = array("제천시","청주시 상당구", "청주시 흥덕구", "청주시 서원구", "청주시 청원구", "충주시","괴산군","단양군","보은군","영동군","옥천군","음성군","진천군");
$addr['세종'] = array("세종시");
$addr['제주'] = array("서귀포시", "제주시","남제주군","북제주군");
 

$reStr = "";
foreach($addr[$item1] as $key => $value){
 $reStr .= "<item><names>".$value."</names></item>\n";
}

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo "<list>\n";
echo $reStr;
echo "</list>";
?>

 

 

 

추천
9
  • 복사

댓글 16개

1,2번은 소스에 넣고 3번은 별도로 만들어서 2번에서 불러오는거라 경로 맞춰주면 될듯한데
에러같은 메세지 뜨나요? 어떻게 안되는지요?
네 초보라 처음에 전 3개를 같이 white화일에넣었어 안됐구요
3번을 ajax.sidomake.php로 저장해서 최상위 폴더에 넣으니 작동은하는데
수정을 하면  셀렉터 1,2값이 초기화 되어 있네요
게시글 수정들어갔을때는 소스를 직접수정해줘야 하는데... 그게 힘드시다면
간단하게  아래처럼 스크립트 넣으면  선택은 되실듯요

h_addr1, h_addr2  이건  저장한 디비값으로 맞춰야하구요

<?php
if($w=="u"){
?>
<script>
//시도 선택되게
$("select[name='h_addr1'] option[value='<?php echo $h_addr1; ?>']").attr('selected','selected');

//시/군/구 부분 선택되게
$("select[name='h_addr2'] option[value='<?php echo $h_addr2; ?>']").attr('selected','selected');
</script>
<?php
}
?>
먼저 다시한번 감사합니다
위 소스를 적용하니 h_addr1은 수정시 값이 나와있지만
2차 셀렉터인 h_addr2는 역시 선택되지 상태로 나오는군요
음~그러시면  위에 스크립트 부분을 아래로 바꿔보세요
소스 젤상단에  h_addr1, h_addr2 값을 먼저 설정 하고요

<script>
item_Search(<?php echo $h_addr1 ?>);
</script>
두번째 h_addr2 부분이 저장후, 불러와서 수정하기에서 자동 선택이 안되는 문제는

파일 하단에
<script>
 <?php if($it_4_1){ ?>
        item_Search('<?php echo $it_4_1;?>');
      $("select[name='it_4_2'] option[value='<?php echo $it_4_2; ?>']").attr('selected','selected');
        //$("#it_4_2").val("<?php echo $it_4_2;?>").prop("selected", true);
    <? } ?>

</script>

와 같이  따로 분리해서 파일 제일 하단에 넣어주니 되네요.

it_4_1 이 h_addtr1
it_4_2 가 h_addr1 입니다.
© SIRSOFT
현재 페이지 제일 처음으로