2016-09-21 1 views
0

Ich habe einen Code geschrieben, wo der Administrator den Zugriff hat, um die allgemeinen Benutzer von aktiv zu inaktiv und umgekehrt zu ändern. Ich möchte also die Datenbank aktualisieren, wenn der Radiobutton von aktiv auf inaktiv geändert wird. HierDatenbank Änderungen in Radiobutton in Jsp

ist der Code:

<% 
    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> 

Aber in der Ausgabe, wenn ich ein Optionsfeld ändern, werden alle Anfragen automatisch ausgeführt, um die Datenbank zu aktualisieren ich für alle Daten in der DB.

Antwort

1

Mit onclick müssen Sie einen Ajax-Aufruf aufrufen und die Antwort aktualisieren. Sie sollten nicht wie onclick = "<% SOME SQL Query%>" verwenden. Deshalb werden alle Zeilen aktualisiert.

Schritt 1: "Onclick =" update (this.value, '<% out.println (E-Mail);%>') "/>

Schritt 2: hinzufügen JQuery lib und fügen Sie eine JS Funktion

 
    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); } }); }

Ref: Wie ajax-Aufruf How to pass parameters in GET requests with jQuery

Schritt 3 aufzurufen: i) In update-status.jsp, db Verbindung ii) Empfangsparameter der e-Mail-Adresse und aktuellen s Stellen Tatus. iii) Führen Sie die Abfrage stmt1.executeUpdate ("Update Zuweisung Flag = '+ Status +' wo E-Mail = '" + E-Mail + "'") iv) out.println ("aktualisiert");

+0

willkommen @LavinaChhabra – Senthil

+0

kann dies ohne die Verwendung von AJAX getan werden? –

+0

Sie können das tun, aber Seitenaktualisierung passiert und Sie müssen die Position beibehalten. Ohne Ajax wird es keine interaktive/bessere Benutzererfahrung geben, wenn die gesamte Seite neu geladen/aktualisiert wird. Sie können wie folgt onchange = "Seitenname.jsp? Email =" + email + "& status =" + this.value; Beim Aktualisieren, holen Sie sich die Werte und machen Sie die Db-Manipulation. Aber dies wird jedes Mal aktualisiert, wenn Sie den gewählten Wert für jede Zeile ändern. – Senthil

0

Sie mischen zwei verschiedene Codes. Der Schlüssel ist, zu realisieren, wo und wenn jeder Code ausgeführt wird - JSP auf dem Server, wenn die Seite angefordert und gerendert (dh vor die Antwort an den Browser senden) und Javascript in Ihrem Browser, nach der Browser erhält die bereits generierte Antwort.

I.e. in Ihrem

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

der <% stmt1.executeUpdate("update assignment set flag='I' where email='"+email+"'"); System.err.println("I"+email); %> Teil auf dem Server ausgeführt, wenn die Seite erzeugt wird, und nur die alert('changed to inactive'); wartet im Browser, bis das Eingabefeld geklickt wird.

Was Sie brauchen, ist AJAX.

Seitliche Anmerkung: Setzen Sie Java-Code nicht in JSP, verwenden Sie MVC-Muster, oder setzen Sie den Code zumindest in eine "util" -Klasse und rufen Sie die Klasse von JSP.

+0

jetzt verstehe ich, warum es nicht funktioniert .. danke –

+0

@LavinaChhabra Würde es Ihnen etwas ausmachen, meine Antwort dann upvote? –

Verwandte Themen