webForumDet fria alternativet

Smartaste sättet att fånga upp en array "baklänges"

ASP

9 svar · 299 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Jag har ett formulär som genererar en siffra för aktuellt menyval som man har valt.

Alltså intMenyID = 23 är vad som skickas till nästa sida.

Jag har hela menyn i en array i en session, session("listMenu").

intID, strName, strRollOver

Hur skulle ni göra för att koppla namnet till siffran??

Det fungerar givetvis att loopa igenom hela arrayen... men inget smartare!?

Medlem sedan sep. 2002366 inlägg
#2

Kanske jag som är dum.. men hur menar du egentligen?

-Eitraz

Medlem sedan mars 20023 561 inlägg
#3

Det beror väl på hur lång arrayen är om det är lönt att loopa igenom den...?

Medlem sedan nov. 2002105 inlägg
#4

Två förslag

1. Loopa igenom arrayen om den inte är för lång. Detta är en relativt snabb process och är inte så krävande.

2. Lagra menyn i ett Dictionary objekt istället som du lagrar i Application/Session objektet. Då kan du komma åt "menyposten" direkt med nyckeln.

För att lagra menyn

dicMeny.add(MenyID, Vad_du_vill_värde)

För att hämta ett menyvärde

vad_du_vill_variabel = dicMeny.item(MenyID)

Obs ovanstående är "torrkodat" och inte testat. Kan vara syntaxfel men du förstår nog tanken.

Medlem sedan juli 20003 825 inlägg
#5

Blir det olika eller blir det bara en!?

Skulle dessa fungera!?

dicMenu.add(23, "Bjässe")
dicMenu.add(44, "Stuva")
dicMenu.add(19, "Tranås")
dicMenu.add(21, "Fjällbrynt")

response.wriite dicMenu.item(23)

och det skulle stå Bjässe där?

Medlem sedan juli 20003 825 inlägg
#6
Microsoft VBScript compilation  error '800a0414'

Cannot use parentheses when calling a Sub

/fragor/fraga.asp, line 96

dictionaryMenu.add(myRow(0,j), myRow(1,j))
------------------------------------------^

*******

FOR j = 0 TO UBound(arrSubMenu,2)
	response.write "<INPUT TYPE=""radio"" NAME=""intSubMenuID"" VALUE=""" & arrSubMenu(0,j) & """"
	IF j = 0  THEN response.write " CHECKED"
	response.write ">" & arrSubMenu(1,j) & vbCRLF

	[b]dictionaryMenu.add(myRow(0,j), myRow(1,j))[/b]

	' ## WRITE LINE BREAK IF THERE ARE MORE POSTS TO LOOP
	IF NOT j = UBound(arrSubMenu,2) THEN response.write "<BR>"
NEXT
Medlem sedan juni 200032 967 inlägg
#7
dictionaryMenu.add myRow(0,j), myRow(1,j)

eller

call dictionaryMenu.add(myRow(0,j), myRow(1,j))

Mvh,

Medlem sedan juli 20003 825 inlägg
#8

Men hallå... Så här står det i manualen!

[VBScript]
Dim d ' Create a variable.
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" ' Add some keys and items.
d.Add "b", "Belgrade"
d.Add "c", "Cairo"

Medlem sedan juli 20003 825 inlägg
#9

OK, jag testade nu. Meningen var alltså att värdena skulle sättas på en sida och sedan användas på en annan (nästa sida).

Detta verkar inte fungera... För övrigt var det en snygg lösning!

Medlem sedan juli 20003 825 inlägg
#10
' ## LOOP THROUGH ALL SUBMENUS
myRow = session("listFAQsubMenu")
IF IsArray(myRow) THEN
FOR j = 0 TO UBound(myRow,2)
	IF myRow(0,j) = CInt(intSubMenuID) THEN body = "Kategori:" &vbTAB & myRow(1,j) & vbCRLF & vbCRLF
NEXT
END IF

Ja, det fick bli så här...

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