/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Loope i array (lidt lang..)
Fra : Jacob Nielsen


Dato : 20-01-03 18:51

Hej

Jeg har et array som er genereret ud fra et database udtræk med getrows.
Dette ser sådan ud:

strMenuSQL = "SELECT menuID,mName,mLink,parent from cam_menu ORDER BY
parent, menuID ASC"

'## Opretter MenuRS
Set MenuRS = Conn.Execute(strMenuSQL)

'## Smider indholdet af MenuRS ind i et array vha. getRows
If NOT MenuRS.EOF Then
arrMenuRS = MenuRS.GetRows()
max = Ubound(arrMenuRS,2)
Else
max = 0
End If

Dernæst kan jeg så loope med denne Do Loop:

row = 0
Do While (row<=max) '## Looper rækker

'## Definerer variabler
menuID = arrMenuRS(0,row)
mName = arrMenuRS(1,row)
mLink = arrMenuRS(2,row)
If(mLink="null") Then mLink=""
parent = arrMenuRS(3,row)

If (parent<>0) Then
parent = parent
Else
parent=""
End If

'## Udskriv
Response.write "<strong>menuID:</strong> " & menuID & "
<strong>parent:</strong> " & parent & " <strong>Name:</strong> " & mName &
"<br>" & vbcrlf

row = row + 1

Loop

Dette resulterer i følgende output:

menuID: 1 parent: Name: Top element1
menuID: 2 parent: Name: Top element2
menuID: 9 parent: Name: Top Element 3
menuID: 3 parent: 1 Name: Sub element1
menuID: 4 parent: 1 Name: Sub element2
menuID: 5 parent: 2 Name: Sub element1
menuID: 6 parent: 2 Name: Sub element2
menuID: 7 parent: 4 Name: Sub element1
menuID: 13 parent: 4 Name: Sub element2
menuID: 8 parent: 7 Name: Sub element1
menuID: 12 parent: 7 Name: Sub element2

Det er også fint nok sådan da, men jeg ville gerne ha' det skrevet ud så den
skrev menuID efterfulgt af de parent der svarede til menuID, altså f.eks.
således:

menuID: 1 parent: Name: Top element1
menuID: 3 parent: 1 Name: Sub element1
menuID: 4 parent: 1 Name: Sub element2
menuID: 7 parent: 4 Name: Sub element1
menuID: 8 parent: 7 Name: Sub element1
menuID: 12 parent: 7 Name: Sub element2
menuID: 13 parent: 4 Name: Sub element2
menuID: 2 parent: Name: Top element2
menuID: 5 parent: 2 Name: Sub element1
menuID: 6 parent: 2 Name: Sub element2
menuID: 9 parent: Name: Top Element 3

Er der nogle der har en god idé til dette? Jeg har set mig blind på
løsningen i hvert fald :)

Mvh. Jacob



 
 
F.Larsen (22-01-2003)
Kommentar
Fra : F.Larsen


Dato : 22-01-03 15:55

"Jacob Nielsen" <jacob.nielsenREMOVE@REMOVEget2net.dk> wrote in message
news:OEWW9.9959$vZ5.2363@news.get2net.dk...

> strMenuSQL = "SELECT menuID,mName,mLink,parent from cam_menu ORDER BY
> parent, menuID ASC"
>
> Det er også fint nok sådan da, men jeg ville gerne ha' det skrevet ud så
den
> skrev menuID efterfulgt af de parent der svarede til menuID, altså f.eks.
> således:

skal du så ikke bare sortere på parent, menuID ?


--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/



Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 16:53

F.Larsen skrev:

>> strMenuSQL = "SELECT menuID,mName,mLink,parent from cam_menu
>> ORDER BY parent, menuID ASC"

> skal du så ikke bare sortere på parent, menuID ?

Det gør han allerede - men det samler alle topmenuerne først.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

F.Larsen (22-01-2003)
Kommentar
Fra : F.Larsen


Dato : 22-01-03 18:31

så prøv omvendt -> menuID, parent

--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/



F.Larsen (22-01-2003)
Kommentar
Fra : F.Larsen


Dato : 22-01-03 18:31

så prøv omvendt -> menuID, parent

--
Flemming
http://home.cbkn.dk/Spyware/
http://home.cbkn.dk/Spam/



Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 18:39

F.Larsen skrev:

> så prøv omvendt -> menuID, parent

Det er ikke meget bedre. Det vil blot liste menupunkterne i den
rækkefølge de er oprettet (forudsat at menuID er et
autonummerfelt).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 18:57

Jacob Nielsen skrev:

> Er der nogle der har en god idé til dette? Jeg har set mig
> blind på løsningen i hvert fald :)

Et forslag.

   SELECT <feltliste>
   FROM menu m1 INNER JOIN menu m2
   ON m2.parentid = m1.menuid
   ORDER BY m2.parentid, m2.menuid

Det giver en liste hvor topmenunavnet findes i ét felt, mens
undermenunavnene findes i et andet - og så fungerer sorteringen.
Men det virker kun i et fastlagt antal niveauer (her 2) og det
kræver også at menuen er lige dyb alle steder (en topmenu der ikke
har undermenuer vil ikke komme med).

Man kan udbygge niveauerne ved at lægge flere joins på, men der vil
stadig være ovennævnte problemer. De kan muligvis undgås - men det
er ikke nok blot at skifte til LEFT JOIN.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jacob Nielsen (23-01-2003)
Kommentar
Fra : Jacob Nielsen


Dato : 23-01-03 14:54

"Jens Gyldenkærne Clausen" <jc@dmf.dk> wrote in message
news:Xns930BC0CA8CCA5jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Jacob Nielsen skrev:
>
> > Er der nogle der har en god idé til dette? Jeg har set mig
> > blind på løsningen i hvert fald :)
>
> Et forslag.
>
<SNIP FORSLAG>

Mange tak, men jeg har i mellemtiden selv fundet en løsning. Det er ikke
verdens pæneste og bestemt ikke den mest performance venlige, men her er
den:

Sub subShowSubMenu (ByRef varMenuID, parentID, Level)

strSubMenuItemsSQL = "SELECT * FROM cam_menu WHERE parent_pid = " &
varMenuID & " ORDER BY menu_sortorder ASC"
Set SubMenuRS = Conn.Execute(strSubMenuItemsSQL)

Do until SubMenuRS.EOF

intLevel = 0
Response.Write "<img src=""" & strPathAdmin & "/img/space.gif"" width="""
& Level*20 & """ height=""1"">"
If SubMenuRS("show_status") = "1" Then
Response.Write "- <font color=""#FF0000"">" & SubMenuRS("menu_name") &
funcInsertImageLevels("" & intModuleID & "","" & SubMenuRS("pid") & "","" &
SubMenuRS("menu_sortorder") & "") & "</font><br>" & vbCrlf
Else
Response.Write "- " & SubMenuRS("menu_name") & funcInsertImageLevels("" &
intModuleID & "","" & SubMenuRS("pid") & "","" & SubMenuRS("menu_sortorder")
& "") & "<br>" & vbCrlf
End If

Call subShowSubMenu(SubMenuRS("pid"), SubMenuRS("parent_pid"), Level+1)

SubMenuRS.MoveNext

Loop

SubMenuRS.Close
Set SubMenuRS = Nothing

End Sub

Denne sub-procedure bliver så kaldt i min løkke der så kun udskriver
top-level punkterne.

Funktionen funcInsertImageLevels udskriver nogle billeder efter det enkelte
menupunkt.

Mvh. Jacob



Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste