webForumDet fria alternativet

Hur loopar man smartast igenom två arrays "samtidigt"?

ASP

7 svar · 265 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

Jag hämtar massor av fomulärfält, hälften med namnet "intQuantity" och hälften med namnet "intProdID".

Med Request.Form("abc") sparas de i arrays (eller?);
t.ex: 4, 6 & och 3, 4

Nu vill jag skapa SQL-satser som med Update som lägger in värdena två i taget, ett värde från ena typen och ett värde från den andra typen. Förstår ni?

Så här ser koden ut nu. Som ni ser på utskriften så fungerar det ej.

inForm = Request.Form.Count
For I = 1 To inForm
	strSQL = "Update ShoppingBaskets Set SB_Quantity 
= "& Request.Form("intQuantity") &" Where SB_Products_ID = "& 
Request.Form("intProdID") &" AND SB_SessionID = "& 
Request.Cookies("Webbshop")("SessionID")
	objConn.execute strSQL,,128
Next
Update ShoppingBaskets Set SB_Quantity = 4, 6 Where SB_Products_ID = 3, 4 AND SB_SessionID = 656703724

:)

Medlem sedan dec. 20003 563 inlägg
#2

Det funkar inte riktigt.
Du måste på något sätt koppla samman ett av dessa inQuantity med en intProdID

Medlem sedan mars 20021 889 inlägg
#3

Hmm... du menar att jag ska skapa en 2-dim matris och sedan loopa genom den? Hur gör jag det utifrån mina värden i så fall?

:)

Medlem sedan mars 20015 287 inlägg
#4

Hur många formulärfält är "massor"?
Samt vad heter dina formfält? Har de bara två namn?

Medlem sedan mars 20021 889 inlägg
#5

Ja, de har bara två namn.
Men jag tror jag vet hur jag ska göra nu.

Kommer tillbaka med svaret när jag har tid att fixa med det så kan ni dissa eller berömma.

:)

Medlem sedan mars 20021 889 inlägg
#6

Ok, nu behöver jag hjälp! ;)
Jag har skrivit följande, halvtaskiga, kod:

strQuantity = Request.Form("intQuantity")
strProdID = Request.Form("intProdID")
arrQuantity = Split(strQuantity,", ")
arrProdID = Split(strProdID,", ")
		
For i = 0 To Ubound(arrQuantity)
	For j = 0 To Ubound(arrProdID)
		strSQL = "Update ShoppingBaskets Set SB_Quantity = "& arrQuantity(i) &" Where SB_ID_Products = "& arrProdID(j) &" AND SB_SessionID = "& Request.Cookies("Webbshop")("SessionID")
		Response.Write strSQL
		objConn.execute strSQL,,128
	Next
Next

Formuläret före denna sidan har denna uppbyggnaden:

<form>
<input type="text" name="intQuantity">
<input type="hidden" name="intProdID">
<input type="text" name="intQuantity">
<input type="hidden" name="intProdID"> 
</form>

Problemet är att fyra SQL-frågor körs i stället för två stycken som
det borde vara.

Jag tror att felet ligger i att jag har två matriser i stället för en
med två dimensioner, men jag vet inte hur jag fixar det.

Någon?

:)

Medlem sedan mars 20021 889 inlägg
#7

... försökte skapa en sammansatt 2-dim matris utifrån de jag redan hade men det gick inte riktigt. Jag vet heller inte om det är det bästa sättet att lösa det på.

strQuantity = Request.Form("intQuantity")
strProdID = Request.Form("intProdID")
arrQuantity = Split(strQuantity,", ")
arrProdID = Split(strProdID,", ")
intFields = Ubound(arrQuantity)
Dim arrProdIDAndQuantity(1,intFields)
		
For i = 0 To Ubound(arrProdIDAndQuantity)
		arrProdIDAndQuantity(0,i) = arrQuantity(0,i)
		arrProdIDAndQuantity(1,i) = arrProdID(0,i) 
Next
Microsoft VBScript compilation error '800a0402' 
Expected integer constant 
Dim arrProdIDAndQuantity(1,intFields)
---------------------------^

:)

Medlem sedan mars 20021 889 inlägg
#8

Ok, så här blev koden. Den fungerar i alla fall...
Säg till om ni vet hur jag kan optimera!

If Request.Form("intQuantity") <> "" Then
Dim strQuantity, strProdID
Dim arrQuantity, arrProdID
Dim i, j
strQuantity = Request.Form("intQuantity")
strProdID = Request.Form("intProdID")
arrQuantity = Split(strQuantity,", ")
arrProdID = Split(strProdID,", ")

For i = 0 To Ubound(arrQuantity)
		strSQL = "Update ShoppingBaskets Set SB_Quantity = "& arrQuantity(i) &" Where SB_ID_Products = "& arrProdID(i) &" AND SB_SessionID = "& Request.Cookies("Webbshop")("SessionID")
		objConn.execute strSQL,,128
Next
End If

:)

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)