webForumDet fria alternativet

Flera kryssrutor

10 svar · 506 visningar · startad av AG

AGMedlem sedan mars 20001 229 inlägg
#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

spangoMedlem sedan juni 20006 147 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.

AGMedlem sedan mars 20001 229 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

spangoMedlem sedan juni 20006 147 inlägg
#4

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

AGMedlem sedan mars 20001 229 inlägg
#5

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

Andreas

spangoMedlem sedan juni 20006 147 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]);
AGMedlem sedan mars 20001 229 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

SPiNMedlem sedan mars 20005 832 inlägg
#8

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

AGMedlem sedan mars 20001 229 inlägg
#9

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

Andreas

SPiNMedlem sedan mars 20005 832 inlägg
#10

Lägg till:

stmt.executeUpdate ( sql );

Innan du stänger ditt statement. :)

AGMedlem sedan mars 20001 229 inlägg
#11

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

Andreas

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb