[Study]/[ETC]2011. 1. 26. 17:55

급 심심해서 사이트를 만들어볼려고 이리저리 삽질하다가

우리나라의 지역선택 하는 select 부분에서 막혀 버렸다.

그래서 삽질 시작 - _-.....





일단 우리나라의 각 시도, 구군, 읍면동 정보를 얻어야만 했는데 이는 우체국 홈피에서 우리나라의 모든 지역 정보 및 우편번호가 수록된 파일을 구할 수 있었다.

구글에 검색해보면 SQL이나 엑셀파일로 정리해서 올려주시는분? 이 있는데 다운받아서 일단 DB에 쑤셔 넣었다.

일단 모든 정보를 얻었지만 내가 원하는 시도, 구군, 읍면동 의 정보가 같은 읍면동 일지라도 우편번호가 다르기때문에 겹쳐지는 내용이 상당히 많았다.(우편번호로 나누어진 우리나라의 지역은 대략 6만개 정도..;;)

그래서 원하는 정보만 얻기 위해서 SQL의 SELECT문을 이용 할 수 있지만 SQL쿼리문은 아는거라곤
Select * from table정도가 전부라서 할수없이

기존 우편번호가 담긴곳의 DB에서 내용을 가져와서 insert 쿼리형식으로 바꾸는 페이지를 만들어서 그곳에서 출력된 내용을 DB에 인서트 시키는 조금 허접한 짓을 했다.


허접한방법.ASP





위의 페이지를 띄워보면 당연하게도

insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (1, 1, 1, '서울', '강남구', '개포1동')
insert into select_code(code1, code2, code3, majorclass, middleclass, subclass) values (1, 1, 2, '서울', '강남구', '개포2동')
...
...
으로 대략 300여개? 정도의 결과로 나온다..




지역코드가 서울 강남구 라면 (1,1,?)로 ?값이 읍면동 정보인데 (1,1,0) 지역코드라면 서울시 강남구 모든 동 

정보나 혹여나 select에서 아무것도 선택하지 않았을때의 값이 0 으로 설정하기 위해서 지역코드에는 0 값이

들어있지 않도록 만들었다.




이것을 db에 고대로 넣으면 원하는 시도, 구군, 읍면동 정보가 들어있는 db를 만들수 있다.

그후 가장 중요한 다중셀렉트?? 결과가 연동되게 표시되는 셀렉트?? 를 만들 차례다.

이는 정말 감사하게도 인터넷검색을 하니 친철하게 어떤분이 만들어 놓으신걸 조금 수정했다.



원래 select가 2개로 연동되는것 이였는데 내가 사용할 것은 3개 이므로 3개로 늘리는 작업 및

기존코드:  var bc2 = eval('document.RegRequest.biz_code2');

는 비표준 이라고 그러던데 역시나 오류가 발생하여

수정코드: var bc1 = document.getElementById("biz_code1");

로 간단하게 바꿔주고

결과값을 테스트용도로 볼 수 있도록 간단한 폼을 붙여놨다.



우리가 db에 넣었던

(code1, code2 code3, majorclass, middleclass, subclass) 는

(select1번의 value, select3번의 value, select3번의 value, 시도, 구군, 읍면동) 의 정보 이다.

다른 다중셀렉트를 만들때 값만 변경시키면 된다.



TEST.ASP 내용


 



자 위의 페이지를 실행해보면 3개의 셀렉트에 멋떨어지게? 지역정보들이 들어가 있는 것을 확인 할 수 있다.

사실 요즘사용하는 사이트들에는 거의 하나씩 회원가입할때 지역을 선택하는 부분이 있다. 물론 우편번호 검색

으로 지역정보를 얻어 낼 수 있지만. 특정지역 검색 기능이 필요한 사이트에서는 꼭 하나씩 들어가 있어서 한번

만들어볼려다가 정말 하루종일 걸렸다 - _-;;;

우체국의 우편번호 정리된 파일이 없었다면 난 아직까지도 네이버 지도에서 읍면동 찾아서 text나 엑셀로 작업

하고 있을지 모른다;;;



조금 수정하고 싶은것은 위에 소스는 특정 select를 위한 소스코드인데 만약 init부분이나 setcode같은 부분에

ID값을 넘겨줘서 다방면으로 사용 할 수 있도록 수정을 한다면 조금더 완벽할 것이라고 생각이 든다.

이만 뻘짓 끝.
Posted by xiasonic

댓글을 달아 주세요