webForumDet fria alternativet

loopa samma kod

ASP

13 svar · 267 visningar · startad av eriks

Medlem sedan apr. 20011 418 inlägg
Frågan#1

Hej! Jag vill visa en rullgardinsnmeny med namn (ca 30 st, alla som står i databasen) 10 gånger med hjälp av en loop. Nu är det ju på det viset att namnen i rullgardinen är samma alla 10 gångerna, så därför är det ju onödligt att hämta om namnen med SQL 10 gånger. Skulle man inte kunna hämta namnen en gång och sedan gå tillbaka till den koden i Loopen?

Tack! /Erik

Medlem sedan juni 200032 967 inlägg
#2

visst, spara dem i en array bara, så kan du använda namnen var som helst på sidan.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan apr. 20011 418 inlägg
#3

Hur gör man det? Jag kan absolut ingenting om arrayer.

Tack! /Erik

Medlem sedan maj 20011 312 inlägg
#4
For i = 0 to 10

	For i = 0 to ubound(DinArray,1)
		Rullgardins-htmlkod
	Next

Next
Medlem sedan apr. 20011 418 inlägg
#5

...nu fattar jag inte riktigt.

Rullgardinens HTML -kod är ju inte statisk på så sätt att den ändras om en ny användare registrerar sig. Därför kan jag ju inte skriva ut HTML -koden. Däremot kommer HTML -koden vara samma genom hela loopen, och därför vill jag inte skriva SQL mer än en gång.

Någon som förstår?

Tack! /Erik

Medlem sedan maj 20011 312 inlägg
#6

:)

Det du skriver i "html"-koden är just din db-hämtning och skapandet av rullgardinen...

Medlem sedan apr. 20011 418 inlägg
#7

men då kommer ju SQL att köras 10 gånger (väl). Jag vill att SQL ska köras endast en gång.

Medlem sedan juni 200032 967 inlägg
#8

nej, du kör din sql-fråga 1 gång, fyller upp arrayen (det kan vi göra väldigt enkelt mha getrows() som det varit himla mycket prat om i dagarna).

sedan är det bara att loopa igenom din array när du ska skriva ut namnen.

exempel:

strSQL = "select distinct namn from tabellen order by namn"
arrNamn = objConn.execute("strSQL").getrows()

...

for i = 0 to ubound(arrNamn,1)
response.write arrNamn(i,0)
next

någonting sånt borde funka.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan maj 20011 312 inlägg
#9

är nog lite trött...:)

DB-hämtningen gör du innan for-looparna in i en array

Dim ArrRS
ArrRS = RS.GetRows()
RS.Close
Set RS = Nothing
For a = 0 to ubound(ArrRS,2)

Sen så där jag skrev html-kod så använder du array:n...

Medlem sedan apr. 20011 418 inlägg
#10

tack så mycket...

Jag är som sagt arrayidiot, så det skulle vara utmärkt om ni förklarade rad för rad vad som händer. När DB- hämtningen ligger inom for-looparna ser det ut som om SQL körs flera gånger (men jag kan ju ingenting om det som sagt). Vet ni var man kan lära sig mer om arrayer (det finns inte på Vides asp -skola), de verkar vara bra att kunna.

Tack! /Erik

Medlem sedan dec. 1999653 inlägg
#11

naturligtvis har vides asp-skola även förklarat arrayer: http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_12.asp

läs igenom den så kommer du säkerligen att få en grund... :)

mvh.

------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)

Medlem sedan juni 200032 967 inlägg
#12

När DB- hämtningen ligger inom for-looparna ser det ut som om SQL körs flera gånger

hmm... varför har du lagt db-hämtningen i en for-loop?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan apr. 20011 418 inlägg
#13

Lukaspojken skrev några inlägg högre upp "DB-hämtningen gör du innan for-looparna in i en array".

Medlem sedan juni 200032 967 inlägg
#14

jag tror att nyckelordet där är innan.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)