안규 공부방

ACTIVE SERVER PAGE > 회원 가입 받기

등록일 : 2017-07-03 20:08 조회수 : 93,586

다른 부분은 간단히 처리가 가능할 거라 생각되구요.. 중요한 부분이 우편번호 처리부분 인데요. 우편번호
데이터 베이스 구축하는 부분은 다음장에서 하도록 하구요,,,,

먼저 우편번호 버튼을 눌렀을땐  onclick="open_window('ju_chk.asp')"

<script language="JavaScript">
<!--

   function open_window(url){ awindow = window.open(url,"thewindow","width=400,height=200") }

  
-->
</script>



--------------------------------------------------------------------------------
다음과 같이 자바 스크립트로 작은 창을 열어 ju_chk.asp를 불러 오게 됩니다. (ju_chk.asp)화일은 주소의
면이나 동을 입력받는 폼입니다. 그런다음 선택된 주소와 우편번호를 openner 객체를 사용해 parent 윈도우에
뿌려 주게 되는 겁니다. 아시겠어요?

그럼, ju_chk.asp 소스입니다.


<html>
<head>
<title>찾고자 하는 주소를 입력하세요</title>


<script language="JavaScript">
<!-- JavaScript

function send(form)
{

  if((form.addr.value.length == 0 ) || (form.addr.value == " "))
        { alert("동이름을 쓰세요.");
          form.addr.focus(); return; }
  else
    form.submit();
}
-->
</script></head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<p align="center"><font size="2" color="maroon"><b>동이나 면을 입력 하세요</font></p>
<form name="form" method="post" action="ju_result.asp">
<p align="center"><input type="text" name="addr" size="10"></p>
<p align="center"><input type="button" name="chk" value="주소 확인" onclick="send(this.form)">
<input type="button" name="close" value="닫기" onclick="self.close()"></p>
</form>
<p> </p>
</body>

</html>


   위의 소스를 보면 "주소확인" 버튼과 "닫기" 버튼이 있습니다.  주소 버튼을 눌렀을땐 send(this.form)   
   처럼, send 함수를 불러 오게 됩니다. 그럼, send()에서 form의 addr(name)의 값의 길이가 0이거나   
   비어 있다면, on focus를 다시 addr로 보내게 됩니다.  제대로 입력이 됐다면 submit() 함수를 실행시켜   
   폼에 있는(ju_result.asp)를 불러 오게 됩니다.

   다음은 ju_result.asp 파일의 내용을 보겠습니다.    

<script language="javaScript">
<!--
function Ju_chk(form,i)
  {
var str="";
if((form.ad2.value == " ") || (form.ad2.value.length==0))
    { alert("주소를 입력하세요!");
      form.ad2.focus();
      return false;
    }
str=form.ad2.value;
opener.form.zip1.value=form.post_no[i].value.substring(0,3)
opener.form.zip2.value=form.post_no[i].value.substring(3,6);
opener.form.address.value=form.post_no[i].text+" "+str
self.close();
  }
-->
</script>
<body>

<%
  addr=request.form("addr")

  Set Conn=Server.CreateObject("ADODB.Connection")
  Conn.Open("DSN=polcomm;UID=sa;PWD=;database=sampal")
  sql="SELECT * FROM post where addr3='"&addr&"'"
  Set Result=Conn.Execute(sql)
  if Result.EOF then
%>
<center>
<font size=2><b> 우편번호가 존재하지 않습니다.</b><br>
<font size=2><b> 정확히 입력해 주세요! </b>
<hr>
<input type="button" value="돌아가기" name="back" onclick="history.back()">
<input type="button" value="닫    기" name="close" onclick="self.close()">

<% else %>
<form name="form" method="post" action="ju_result.asp">
<center>
<font size=2><b> 나머지 주소를 입력하세요 </b><br><hr>
  <select name="post_no">
<% do while not Result.EOF  %>
  <% addr4=result("addr1")+" "+result("addr2")+" "+result("addr3") %>
  <option value="<%=result("post")%>"><%=addr4%>
<% Result.movenext
loop %>
</select>
<input type="text" name=ad2 size="10">
<input type="button" value="확   인" name="res" onclick="Ju_chk(this.form,form.post_no.selectedIndex)">
<input type="button" value="닫   기" name="close" onclick="self.close()"></form>
<% End if %>
</body>
</html>


    위 부분은 실제 데이터데이스에서 주소를 불러와 우편번호를 출력하는 부분입니다.

    자세히 보면 ju_chk.asp 파일에서 addr값이 넘어오게 되겠죠??  몰겠다구요? 그럼 앞으로 가셔서 확    
    인을 해 보시길....  여기에서 addr=request.form("addr") 변수를 받아서 addr이란 변수에 기억 시켰    
    습니다. 그리구 밑에 sql문을 보면 post란 테이블에서 addr3과 넘어온 변수 addr의 값을 비교하게 됩    
    니다. 그리구 밑에 Conn.Execute(sql) sql문장을 실행하게 되겠죠?

    아래의 조건을 보면 ( if Result.Eof then ) Result 객체의 결과가 끝이냐?를 물어 보는 겁니다.  즉,    
    어떠한 조건도 만족하지 못하면 디비는 계속해서 비교하면서 끝까지(End of file)비교하겠죠? 데이터를    
    찾을 때까지,,, 그러다 끝을 만나면 출력해 주면 되겠죠?( 우편번호가 존재하지 않는다. 그리구 다시 입    
    력하란 메시지 까지요,,, 그렇지 않으면 ( else ) 데이터를 찾았단 말이겠죠? 결과를 parent 윈도우에    
    뿌려 주면 되는 것입니다. 

    그럼 이쯤에서 디비의 구조를 한번 보고 넘어 가겠습니다.



--------------------------------------------------------------------------------
     table name : post

    post : 우편번호(예:110110)

    addr1: 시,도 ,, (예: 서울시)

    addr2: 구,군 ,, (예: 강남구, 고창군,,,,)

    addr3: 면,동,,, (예: 역삼도, 구암리,,,,)


--------------------------------------------------------------------------------


    그럼, 결과를 추출했다면 어떻게 해야 할까요,,, 맞습니다. addr1+addr2+addr3 이렇게 하면 될 것    
    같습니다.     그리구, 또하나 같은 동이나 같은 면이 존재할 경우는??? 저 같은 경우는 같은 조건이 두 
    개 이상 나올 때는 기본적으로 콤보 박스의 option과 텍스트 값으로 넣었습니다.  그럼 쉽게 문제 해결    
    되겠죠? 노란 색으로 된  부분의 처리가 바로 그 부분이다.

    그럼 잠시 자바 스크립 부분을 설명하고 넘어가 보고 싶군요.

    먼저 소스에 있는 form.post_no[i].value 값은 여러 콤보박스의 값 중 선택된 값 (result("post")를    
    나타내고 form.post_no[i].text 값은 option의 텍스트의 값입니다. (rusult("addr4"))

    여기에서 넘어가는 i의 값은 form.post_no.selectedIndex (form객체 post_no의 index 값입니다. )

    위에서 넘어온 인덱스 값을 i라는 변수로 받아 처리한 것입니다. 그럼, 현재 우편번호는 (110110)을    
    다음과 같이 (110-110)으로 넣어야 하기 때문에 값을 나눠야 합니다.

    자바 스크립트에서 값을 나누는 함수는 substring(0,3)입니다. 처음부터 3번째 문자까지 값을 취하게 되는
    것입니다. 이쯤이면 이해가 가실려나 모르겠네요... 저도 전문적으로 공부하지 못해서,, 이해를 못하셨다면,
    , 죄송,,   참, 그리구, 부모 윈도우로 값을 넘길땐 openner 객체를 사용하는거 아시죠,, ???
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.