2016-09-21 4 views
0

관리자가 일반 사용자를 활성에서 비활성으로 또는 그 반대로 변경할 수있는 코드를 작성했습니다. 따라서 라디오 버튼이 활성에서 비활성으로 변경되면 데이터베이스를 업데이트하려고합니다. 내가 한 라디오 버튼을 변경할 때 jsp의 라디오 버튼에서 데이터베이스 변경

<% 
    while (rs.next()) { 
     String firstname = rs.getString("firstname"); 
     String lastname = rs.getString("lastname"); 
     String email = rs.getString("email"); 
     String password = rs.getString("password"); 
     String age = rs.getString("age"); 
     String sex = rs.getString("sex"); 
     String haddress = rs.getString("haddress"); 
     String oaddress = rs.getString("oaddress"); 
     String phonenumber = rs.getString("phonenumber"); 
     String flag = rs.getString("flag"); 
     Statement stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 
        ResultSet.CONCUR_READ_ONLY); 


    %> 



     <tr> 
      <td> 
       Name: <% out.println(firstname); %> <% out.println(lastname); %> 

      </td> 
      <td> 
       <% if (flag.equals("A")){ %> 

       Active: <input type="radio" value="A" name="<% out.println(email); %>" onclick="<% stmt1.executeUpdate("update assignment set flag='A' where email='"+email+"'"); 
           System.err.println("A"+email); %> 
     alert('changed to active');" checked> 
       Inactive: <input type="radio" value="I" name="<% out.println(email); %>" onclick="<% stmt1.executeUpdate("update assignment set flag='I' where email='"+email+"'"); 
           System.err.println("I"+email); %> 
     alert('changed to inactive');"> 
       <% 
        }else if(flag.equals("I")){%> 

       Active: <input type="radio" value="A" name="<% out.println(email); %>" onclick="<% stmt1.executeUpdate("update assignment set flag='A' where email='"+email+"'"); 
           System.err.println("A"+email); %> 
     alert('changed to active');"> 
       Inactive: <input type="radio" value="I" name="<% out.println(email); %>" onclick="<% stmt1.executeUpdate("update assignment set flag='I' where email='"+email+"'"); 
           System.err.println("I"+email); %> 
     alert('changed to inactive');" checked> 

그러나 출력

은, 모든 쿼리는 DB에있는 모든 데이터를 I로 데이터베이스를 업데이트, 자동으로 실행 : 여기

는 코드입니다.

답변

1

onclick을 사용하면 ajax 호출을 호출하고 응답을 업데이트해야합니다. onclick = "< % SOME SQL Query %>"와 같이 사용하면 안됩니다. 그것이 모든 행을 업데이트하는 이유입니다.

단계 1 : "의 onclick ="updatestatus (this.value '<퍼센트의 out.println (이메일) %>') "/>

2 단계 : JQuery와 LIB를 추가하고 추가 할 JS 기능

 
    function updatestatus(statuschg, email) { 
     /*ajax call to some update-status.jsp with email and current value needs to be passed */ 
     //ajax code goes here ... 
     $.ajax({ 
      type: "post", 
      url: "update-status.jsp", //this is my servlet 
      data: "email=" +email"&status="+statuschg, 
      success: function(msg){
alert(msg); } }); }

참조 : Ajax 호출을 호출하는 방법 How to pass parameters in GET requests with jQuery

3 단계 : 전) 업데이트-status.jsp에서이) DB 연결 II를 수립 이메일 주소와 현재의의 매개 변수를받을 tatus. iii) 질의 stmt1.executeUpdate (업데이트 할당 세트 플래그 = '+ status +'여기서 email = ' "+ email +"' ") iv) out.println ("Updated ");

+0

환영합니다 @LavinaChhabra – Senthil

+0

AJAX를 사용하지 않고이 작업을 수행 할 수 있습니까? –

+0

이 작업을 수행 할 수 있지만 페이지 새로 고침이 발생하고 위치를 유지해야합니다. Out of ajax를 사용하면 페이지 전체가 새로 고침/새로 고침 될 때 대화 형/사용자 경험이 향상되지 않습니다. onchange = "pagename.jsp? email ="+ email + "& status ="+ this.value;와 같이 사용할 수 있습니다. 새로 고침에서 값을 가져 와서 db 조작을 수행합니다.하지만이 옵션은 매 행마다 선택 값을 선택/변경하는 경우 항상 새로 고침됩니다. – Senthil

0

두 개의 다른 코드를 혼합합니다. 서버에서 JSP 페이지를 요청하고 렌더링 한 후, 브라우저에서 (즉 전에 응답이 브라우저로 전송됩니다)과 자바 스크립트 - 열쇠는 실현 각각의 코드가 실행됩니다입니다 브라우저는 이미 을 수신하고 응답을 생성합니다.

e.e. 당신의

onclick="<% stmt1.executeUpdate("update assignment set flag='I' where email='"+email+"'"); System.err.println("I"+email); %> alert('changed to inactive');" 

<% stmt1.executeUpdate("update assignment set flag='I' where email='"+email+"'"); System.err.println("I"+email); %> 부분은 페이지가를 생성 및 브라우저만을 alert('changed to inactive'); 대기가 입력 필드를 클릭 할 때까지 때 서버 에서 실행됩니다.

AJAX이 필요합니다.

사이드 노트 : JSP로 Java 코드를 넣거나 MVC 패턴을 사용하거나 코드를 "util"클래스에 넣지 말고 JSP에서 클래스를 호출하십시오.

+0

지금은 왜 작동하지 않았는지 이해 .. 감사합니다 –

+0

@LavinaChhabra 내 대답을 upvote 마음에 드시겠습니까? –

관련 문제