Avatar billede carl_erik Nybegynder
25. juli 2004 - 20:37 Der er 5 kommentarer og
2 løsninger

Hjelp til meny

Jeg har en database som ser slik ut

tblMenu

ID  Navn      ParentID
------------------------
1    TV        0
2    Alarm      0
47  Alarm1    2
23  Alarm2    2
4    TV1        1
55  Underalarm 47


____________________________________

Hvordan skal jeg på best mulig måte klare å lage en meny utfra den?
Har tenkt på flere muligheter...men trenger litt hjelp!
Avatar billede fennec Nybegynder
25. juli 2004 - 21:38 #1
Du skal have lavet en funktion som du kan kalde rekursivt.
Jeg har lavet et par eks her på E. Kan findes her:

http://www.eksperten.dk/spm/455312
http://www.eksperten.dk/spm/468587 (den nederste med forklaring)

Jeg er på ferie i øjeblikket så der kan gå flere dage inden jeg svarer igen.
Avatar billede carl_erik Nybegynder
26. juli 2004 - 12:27 #2
vel...jeg tenkte på muligheten til å lage en litt annerledes...
for der bli det veldig mye åpning og lukking av databasen...

men går det ikke hvis jeg legger alt i en streng, splitter å legger det mange arrays?
er det ikke mulig å lage menyen da...det ville vært mye bedre for siden i og med at det går raskere...

eller blir det vanskelig?
Avatar billede fennec Nybegynder
30. juli 2004 - 17:44 #3
Du kalder kun databasen for hvert niveau der er i databasen. Med den liste du har vist, giver det 4 opslag. I nogle af de store menuer jeg har lavet på dene måde har jeg 20 opslag, og det kan ikke mærkes, men det afhænger jo af maskinen og hvilken database man kører.

Det kan sikkert gøres med et database opslag (evt. gemt overført til et array), som man så løber igennem igen og igen, men det giver andre problemer, da du så skal hoppe frem og tilbage i opslagene, eller løbe tabellen igennem igen og igen. Det kan pludselig blive til mange gennemløb, også har du et nyt performance problem :o)
Avatar billede carl_erik Nybegynder
01. august 2004 - 12:03 #4
hmm...har du kunnet prøvd å fixet et script til meg...for da kan jeg sende deg litt mer spesifikke opplysninger om min database...

har du orket det?
for jeg har prøvd i 3-4 dager....å har nå forenklet alt med loop i lopp i loop:p(MIDLERTIDIG!) hehe

takker for svar
Avatar billede fennec Nybegynder
04. august 2004 - 11:13 #5
dim menuArr, f
set rs = conn.execute("select count(id) from tblMenu")
redim menuArr(rs(0),2)
set rs = conn.execute("select * from tblMenu")
f = 0
do while not rs.eof
  menuArr(f,0) = rs("id")
  menuArr(f,1) = rs("navn")
  menuArr(f,2) = rs("parentID")
  f = f + 1
  rs.MoveNext
loop

function MakeMenu(ParentID, level)
'ParentID = siger sig selv
'level = det der skal indrykkes. Kan også være billeder eller streger (-) i stedet for  
dim FunkF
  FunkF = 0
  for 0 to ubound(menuArr)
    if menuArr(FunkF,2) = ParentID then
      response.write level & menuArr(FunkF,1)
      Call MakeMenu(menuArr(FunkF,0), level & "  ")
    end if
    FunkF = FunkF + 1
  next
end function

'Start funktionen så der laves en menu
Call mageMenu(0,"")

Da jeg som sagt er på ferie i øjeblikket, har jeg ikke haft mulighed for at testte om det virker. Så jeg håber du kan forstå hvad det er jeg vil med koden, hvis der er fejl :o)
Avatar billede fennec Nybegynder
04. august 2004 - 11:14 #6
Der var da en fejl jeg kunne se :o)

'Start funktionen så der laves en menu
Call makeMenu(0,"")
Avatar billede carl_erik Nybegynder
06. januar 2005 - 23:55 #7
Laget en selv...medtiden...

med getrows...mye raskere enn opprette tilkobling til databasen hele tiden...fungerte bra...

Ellers takk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester