2016-09-27 1 views
1

Ich habe einen Code geschrieben, in dem ich möchte, dass der Administrator den Benutzer als aktiv oder inaktiv über Radiobutton ändern kann. Dafür benutze ich JSP, MySQL und JS.Empfangen von Werten in JSP von JS-Funktion erstellt in anderen JSP

admin.jsp:

<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); %>" id="<% out.println(email); %>" onchange="pageupdatecta('<% out.println(email); %>', this.value);" checked> 
        Inactive: <input type="radio" value="I" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecti('<% out.println(email); %>', this.value);"> 
        <% 
         }else if(flag.equals("I")){%> 

        Active: <input type="radio" value="A" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecta('<% out.println(email); %>', this.value);"> 
        Inactive: <input type="radio" value="I" name="<% out.println(email); %>" id="<% out.println(email); %>" onchange="pageupdatecti('<% out.println(email); %>', this.value);" checked> 
<% 
} %> 
<script type="text/javascript"> 
    function pageupdatecta(emailid, optedval) { 
     location.href='changeToActive.jsp?email='+emailid+'&optedval='+o‌​ptedval; 
    } 
    function pageupdatecti(emailid, optedval) { 
     location.href='changeToInactive.jsp?email='+emailid+'&optedval='+o‌​ptedval; 
    }  
</script> 

changeToActive.jsp:

try{ 

Class.forName("com.mysql.jdbc.Driver"); 
System.err.println("Driver loaded!"); 

Connection con = DriverManager.getConnection(
       "jdbc:mysql://localhost/work", "root", "MyNewPass"); 
System.err.println("Database Connected.."); 

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 
         ResultSet.CONCUR_READ_ONLY); 

stmt.executeUpdate("update assignment set flag='A' where email='"+email+"'"); 
            System.err.println("A"+email); 

} 

Können Sie mir sagen, wie von der Funktion erhalten Werte, und meinen Code Arbeit machen?

+0

Js läuft am Frontend, während 'jsp' am Serverende läuft. – passion

+0

Sie haben also eine Tabelle (kein Formular), in der zwei Optionsfelder vorhanden sind. Sobald der Administrator ein Optionsfeld ausgewählt hat, sollte der entsprechende aktive/inaktive Wert in der Datenbank aktualisiert werden. Außerdem gibt es keinen Absenden-Button. Ist das richtig, was du willst? –

+0

@RohitGaikwad Ja das ist richtig –

Antwort

1

Der folgende Code wird einen Datensatz aus der Zuordnungstabelle der Arbeitsdatenbank für ID = 1 abrufen.
Der überprüfte Status des Optionsfelds wird durch den vorhandenen Status im DB geprüft.

Hier, sobald Sie den Status von aktiv zu inaktiv oder inaktiv zu aktiv ändern, werden die Änderungen erfolgreich in der Datenbank widergespiegelt.

index.jsp Seite:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1" %> 
<%@ page import="java.sql.*,stack.filter.JDBCConnector" %> 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Radio Select</title> 
</head> 
<body> 
<% 
Connection con = null; 
String firstname = null; 
String lastname = null; 
String email = null; 
String flag = null; 
try { 
    con = JDBCConnector.connect_database(); 
    Statement stmt = con.createStatement(); 
    ResultSet rs=stmt.executeQuery("select * from assignment where id=1"); 

    while(rs.next()){ 
     firstname=rs.getString(2); 
     lastname=rs.getString(3); 
     email=rs.getString(4); 
     flag=rs.getString(5); 
    } 
    System.out.println(""+firstname+" "+lastname+" "+email+" "+flag); 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    con.close(); 
} 
%> 
<table> 
    <tr> 
     <td> 
       Name: <% out.println(firstname); %> <% out.println(lastname);   %> 
     </td> 
     <td> 
     <% 
      if(flag.equals("A")){ 
       %> Active: <input type="radio" name="<%=email%>" id="r1" value="A" onclick="updateStatus()" checked="checked"/> 
       In active: <input type="radio" name="<%=email%>" id="r2" value="I" onclick="updateStatus()"/> 
       <% 
      }else if(flag.equals("I")){ 
       %> Active: <input type="radio" name="<%=email%>" id="r1" value="A" onclick="updateStatus()"/> 
       In active: <input type="radio" name="<%=email%>" id="r2" value="I" onclick="updateStatus()" checked="checked"/> 
       <% 
      } 
     %> 
     </td> 
    </tr> 
</table> 
<script type="text/javascript"> 
     function updateStatus(){ 
      if (document.getElementById('r1').checked) { 
       location.href='changeToActive.jsp?email='+'${email}'+'&status=A'; 
      }else if (document.getElementById('r2').checked) { 
       location.href='changeToActive.jsp?email='+'${email}'+'&status=I'; 
      }  
     } 
</script> 
</body> 
</html> 

changeToActive.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<%@ page import="java.sql.*,stack.filter.JDBCConnector" %> 
<% 
Connection con = null; 
try { 
    con = JDBCConnector.connect_database(); 
    System.err.println("Database Connected.."); 

    Statement stmt = con.createStatement(); 
    String status = request.getParameter("status"); 
    String email = request.getParameter("email"); 
    int i= stmt.executeUpdate("UPDATE assignment SET status='"+status+"' where email='"+email+"'"); 
    if(i==1){ 
     out.println("Successfully updated the status"); 
    } 

} catch (Exception e) { 
    e.printStackTrace(); 
}finally{ 
    con.close(); 
} 
%> 

JDBCConnector.java Klasse: für zentral erstellt Verbindungsobjekt in Ihrer Anwendung zu schaffen.

package stack.filter; 

import java.sql.Connection; 
import java.sql.DriverManager; 
public class JDBCConnector {   
public static Connection connect_database(){ 
    Connection con = null; 
    try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager.getConnection("jdbc:mysql://localhost/work", "root", "root"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     if(con!=null) 
     { 
      System.out.println("Connected..."); 
     } 
    } 
    return con; 
} 
} 

Zuordnungstabelle:

CREATE TABLE `assignment` (
`id` INT(11) NOT NULL, 
`firstname` VARCHAR(30) DEFAULT NULL, 
`lastname` VARCHAR(30) DEFAULT NULL, 
`email` VARCHAR(30) DEFAULT NULL, 
`status` CHAR(1) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) 

/*Data for the table `assignment` */ 

INSERT INTO `assignment`(`id`,`firstname`,`lastname`,`email`,`status`) VALUES (1,'rohit','gaikwad','[email protected]','I'); 

Hinweis: Die id = 1 Primärschlüssel ist hartcodiert, ich denke, man eine gewisse Logik hat, die eine Aufzeichnung der Zuordnung in Ihrer HTML-Tabelle zeigt.

+0

Endlich funktioniert mein Code .. die einzige Bearbeitung, die ich in Ihrem Code vorgenommen habe, wurde eingefügt die location.href direkt im onchange-Wert, anstatt eine Funktion für sie aufzurufen .. denn wenn ich eine Funktion verwendete, konnte sie nur die letzte E-Mail-ID identifizieren. Vielen dank für Deine Hilfe! –

+0

@Lavina Chabra: Aber wir sollten Scriptlet nicht auf Jsp verwenden. In der Industrie ist das überhaupt nicht akzeptabel. –

+0

Sieht so aus, als ob es nur eine Zuweisung ist, Sie können stattdessen EL/JSTL verwenden. Ich habe Scriplet durch EL ersetzt. –

0

Sie können mit den Werten von Abfrageparametern erhalten:

String email = request.getParameter("email"); 
String optedval = request.getParameter("optedval"); 

Dann können Sie sie in Ihrer SQL-Anweisung verwenden können.

+0

Nachdem ich dies auch verwendet habe, bin ich nicht in der Lage, den Wert zu Active oder Inactive über Radiobutton in DB zu ändern ... –

0

Es sollte so sein. Sie haben dem Radio dieselbe ID gegeben.

Active: <input type="radio" value="A" name="<% out.println(email); %>" id="id1" onchange="pageupdatecta('<% out.println(email); %>');" checked> 
Inactive: <input type="radio" value="I" name="<% out.println(email); %>" id="id2" onchange="pageupdatecti('<% out.println(email); %>');"> 


<script> 
function pageupdatecta(emailid) { 
alert('Hi'); 
location.href='changeToActive.jsp?email='+emailid; 
} 
function pageupdatecti(emailid) { 
alert('Hi'); 
location.href='changeToActive.jsp?email='+emailid; 
} 
</script> 

und in Ihrer Servlet Verwendung String email = request.getParameter("email"); den Wert des E-Mail-Variable zu erhalten.