View Full Version : [JSP]valore da submit
Dato il seguente codice che segue a quello di una select che genera una tabella, io vorrei assegnare ad ogni tasto compra l'id o il titolo della rispettiva riga nel database e penso di esserci riuscito ma il problema è che non riesco a riprendere tale valore con la direttiva request.getParameter(), qualcuno puo gentilmente illuminarmi? grazie
<form method='get'>
<td><input type='submit' String id='<%="titolo"%>' name='compra' value='compra' />
</form>
<%
out.println("</tr>");
}
out.println("</table>");
if(request.getParameter("compra") != null){
String sql;
String codice =request.getParameter("titolo");
stmt= Conn.createStatement();
sql="Delete from libri where Titolo= '"+codice+"'";
int stat=stmt.executeUpdate(sql);
if(stat!= 0)
out.println("ok");
else
out.println("no");
}
I valori che puoi recuperare con request.getParameter(String) sono i value corrispondenti a un name. Quindi credo che nel tuo caso non puoi recuperarli da jsp. Io di solito in casi come questo uso Javascript o meglio Jquery. Faccio così solitamente.
<tag data-codice="<%= codice %>">qualcosa</tag>
E lo recupero con
$(selettore).data("codice")
Grazie della risposta, dato che di jquery ne so davvero poco ho provato a fare cosi sai dirmi dove sbaglio? grazie
try{
Connection Conn=null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
Conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/libri?user=root&password=rogers");
Statement stmt=Conn.createStatement();
if(request.getParameter("compra") != null){
String sql;
int codice= 0;
$("input[type='hidden']").data("id");
stmt= Conn.createStatement();
sql="Delete from libri where id = '"+codice+"'";
int stat=stmt.executeUpdate(sql);
if(stat!= 0)
out.println("ok");
else
out.println(codice);
}
String query ="SELECT * FROM libri";
ResultSet rs=stmt.executeQuery(query);
out.println("<table border=1 align=center>");
out.println("<td bgcolor=silver>ISBN</td>");
out.println("<td bgcolor=silver>EDITORE</td>");
out.println("<td bgcolor=silver>AUTORE</td>");
out.println("<td bgcolor=silver>TITOLO</td>");
out.println("<td bgcolor=silver>PREZZO</td>");
out.println("<td bgcolor=silver>COMPRA</td>");
while(rs.next()){
//ottiene i dati
out.println("<tr>");
String editore=" ",autore=" ",titolo=" ",isbn=" ",box=null;float prezzo=0;int id=0;
isbn =rs.getString("ISBN");
editore=rs.getString("Editore");
autore=rs.getString("Autore");
titolo=rs.getString("Titolo");
prezzo=rs.getFloat("Prezzo");
id=rs.getInt("id");
out.println("<td>"+isbn+"</td>");
out.println("<td>"+editore+"</td>");
out.println("<td>"+autore+"</td>");
out.println("<td>"+titolo+"</td>");
out.println("<td>"+prezzo+"</td>");
%>
<form action="galleria.jsp" method="post">
<%
out.print("<td>");
box="<input type='submit' name='compra' value= 'Compra' >";
out.print(box);
out.print("<td>");
out.println("<td><input type='hidden' data=" + id + " /></td>");
%>
</form>
<%
out.println("</tr>");
}
out.println("</table>");
Ma è un casino :mbe: Io usando Bootstrap, Jquery e soprattuto i tag di tomcat per l'interazione con il db avrei scritto un quarto del codice.
Il problema è che non funziona nemmeno cosi... Comunque i miei strumenti per realizzare la web application sono jsp e servelet
Quel parameter che vuoi recuperare lo devi settare nella url della pagina.
Ti faccio un esempio. Nella jsp x hai la tua Select che manda via form i dati ad una Servlet (immagino). La servlet legge questi dati ci lavora e da questa te vuoi cadere nella pagina compra. Nell'url della pagina compra devi impostare alla fine "?compra=valore".
Ovviamente in questo modo passerai i dati in chiaro. Un altro modo è di usare i metodi set/getAttribute(). Nella servlet imposti request.setAttribute("compra", valore) e nella jsp compra usi request.getAttribute("compra") per recuperare il valore.
sinceramente(so che è da buon sviluppatore) ma non mi interessava molto il lato di ottimizzazione ma solo che funzionasse, quindi non uso servlet ma solo jsp puro, la mia idea era quella di strutturare la pagina galleria.jsp in modo tale da stamparmi tutti i dati del database i forma tabellare e di affiancare questi dati ad un tasto compra che quando attivato richiamava la stessa pagina galleria.jsp che risconoscendo che il tasto compra è stato attivato provvedeva a cancellare quella riga... mi sembrava tutto molto semplice anche se non ottimale come soluzione.
Capisco, non sò se può funzionare. Prova a mettere nell'action della form del tasto compra l'url du galleria.jsp con il parameter. Una cosa del tipo galleria.jsp/?compra=valore.
Poi Sempre nella jsp recuperi il parameter. Ma sicuramente è molto ingarbugliata.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.