webForumDet fria alternativet

Kolla värden på utloopade checkboxar

ASP

9 svar · 618 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Jag loopar ut en lista med en massa produkter från en databas och till varje produkt skrivs också en checkbox ut. Tanken är att man ska kunna välja ett antal produkter vars produkt-ID ska läggas in i en annan tabell i DB:n. Mitt problem är att jag inte riktigt vet hur jag ska samla in informationen om vilka checkboxar som är ikryssade. Som det är nu döper jag checkboxarna efter produktens ID, typ:

sqlOpen = "SELECT * FROM produkt WHERE lager > 1 ORDER BY datum DESC;"
...
while not rs.eof
	<input type="checkbox" name="<%= rs("produktID") %>">
	...
	rs.movenext
wend

Hur ska jag göra för att samla in produkt-ID:t för de som är ikryssade?

Medlem sedan dec. 20025 483 inlägg
#2

Sätt samma namn på checkboxarna, men olika värden:

while not rs.eof
	<input type="checkbox" [b]name="c"[/b] value="<%= rs("produktID") %>">
	...
	rs.movenext
wend

if len(request.form("c")) > 0 then
    dim arr
    arr = split(request.form("c"), ",")

    ' ...
end if
Medlem sedan juni 2002256 inlägg
#3

Prova

while not rs.eof
	<input type="checkbox" name="product" value="<%= rs("produktID") %>">
	...
	rs.movenext
wend

Ta sen mot datan genom...:

Dim arrProducts, i
arrProducts = Split(Request.Form("product"),", ")
     For Each prodID In arrProducts
     ' Gör din tilläggning i dbn
     ' "INSERT INTO annan_tabell (productID) VALUE (" &prodID& ")"
     Next

Borde funka, tycker jag...

/ EDIT: Sen som alltid...? ;>

Medlem sedan dec. 19996 721 inlägg
#4

Man behöver (bör) inte splitta.

For Each prodID In Request.Form("product")
     ' Gör din tilläggning i dbn
     ' "INSERT INTO annan_tabell (productID) VALUE (" &prodID& ")"
     Next
Medlem sedan maj 2001797 inlägg
#5

Härligt! Det funkar jättebra, tack ska ni ha! :bire

Men apropå att splitta, jag skulle vilja köra samma variabel (request.form("c")) genom en if-sats i en loop, typ så här:

while not rs.eof
if annanvariabel = request.form("c") then
...
wend

Men grejen är att request.form("c"):s värde ser ut så här: "2134,1234,5435,7654". Det är alltså fyrasiffriga värden men hur många det är vet jag inte. Hur kan jag splitta upp request.form("c") så att jag kan testa de fyrasiffriga värdena i min if-sats?

Medlem sedan dec. 19996 721 inlägg
#6

Antingen gör du det inne i loopen, eller så kollar du med instr

if instr(", " & request.form("c") & ",",", " & annanvariabel & ",")>0 then
Medlem sedan maj 2001797 inlägg
#7

Hähä, försökte klura ut hur jag skulle göra med instr men jag fattade inte :l
Men det är lugnt, gav mig fan på att fixa en liten for-loop med en if-sats i. Funkar finfint! Tack alla för hjälpen! :)

Medlem sedan dec. 20025 483 inlägg
#8

Posta gärna lösningen så att andra kan ta del av den. Använd sedan funktionen "acceptera som slutgiltigt svar" på det inlägget.

Medlem sedan maj 2001797 inlägg
#9

Lite rörigt men men:

set rs7 = server.createobject("ADODB.recordset")
sqlOpen7 = "SELECT nyheterid FROM prod_nyhetsbrev;"
rs7.open sqlOpen7, objconn, adlockoptimistic

strCont = rs7("nyheterid")
strCont = split(strCont,",",-1,1)

rs7.close
set rs7 = nothing

<input type="checkbox" name="prod" value="<%= rs("produktID") %>"<%
for each item in strCont
strProd1 = CStr(rs("produktID"))
if strProd1 = item then
response.write " checked"
else
...
end if
next

Poängen är att jag lägger in alla produktid:n från en post i min db i strCont som jag sen splittar. Därefter kör jag en for-loop med en if-sats (som i sin tur ligger i en while-loop som loopar ut produktid:n från db:n) som kollar när produktid:erna stämmer överens och checkar därmed de checkboxar vid de produkter som produktid:n sparats för. Ganska självklara saker egentligen, eller hur? ;)

Sen är det faktiskt så att jag ställde två frågor i denna tråd, den första svarade Peter S m fl på. Men jag accepterar väl mitt eget svar som slutgiltigt svar då. Tack igen hörni! :bire

Är det nån som vill veta min exakta lösning kan ni messa mig.

Medlem sedan dec. 20025 483 inlägg
#10

Meningen med funktionen är att man skall acceptera det inlägg som löste problemet. Om ett inlägg löser halva problemet och ett annat inlägg den andra halvan, då kan man sammanställa de båda lösningarna i ett nytt inlägg och sedan acceptera det som slutgiltigt. Allt för att hjälpa andra att snabbt och smidigt hitta svaren på sina problem. :bire

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)