login register Sysop! about ME  

2018년 08월 14일 09시 14분 00초,     조회수 : 1120
  제목 : [문의] DB 데이터 2번 insert 되는 현상
SEQ : 164074 글쓴이 : double2

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

오래된 ASP기반 채용 시스템을 수정하여 사용중에 있습니다.

그런데, 간헐적으로 사용자측에서 사용시 경력사항이나 자격증 정보 등이 DB에 두번 insert됩니다.
(버튼 2번 연속 클릭 금지 script 는 italic체로 표현했습니다)

- recruit04_n.asp           입사지원 로그인
- recruit04_write_N.asp  입사지원서 작성
- recruit04_proc_N.asp   입사지원 DB 처리

변경을 해봐도 간헐적으로 2번씩 입력되네요. 제 자리나 주변 자리에서 입력시에는 따로 문제 없습니다.

1. MAIN.ASP

<form id="recruitForm" name="recruitForm" class="sky-form" novalidate="novalidate" 
action="/recruit/recruit04_proc_N.asp" method="POST" enctype="multipart/form-data" onSubmit="return 
formCheck();">

<input type="hidden" name="mode" id="mode" value="" />
.
.
<footer>

<a href="javaScript:void(0)" onClick="recruit_proc('DEL');return false;" class="button ">삭제</a>

<a href="javaScript:void(0)" onClick="recruit_proc('UPD');return false;" class="button">임시저장</a>

<a href="javaScript:void(0)" onClick="recruit_proc('SAVE');return false;" class="button ">최종지원하기</a>   

</footer>

</form>

2. Submit 스크립트

function recruit_proc(mode) {
	   	   if(doubleSubmitCheck()) false;
	   	   alert(doubleSubmitCheck());
	   	   $("#mode").val(mode);

         	   // 최종 입사지원 했을 경우 수정 불가
	   	   if($("#sttus").val() == "2") {
	   	   	   alert("최종 입사지원을 하셨기 때문에 수정/삭제는 불가합니다.");
	   	   	   return;
	   	   }
	   	   // 임시저장, 최종지원하기 일 경우 필수 validate 체크

	   	   if(mode != 'DEL') {
	   	   	   if(!formCheck()) {return;}//20130809
	   	   	   if(mode == "UPD" && !confirm("지원서를 임시저장 하시겠습니까?\n임시저장할 경우 입사지원서를 수
정할 수 있습니다.") ) {
	   	   	   	   return;
	   	   	   } 
	   	   	   else if(mode == "SAVE" && !confirm("최종 입사지원 하시겠습니까?\n최종 입사지원을 할 경우 입사지
원이 완료됩니다.\n수정/삭제는 불가능합니다.") ) {
	   	   	   	   return;
	   	   	   }
	   	   } else {
	   	   	   if(!confirm("지원서를 삭제하시겠습니까?\n삭제한 지원서는 복구되지 않으며, 재 입력하셔야 합니다.")) 
{
	   	   	   	   return;
	   	   	   }
	   	   }	   	   
	   	   $("#recruitForm").submit();
}

var doubleSubmitFlag = false;

function doubleSubmitCheck(){
        if(doubleSubmitFlag){
            return doubleSubmitFlag;
        }else{
            doubleSubmitFlag = true;
            return false;
        }
    }	   

3. 폼 체크 Script

function formCheck() {	   	   	   	     
	   	   if($("#sex_kind").val() == '') {   //성별 필수항목추가 201312
	   	   	   alert('성별 선택해주세요.');
	   	   	   $("#sex_kind").focus();
	   	   	   return false;
	   	   }
.
.
	   	   if(rtnFlag) {
	   	   	   return false;
	   	   }
}

4. proc_N.ASP (DB 처리)
	   ' 입사 지원 구분 정보	   
	   req_empmn_sn = Trim(Upload("req_empmn_sn"))
	   req_nm = Trim(Upload("req_nm"))
	   req_email = Trim(Upload("req_email"))
	   req_secret_no = Trim(Upload("req_secret_no"))
	   req_sttus = Trim(Upload("req_sttus"))
	   req_empmn_info_sn = Trim(Upload("empmn_info_sn"))

	   mode = Trim(Upload("mode"))	   	   	   'UPD, SAVE, DEL

	   mber_sn = Trim(Upload("mber_sn"))

	   ' 처음 입사 지원 인 경우
	   If(req_sttus <> "UPD") Then 
	   	   
	   	   ' 입사 지원한 사용자 조회
	   	   getRecruitJoinResult = getRecruitJoin(req_nm, req_email)
	   	   	   	   
	   	   If(IsArray(getRecruitJoinResult)) Then 
	   	   	   mber_sn = getRecruitJoinResult(0, 0)

	   	   Else 
	   	   	   ' 입사지원한 사용자 Ins
	   	   	   values = Array(req_nm, req_email, req_secret_no)
	   	   	   setRecruitJoinResult = setRecruitJoin(values)

	   	   	   If Not IsEmpty(setRecruitJoinResult) And Int(setRecruitJoinResult) > 0 Then
	   	   	   	   mber_sn = setRecruitJoinResult
	   	   	   Else 	   	   	   	   
	   	   	   	   execJSAlert "입사지원 등록중 오류가 발생 하였습니다.1",1,""
	   	   	   End If 

	   	   End If 
	   End If 

' set dataArray 
	   empInfoValues = Array(empmn_info_sn, mber_sn, req_empmn_sn, sport_realm_one, sport_realm_two, 
hope_anslry, nm, nm_chcrt, nm_eng, brthdy, age, email, moblphon, telno, zip, adres, adres_detail, mtrsc_se, 
clss, dmblz_se, srvic_pd_begin, srvic_pd_end, exempt_resn, hobby, spcmnt, relgn, rwdmrt_trget, mrrg_at, 
detail_cn, sttus, family_one, family_two, family_three, carrer_month, image, sil_image, career_file_nm, 
career_file_path, self_file_nm, self_file_path,sex_kind,detail_cn1,detail_cn2,detail_cn3)   'SEX_KIND(성별 
20131209추가) detail_cn123(20131216추가)

If(mode <> "DEL") Then 
	   	   
	   	   ' 입사지원 학력사항 Proc
	   	   For i = 1 To acdmcr_schul_nm_cnt 
	   	   	   
	   	   	   acdmcr_sn = Trim(Upload("acdmcr_sn")(i))
	   	   	   acdmcr_schul_nm = Trim(Upload("acdmcr_schul_nm")(i))
	   	   	   acdmcr_schul_grade = Trim(Upload("acdmcr_schul_grade")(i))
	   	   	   acdmcr_schul_crse = Trim(Upload("acdmcr_schul_crse")(i))
	   	   	   acdmcr_major = Trim(Upload("acdmcr_major")(i))
	   	   	   acdmcr_compno_major = Trim(Upload("acdmcr_compno_major")(i))
	   	   	   acdmcr_pd_begin = Trim(Upload("acdmcr_pd_begin_yy")(i)) & 
Trim(Upload("acdmcr_pd_begin_mm")(i))
	   	   	   acdmcr_pd_end = Trim(Upload("acdmcr_pd_end_yy")(i)) & 
Trim(Upload("acdmcr_pd_end_mm")(i))
	   	   	   acdmcr_begin_option = Trim(Upload("acdmcr_begin_option")(i))
	   	   	   acdmcr_end_option = Trim(Upload("acdmcr_end_option")(i))
	   	   	   acdmcr_locplc = Trim(Upload("acdmcr_locplc")(i))
	   	   	   acdmcr_pnt = Trim(Upload("acdmcr_pnt")(i))
	   	   	   acdmcr_pnt_option = Trim(Upload("acdmcr_pnt_option")(i))
	   	   	   	   	   	    acdmcr_schul_nm = Replace(acdmcr_schul_nm,"고등학교","") '고등학교 
replace 20131216추가
	   	   	   	   	   	    acdmcr_schul_nm = Replace(acdmcr_schul_nm,"대학교","")   '대학교   replace 
20131216추가

	   	   	   If acdmcr_schul_nm <> "" Then 
	   	   	   	   
	   	   	   	   If acdmcr_sn = "" Then 
	   	   	   	   	   acdmcr_sn = 0
	   	   	   	   End If 

	   	   	   	   getRecruitAcdmcrExistResult = getRecruitAcdmcrExist(empmn_info_sn, acdmcr_sn, 
acdmcr_schul_grade)
	   	   	   	   
	   	   	   	   ' Upd
	   	   	   	   If(IsArray(getRecruitAcdmcrExistResult)) Then 

	   	   	   	   	   Call setRecAcdmcrUpdate(empmn_info_sn, acdmcr_sn, acdmcr_schul_nm, 
acdmcr_schul_grade, acdmcr_schul_crse, acdmcr_major, acdmcr_compno_major, acdmcr_pd_begin, 
acdmcr_pd_end, acdmcr_begin_option, acdmcr_end_option, acdmcr_locplc, acdmcr_pnt_option, acdmcr_pnt)
	   	   	   	   ' Ins
	   	   	   	   Else 

	   	   	   	   	   Call setRecAcdmcrInsert(empmn_info_sn, acdmcr_schul_nm, acdmcr_schul_grade, 
acdmcr_schul_crse, acdmcr_major, acdmcr_compno_major, acdmcr_pd_begin, acdmcr_pd_end, 
acdmcr_begin_option, acdmcr_end_option, acdmcr_locplc, acdmcr_pnt_option, acdmcr_pnt)
	   	   	   	   End If 
	   	   	   End If 
	   	   Next

	   ' 임시저장
	   If mode = "UPD" Then
	   	   
	   	   sttus = "1"
	   	   strMsg = "임시저장 되었습니다.\n최종 입사지원 하셔야 채용등록이 완료 됩니다."
	   	   strExec = 0
	   	   url = "recruit04_write_N.asp"

	   	   'UPD
	   	   setRecruitProcResult = setRecruitWriteProc(empInfoValues, sttus)

	   ' 최종 저장
	   ElseIf mode = "SAVE" Then 
	   	   
	   	   sttus = "2"
	   	   strMsg = "입사지원이 완료되었습니다.\n지원해주셔서 감사합니다."
	   	   strExec = 4
	   	   url = "recruit04_N.asp"

	   	   'UPD
	   	   setRecruitProcResult = setRecruitWriteProc(empInfoValues, sttus)
	   ' 삭제
	   ElseIf mode = "DEL" Then 

	   	   strMsg = "삭제되었습니다."
	   	   strExec = 4
	   	   url = "recruit04_N.asp"

	   '입사지원 임시저장 및 저장 성공
	   If setRecruitProcResult Then
	   	   
	   	   If mode <> "UPD" Then 
	   	   	   execJSAlert strMsg, strExec, "/recruit/" & url
	   	   Else 
%>
	   	   <script language="javascript">
	   	   	   alert("임시저장 되었습니다.\n최종 입사지원 하셔야 채용등록이 완료 됩니다.");
	   	   </script>

	   	   <form name="recruitFrm" method="post" action="/recruit/recruit04_write_N.asp">
	   	   
	   	   	   <input type="hidden" name="empmn_sn" value="<%=req_empmn_sn%>">
	   	   	   <input type="hidden" name="nm" value="<%=req_nm%>">
	   	   	   <input type="hidden" name="email_1" value="<%=Split(Trim(req_email), "@")(0)%>">
	   	   	   <input type="hidden" name="email_2" value="<%=Split(Trim(req_email), "@")(1)%>">
	   	   	   <input type="hidden" name="pass_1" value="<%=req_secret_no%>">
	   	   	   <input type="hidden" name="sttus" value="<%=req_sttus%>">

	   	   </form>
	   	   <script language="javascript">
	   	   	   document.recruitFrm.submit();
	   	   </script>
<%
	   	   End If 
	   Else
	   	   
	   	   strMsg = "입사 지원중 오류가 발생 하였습니다."
	   	   url = "recruit04_N.asp"
	   	   execJSAlert strMsg, 4, "/recruit/" & url

	   End If 
%>



제목 작성자 날짜 조회
[문의] DB 데이터 2번 insert 되는 현상 double2 2018-08-14 1120
흠 저는 소스보기가 조금 힘드네요 virgo75 2018-08-14 1032

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})