본문 바로가기

개발중/Web

Web04 아이디 중복체크 과정

728x90
반응형

사용자에게 ID를 입력 받았을 때

ID는 기본키 이기 떄문에 유일성과 최소성을 만족 해야 한다.

그러기에 해줘야 하는 중복체크

 

 

</head>
<body ><!-- onload="info()" -->
   <br>
   GuestWrite 문서입력화면 <!-- 단독실행가능 -->
   <form method="get" action="guestWriteSave2.jsp" name="myform">
      사번 : <input type="text" name="sabun" maxlength="4" id="sabun" size="8">
      <input type="button" onclick="idCheck();" value="idCheck"><br>
      이름 : <input type="text" name="name" id=""><br>
      제목 : <input type="text" name="title" id=""><br>
      급여 : <input type="text" name="pay" ><br>
      메일 : <input type="email" name="email" id=""><br>      
          <input type="button" onclick="nullCheck();" value="등록하기">
          <!--submit의 단점은 value값이 없어도 넘어가버린다는 것 
              button의 단점은 따로 기능을 정의하기 전까지 값이 넘어가지 않는다는 것 -->
          <input type="reset" value="입력취소">
   </form>
   <br>
   	     
      <a href="guestWrite.jsp"> [등록] </a>      
      <a href="index.jsp"> [index] </a>
      <a href="guestList.jsp"> [전체출력] </a>
</body>

 

 

 

 <input type="button" onclick="idCheck();" value="idCheck"><br>

 

사용자가 사번을 입력하고 idCheak를 누르면 onclick="idCheck(); 화면으로 이동 한다.

 

 

      function idCheck(){
         a= document.myform.sabun.value;
         len_sabun = document.myform.sabun.length;
         
         if(a==null || a==""){
            alert("사번데이터를 입력하세요");
            myform.sabun.focus();
            return;
         }
         window.open("openID.jsp?idx="+document.myform.sabun.value,
        		     "title","width=500, height=200, left=700, top=300");

 

 

dociment.myform.sabun.value

myform 에 있는 sabun.value 의 값을 가지고 온다 

 

if( null check ){

    값이 비어있다면 alert로 경고창을 띄어주고

    myform.sabun.focus();

    초점을 sabun text 창으로 맞추어 준다.

}

 

window.open ("openID.jsp ? idx=" + document.myform.sabun.value , ~임의 제목~~ ,  ~~~크기~~~);

 

openID.jsp 이 창을 열어!

document.myform.sabun.value 이 값 idx 에 담아서 보내주고

 

</head>
<body bgcolor="yellow" >
 <%
    Gdata = request.getParameter("idx");
 %>

<div>
  <img src="images/bar.gif" width=400><br>
   <form name="open_form" method="get"
          action="openIDSave.jsp?idx=<%=Gdata%>">
   
     userid:<input type="text" name="userid" value="<%=Gdata %>" >
            <input type="submit" value="중복처리" >
            
   </form>
  <img src="images/bar.gif" width=400><br>
</div>
</body>

 

 <%
    Gdata = request.getParameter("idx");
 %>

 

값을 받아와서 받아온 값을 기본 값으로 설정

 

userid:<input type="text" name="userid" value="<%=Gdata %>" >
           

 

 

 

중복 처리를 누르면 "submit"!

 

<form action : "openIDSave.jsp? idx = <%=Gdate%>" >

실행이된다

 

<body>
  <p>
   <%  //openIDSave.jsp 단독실행하면에러발생 
   try{
         Gdata = request.getParameter("idx");
         Gsabun = Integer.parseInt(request.getParameter("userid"));
        //중복체크
       msg="select count(*) cnt from guest where sabun = " + Gsabun;
        //System.out.println("넘어온 값 : " + Gsabun);
       ST=CN.createStatement();
        RS=ST.executeQuery(msg);
        RS.next();
         if (RS.getInt("cnt")>0) {
            %>
           <script type="text/javascript">
              alert("이미 있는 사번 입니다. 다른 사번을 이용하세요.");
              location.href="openID.jsp";
              
              //history.back();
           </script>
           <%
      }else{
         %>
         <script type="text/javascript">
              alert("사용가능한 sabun 입니다.");
              location.href="GuestWrite.jsp";
              window.close();
           </script>
        <%
      }
   }catch(Exception ex){ System.out.println("에러 "+ex); }
   
   %>     

</body>

 

Gdata = request.getParameter("idx");

데이터를 받아와서 

 

 msg="select count(*) cnt from guest where sabun = " + Gsabun;

쿼리문 작성

 

ST=CN.createStatement();
RS=ST.executeQuery(msg);

SQL 호출 해서 이미 있는 사번인지 확인

 

 

if( cnt 가 1 이상이라면 이미 존재 ){

 

     alert("이미 있는 사번 입니다. 다른 사번을 이용하세요.");

     사용 할 수 없다는 경고문

     

     location.href = "openID.jsp"

     openID.jsp 로 다시 이동한다

 

} else{

 

     alert("사용가능한 sabun 입니다.");

     사용 가능하다는 안내문

 

   

 

    location.href = "GuestWrite.jsp"

    GuestWrite.jsp 여기로 다시 이동하고 (다시 입력해)

 

    window.close();

    openID.jsp 창을 닫아준다

}

 

 

 

중복 체크 하는 법이 머릿속으로는 그려졌지만 코드로 알아가기는 쉽지 않았다.

그래도 이해하고 나니 어떤식으로 흘러가는지 이해하게 되었다. 

다음 번에 똑같은 문제가 주어졌을 때 더 나은 코드를 작성 할 수 있을꺼같은 느낌

728x90
반응형

'개발중 > Web' 카테고리의 다른 글

Web01입력  (0) 2020.07.27
TOMCAT 설정하기  (0) 2020.07.26
Web03 응용해서 내가 다 만들어보기  (0) 2020.07.24
Web03 readonly  (0) 2020.07.23
Web03 post / get  (0) 2020.07.23