webForumDet fria alternativet

Fånga upp värde från checkbox

ASP

22 svar · 755 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Jag har en lista befinner sig inom ett formulär. Lista är loopad från en databas.

Varje post börjar med:

<input type="checkTask<% = objRS("Id") %>" name="checkbox" value="<% = objRS("Id") %>" />

Id är uppdragets Id

Hur gör jag för att "fånga upp" att rutan är ikryssad när jag klickar på submit? Jag vill att id:na för de ikryssade uppdraget skall skickas vid submit
Submiten innebär tex att uppdraget skall raderas.

Mvh
henrik

Medlem sedan jan. 20013 582 inlägg
#2

hmmm.. har tänkt lite... ;)

Om jag namnger checkboxarna med samma namn. Skickas inte en kommaseparerad sträng då med id:na på alla de posterna som var ikryssade?

Mvh
Henrik

Medlem sedan okt. 2004159 inlägg
#3

Loopa

Börja med att sätta Value="ON" till exempel

Sedan loopar du i svarskoden.
Skicka med ett hidden-fält med antalet checkboxar så kan du skriva:

for i=1 to cint(request("antalcheckbox"))
if request("checkTask"&cstr(i)) = "ON" Then
    'kod för att radera uppdrag
end if
next
Medlem sedan jan. 20013 582 inlägg
#4

Hmm, förstår inte riktigt.

Måste inte value vara det unika uppdragsid´t?

Hur ska jag annars veta vilket som skall raderas?

Provade att göra så här

<input type="checkbox" name="checkTask<% =objRS("Id") %>" value="<% =server.htmlencode(objRS("Id")) %>" /><input name="cnt" type="hidden" value="<% =objRS("Id")%>" />

...

For each item in Request.Form("cnt")

response.write request.form("checkTask" & item) 

Next

då fick jag ut alla id:na på de ikryssade checkboxarna
Är detta et sätt eller fins det bättre?

Mvh
henrik

Medlem sedan jan. 20013 582 inlägg
#5

det var inte att bra sätt överhuvudtaget... den loopar ju även ut de tomma checkboxarna utan värde :(

Mvh
henrik

Medlem sedan dec. 20025 483 inlägg
#6

devotion skrev:

hmmm.. har tänkt lite... ;)

Om jag namnger checkboxarna med samma namn. Skickas inte en kommaseparerad sträng då med id:na på alla de posterna som var ikryssade?

Mvh
Henrik

Det stämmer. För att se vilka som var ikryssade kan du exempelvis använda split(txt, ",").

Medlem sedan jan. 20013 582 inlägg
#7

Hej igen :)

Detta funkar:

For each item in Request.Form("cnt")

	iTaskId = request.form("checkTask" & item)
	
	If iTaskId <> "" then
		sSQL = "DELETE FROM tblmaterial WHERE taskId = " & iTaskId
		objConn.execute(sSQL),,128
	End If
Next

men det känns lite knöligt... någon som vet bättre?

Mvh
henrik

Medlem sedan jan. 20013 582 inlägg
#8

Peter S skrev:

Det stämmer. För att se vilka som var ikryssade kan du exempelvis använda split(txt, ",").

Ok, men kan man använda sig av det när man ska ta bort poster ifrån databasen. Dvs, kan man kombinera split och loop? :OO

Mvh
henrik

Medlem sedan juni 20003 076 inlägg
#9

döp checkboxarna till samma namn å loopa sen. :)

For i = 1 To uBound(Request.Form("checkTask"))
     response.write request.form("checkTask")(i)
Next
Medlem sedan okt. 2004159 inlägg
#10

Krypa till korset

Okej, jag erkänner - jag tänkte för snabbt och fel.
Hoppas tomten kommer med lite energi och kunskap till mitt nu rätt så tomma huvud. :x

Medlem sedan jan. 20013 582 inlägg
#11

doggelito skrev:

döp checkboxarna till samma namn å loopa sen. :)

For i = 1 To uBound(Request.Form("checkTask"))
     response.write request.form("checkTask")(i)
Next

Det lät ju bra! :)

Men:

Request-objekt, ASP 0105 (0x80004005)
Ett matrisindex ligger utanför intervallet.
/uppdragNu/deleteTask.asp, line 19

Varför?

Medlem sedan jan. 20013 582 inlägg
#12

Senast redigerad av doggelito, i dag klockan 20:33. Anledning: kom på att du kan nog inte köra med for each då

hehe!

nu får jag dock följnade fel:

Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'uBound'
/uppdragNu/deleteTask.asp, line 18

Mvh
henrik

Medlem sedan dec. 20025 483 inlägg
#13

devotion skrev:

Ok, men kan man använda sig av det när man ska ta bort poster ifrån databasen. Dvs, kan man kombinera split och loop? :OO

Mvh
henrik

Du skulle ju kunna göra någonting liknande

delete
   from tabell t
  where t.id in (" & request.form("checkbox") & ")

...beroende på vad för typ av värde 'Id' är.

Medlem sedan juni 2002256 inlägg
#14
For i = 0 To uBound(Request.Form("checkTask"))-1
     response.write request.form("checkTask")(i)
Next
Medlem sedan jan. 20013 582 inlägg
#15

Denkan skrev:

For i = 0 To uBound(Request.Form("checkTask"))-1
     response.write request.form("checkTask")(i)
Next

Det blir tyvärr inkompatibla typer på det med...

Mvh
henrik

Medlem sedan juni 20003 076 inlägg
#16

Jag är lite ringrostig känner jag! :)

For i = 1 To Request.Form("checkTask").Count
Medlem sedan jan. 20013 582 inlägg
#17

Peter S skrev:

Du skulle ju kunna göra någonting liknande

delete
   from tabell t
  where t.id in (" & request.form("checkbox") & ")

...beroende på vad för typ av värde 'Id' är.

Hmmm, det fungerade ju fint.. trodde inte man kunde använda "in" när man använder delete..

Finns det någon hake. Annars verkar det ju vara en lätt och fin lösning?

Koden ser nu ut så här:

<input type="checkbox" name="checkTask" value="<% =server.htmlencode(objRS("Id")) %>" />

...

sSQL = "DELETE FROM tblmaterial WHERE taskId in (" & request.form("checkTask") & ")"

Mvh
henrik

Medlem sedan juni 200032 967 inlägg
Medlem sedan jan. 20013 582 inlägg
#19

doggelito skrev:

Jag är lite ringrostig känner jag! :)

For i = 1 To Request.Form("checkTask").Count

:)

Det fungerade ju bättre!

For i = 1 To Request.Form("checkTask").Count
     response.write request.form("checkTask")(i)
Next

Då är ju frågan vilket sätt jag ska använda?

Mvh
henrik

Medlem sedan jan. 20013 582 inlägg
#20

@nders skrev:

http://www.webforum.nu/showthread.php?p=1132877#post1132877

Hehe,

@nders the trådkiller kom in och dominerade.... Det är rätt svar menar du?

Mvh

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