webForumDet fria alternativet

Kolla variabelvärden i loop?

3 svar · 278 visningar · startad av bigsky

bigskyMedlem sedan maj 2002821 inlägg
#1

Jag tilldelar följande variabler värden:

item_number01 = Request.Form("item_number1")
item_number02 = Request.Form("item_number2")
item_number03 = Request.Form("item_number3")
item_number04 = Request.Form("item_number4")
item_number05 = Request.Form("item_number5")

Sedan vill jag i if-satsen nedan kolla om någon variabel innehåller ett visst värde:

If item_number1 = "50103" OR item_number2 = "50103" OR item_number3 = "50103" OR item_number4 = "50103" OR item_number5 = "50103" Then
'DO SOMETHING HERE
End If

Finns det inget smartare sätt att kolla om någon av variablerna innehåller värdet "50103"? Det blir ju väldigt jobbigt att öka på item_number varje gång man lägger till en produkt i sitt system.

doggelitoMedlem sedan juni 20003 076 inlägg
#2

Ofta (inte jämt) när man märker att koden blir komplicerad och ohanterbar så har man tänkt fel från början.
Så om du förklarar vad formuläret är till för och vad 50103 är för nått så kanske nån kommer på en bättre lösning! :)

En variant:

If instr(item_number1 & item_number2 & ..., "50103") Then
     gör nått
End If
Engine^Medlem sedan dec. 20003 887 inlägg
#3

En Array är en möjlig lösning.

Const ITEMS_COUNT = 5

Dim arrItems(ITEMS_COUNT)

For i = 1 To ITEMS_COUNT
  arrItems(i) = Request.Form("item_number0" & i)

  If arrItems(i) = "50103" Then
    [blue]' Do stuff[/blue]
  End If
Next

Det fungerar för ITEM_COUNT < 10. Jag tycker att forumlärslösningen verkar konstig, men det finns säkert en förklaring till varför du har det som du har det.

bigskyMedlem sedan maj 2002821 inlägg
#4

Det hela är en del av PayPals Instant Payment Notification funktion. Och just i detta exempel för deras kundvagnssystem. På ipn.asp som är den sidan köparen blir skickad till efter genomförd betalning ska jag kolla igenom hela kundvagnens innehåll och maila ut information om alla de produkter/tjänster som kunden köpt. Eftersom informationen är olika för varje produkt/tjänst måste jag ju veta vilka produkter/tjänster som köpts. Därför vill jag kolla igenom de formulär fält som PayPal skickar till mig.

Men om man har typ 100 olika produkter och kunden rent teoretiskt köper en av varje blir det ju väldigt många fält att kontrollera och det var det jag undrade om man kunde effektivisera? "50103" är alltså ett artikelnummer.

Har kunden bara köpt en produkt heter formuläret Request.Form("item_number1") och sedan lägger PayPal till ett nummer för varje ny produkt i kundvagnen. Ex. Request.Form("item_number2"), Request.Form("item_number3") osv.

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