
Originariamente inviata da
andbin
Hai chiaro l'esempio che ti ho fatto nel post
#8 ?
Bene, immagina di avere anche una cella con (e riprendo anche quanto ho detto in #2 ):
<td><form method="post" action="url-di-elimina"><input type="hidden" name="id" value="
<%= rs.getString("ID") %>"><input type="submit" value="Elimina"></form></td>
Dove ID č l'identificativo del record su DB. E naturalmente puoi farcire il HTML con una gestione Javascript magari anche solo per chiedere conferma prima del submit.
Ok, quindi in questo caso prendo dati dal form e non c' č bisogno di passare parametri tramite url?
Ho scritto questo, ma a quanto pare non funziona..
Per la tabella con il bottone di rimozione (in fondo la parte del bottone):
codice:
public String getPrenotazioni(String us){
String ris="";
String ruolo="";
try {
// registrazione driver JDBC per Derby DB
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
Connection conn = DriverManager.getConnection(url, user, pwd);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT RUOLO FROM TABELLA_UTENTI WHERE ID = '"+us+"' ");
while (rs.next()) {
ruolo += rs.getString("RUOLO");
}
if(ruolo.equals("admin")){
String tmp="<td><form method=\"post\" action=\"eliminaPrenotazione.jsp\"><input type=\"hidden\" name=\"id\" value=\"<%= rs.getString(\"NUMERO\") %>\"><input type=\"submit\" value=\"Elimina\"></form></td>";
rs = st.executeQuery("SELECT * FROM TABELLA_PRENOTAZIONI");
while (rs.next()) {
ris += "<tr> <td align=left >"+rs.getString("ID") +"</td>"+
"<td align=left>"+rs.getString("NOME")+"</td>"+
"<td align=left>"+rs.getString("COGNOME")+ "<td align=left>"+rs.getString("NUMERO")+tmp;
}
}
else if(ruolo.equals("user")){
String tmp="<td><form method=\"post\" action=\"eliminaPrenotazione.jsp\"><input type=\"hidden\" name=\"id\" value=\"<%= rs.getString(\"NUMERO\") %>\"><input type=\"submit\" value=\"Elimina\"></form></td>";
rs = st.executeQuery("SELECT * FROM TABELLA_PRENOTAZIONI WHERE ID = '"+us+"' ");
while (rs.next()) {
ris += "<tr> <td align=left >"+rs.getString("ID") +"</td>"+
"<td align=left>"+rs.getString("NOME")+"</td>"+
"<td align=left>"+rs.getString("COGNOME")+ "<td align=left>"+rs.getString("NUMERO")+tmp;
}
}
rs.close();
st.close();
conn.close();
}
catch (SQLException e) {
System.out.println(e.getMessage());
}
return ris;
}
La pagina JSP a cui passo il controllo:
codice:
<%@page import="viste.ConnectionDb"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%HttpSession s=request.getSession();
ConnectionDb c=new ConnectionDb();
/*boolean ok=*/c.removePrenotazione(request.getParameter("id"));
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Prenotazione</title>
</head>
<body>
<h1>Hai rimosso la tua prenotazione!</h1>
<form>
<input type="button" value="Torna alle prenotazioni" onClick="javascript:history.go(-1)" name="button" align='center'>
</form>
</body>
</html>
E il metodo di rimozione dal database che mi sembra corretto:
codice:
public boolean removePrenotazione(String numero){
try {
// registrazione driver JDBC per Derby DB
DriverManager.registerDriver(new org.apache.derby.jdbc.ClientDriver());
Connection conn = DriverManager.getConnection(url, user, pwd);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("DELETE * FROM TABELLA_PRENOTAZIONI WHERE NUMERO='"+numero+"'");
rs.close();
st.close();
conn.close();
}
catch (SQLException e) {
System.out.println(e.getMessage());
return false;
}
return true;
}