AGMedlem sedan mars 20001 229 inlägg
Ifall man skall ha en delete-funktion på sidan som anpassas efter hur många checkboxes som är ifyllt hur gör man då lättast?
Jag har tagit fram följande snutt, men jag misstänker att det finns bättre.
'form.jsp
<form method="post" action="result.jsp">
<input type="checkbox" name="checkbox" value="3"> Första boxen<br>
<input type="checkbox" name="checkbox" value="5"> Andrea boxen<br>
<input type="checkbox" name="checkbox" value="7"> Tredje boxen<br>
<p>
<input type="submit">
</form>
'result.jsp
String[] checkbox;
checkbox = request.getParameterValues("checkbox");
for(int counter = 0; counter < checkbox.length; counter++)
{
String posts = checkbox[counter]+",";
SQL = "delete from table where id = "+posts+" ";
}
Kom även på ett annat problem, varför fungerar inte följande kod:
int round = Math.round("56,70");
Andreas
spangoMedlem sedan juni 20006 147 inlägg
Fråga 1
Jag skulle nog gjort så här (snålar på resurserna):
String[] checkboxes = request.getParameterValues("checkbox");
StringBuffer sqlBuf = new StringBuffer("delete from table where id in (");
for(int i = 0; i < checkboxes.length; i++){
sqlBuf.append(checkboxes[i]);
if (i > 0)
sqlBuf.append(',');
}
sqlBuf.append(')');
String sql = sqlBuf.toString();
Fråga 2
Det funkar inte därför att Math.round tar double eller float som argument. Math.round(56.70) ska det alltså vara. Vill du ha fram en double eller float ur en String kan du använda parseFloat eller parseDouble.
AGMedlem sedan mars 20001 229 inlägg
Tyvärr spango får jag inte din kod att fungera, får ett null värde vilket genererar fel. Dock ändrade jag om min kod något, men den vill ej heller fungera, måste bero på "," borde byta ut det mot "and" eller något sådant på ett smart sätt, nån som har något förslag?
Andreas
spangoMedlem sedan juni 20006 147 inlägg
Vilken rad får du nullfelet på, då?
AGMedlem sedan mars 20001 229 inlägg
Resin vill inte precisera sig. står något med <int>.
Andreas
spangoMedlem sedan juni 20006 147 inlägg
Vet inte om det var det som var felet, men for-loopens innehåll ska se ut så här:
if (i > 0)
sqlBuf.append(',');
sqlBuf.append(checkboxes[i]);
AGMedlem sedan mars 20001 229 inlägg
Raderna genererar nu inget fel, dock tas inga poster bort, man vidarbefodras till sidan show.jsp
if (request.getParameter("action").equals("delete")){
Statement stmt = db.createStatement();
String[] checkboxes = request.getParameterValues("checkbox");
StringBuffer sqlBuf = new StringBuffer("DELETE FROM [URLS] WHERE [Id] IN (");
for(int i = 0; i < checkboxes.length; i++){
sqlBuf.append(checkboxes[i]);
if (i > 0)
sqlBuf.append(',');
sqlBuf.append(checkboxes[i]);
}
sqlBuf.append(')');
String sql = sqlBuf.toString();
stmt.close();
response.sendRedirect("show.jsp");
}
Andreas
SPiNMedlem sedan mars 20005 832 inlägg
Tja, det verkar som att du aldrig kör frågan i strängen sql. :)
AGMedlem sedan mars 20001 229 inlägg
Du får väldigt gärna då förklara hur detta problem återgärdas.
Andreas
SPiNMedlem sedan mars 20005 832 inlägg
Lägg till:
stmt.executeUpdate ( sql );
Innan du stänger ditt statement. :)
AGMedlem sedan mars 20001 229 inlägg
Tyvärr när jag markerar två poster tas endast en av dem bort.
Andreas