DELETE poster som är kryssade i checkbox...

ASP

11 svar · 301 visningar · startad av JAreMANNEN

Medlem sedan aug. 20002 272 inlägg
Trådstart#1

Jag är på G idag.... :)

Har ett forum med en adminsida som visar alla poster i forumet med en checkbox framför.

Alla poster som jag kryssar i checkboxen för vill jag ta bort..

Mitt problem är att jag inte vet hur man ska ta emot alla värdena från checkboxarna och sedan få in i SQL-strängen...

Tacksam för all hjälp jag kan få!!

Medlem sedan dec. 19998 577 inlägg
#2

Lättast är om du ger varje checkbox samma namn, och ger dom värdet av det id som inlägget har...

Sedan tar du emot såhär:

deletes = Split(Request.Form("checks"),", ")
strSQL = "Delete from tabell where "

For i = 0 To Ubound(deletes)
strSQL = strSQL & "id = "&deletes(i)&" OR "
Next
strSQL = Left(strSQL, Len(strSQL)-3)

databas.execute(strSQL)

Kanske lite syntaxfel... men principen borde funka... :)

Mvh, Vide

Medlem sedan mars 20002 836 inlägg
#3

Testa:

strDel = Request.Form("del")
arrDel = Split(strDel,",")
For i = 0 to UBound(arrDel)
	strSQLdel = "DELETE * FROM DIN_TABELL WHERE DITT_FALT_ID = " & arrDel(i)
	objConn.Execute(strSQLdel)
Next

ngt liknande ...
cya,

Medlem sedan dec. 19996 721 inlägg
#4

Vides variant är funkis. Här är tre till (bara för att visa olika kodningetekniker som man kanske inte tänker på så ofta)


strSQL = "Delete from tabell where "
For each intID in Request.Form("checks")
strSQL = strSQL & "id = "& intID &" OR "
Next
strSQL = Left(strSQL, Len(strSQL)-3)

databas.execute(strSQL)

eller

deletes = Split(Request.Form("checks"),", ")
strSQL = "Delete from tabell where ID=" & join(deletes," OR ID=")

databas.execute(strSQL)

eller

strSQL = "Delete from tabell where ID IN (" & Request.Form("checks") & ")"

databas.execute(strSQL)
Medlem sedan aug. 20002 272 inlägg
#5

Beslutsångest... :)

Vilken är den bästa att använda sig utav då??

Använder mig detta just nu..

   strSQL = "DELETE * FROM post WHERE "
   For each intID in Request.Form("fld_checkbox")
   strSQL = strSQL & "id = "& intID &" OR "
   Next
   strSQL = Left(strSQL, Len(strSQL)-3)
   objConn.Execute(strSQL)

Funkar bra... :e

Medlem sedan okt. 20005 273 inlägg
#6

Varför byta när den funkar bra :e

Medlem sedan aug. 20002 272 inlägg
#7

Tänkte mest på vilket exempel som går snabbast att utföra eftersom det är till en stor site med mkt besökare jag ska ha detta till..

Man får koda lite annorlunda mot när man sitter och labbar.. :)

Medlem sedan feb. 200245 inlägg
#8

Olika namn

Men om man har stigande namn på checkboxarna...

typ checkbox1,checkbox2,checkbox3 etc

Hur gör man då?

Medlem sedan dec. 200012 464 inlägg
#9
strSQL = "Delete from tabell where "
For i = 1 to 3
strSQL  = strSQL & "id = "& request.form("checkbox" & i) & " OR "
Next
strSQL = Left(strSQL, Len(strSQL)-3)

databas.execute strSQL,,128
Medlem sedan feb. 200245 inlägg
#10

okajj

Men om jag inte vet hur många checkboxar det är da?

loopa fram dem alltså!

Medlem sedan okt. 20005 273 inlägg
#11
intAntalCheckbox = 0
For each objItem in Request.Form
		If Left(objItem, 8) = "checkbox" Then
			intAntalCheckbox = intAntalChecbox -- 1
		End If				
	Next

strSQL = "Delete from tabell where "
For i = 1 to intAntalCheckBox
strSQL  = strSQL & "id = "& request.form("checkbox" & i) & " OR "
Next
strSQL = Left(strSQL, Len(strSQL)-3)

databas.execute strSQL,,128

Har ej testat denna men.........

Medlem sedan dec. 200012 464 inlägg
#12

I så fall så kan du ha ett fält av typ hidden där du lägger in hur många checkboxar det finns när du skapar formuläret

253 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)