webForumDet fria alternativet

Flera kryssrutor

Java

10 svar · 506 visningar · startad av AG

Medlem sedan mars 20001 266 inlägg
Frågan#1

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

Medlem sedan juni 20008 205 inlägg
#2

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.

Medlem sedan mars 20001 266 inlägg
#3

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

Medlem sedan juni 20008 205 inlägg
#4

Vilken rad får du nullfelet på, då?

Medlem sedan mars 20001 266 inlägg
#5

Resin vill inte precisera sig. står något med <int>.

Andreas

Medlem sedan juni 20008 205 inlägg
#6

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]);
Medlem sedan mars 20001 266 inlägg
#7

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

Medlem sedan mars 20007 896 inlägg
#8

Tja, det verkar som att du aldrig kör frågan i strängen sql. :)

Medlem sedan mars 20001 266 inlägg
#9

Du får väldigt gärna då förklara hur detta problem återgärdas.

Andreas

Medlem sedan mars 20007 896 inlägg
#10

Lägg till:

stmt.executeUpdate ( sql );

Innan du stänger ditt statement. :)

Medlem sedan mars 20001 266 inlägg
#11

Tyvärr när jag markerar två poster tas endast en av dem bort.

Andreas

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)