webForumDet fria alternativet

Kolla värden på utloopade checkboxar

ASPur ASP

9 svar · 616 visningar · startad av web00132

web00132Medlem sedan maj 2001797 inlägg
#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?

Peter SMedlem 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
DenkanMedlem 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...? ;>

emissionMedlem 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
web00132Medlem 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?

emissionMedlem 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
web00132Medlem 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! :)

Peter SMedlem 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.

web00132Medlem 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.

Peter SMedlem 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

136 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)