Avatar billede mini-me Nybegynder
17. maj 2005 - 10:56 Der er 8 kommentarer og
1 løsning

Rekursiv funktion til menu

Hej,

Jeg er gået i stå, efter at have brugt for mange timer på at lave en rekursiv funktion til en menu.

Jeg har en tabel, som indeholder Grouping, name, ParentGroup

Grouping indeholder navnet på den gruppe jeg vil udskrive, parentgroup er tom, med mindre en en gruppe er undermenu til en hovedgruppe.

Håber der er nogen der kan hjælpe...
Avatar billede busschou Praktikant
17. maj 2005 - 11:40 #1
Er det en rekursiv funktion ala det de bruger her?
http://www.html.dk/scripts/asp/00015/
Avatar billede mini-me Nybegynder
17. maj 2005 - 12:16 #2
Den er småmænd find nok, hvis man har unikke id, det har jeg ikke, jeg har 3 tekst felter...
Avatar billede busschou Praktikant
17. maj 2005 - 12:20 #3
ok det må være noget i samme dur, havde ikke tænkt over du ikke har et unikt id.
Det synes jeg personligt altid er en god ide, specielt hvis det er en tabel som skal kunne opdateres
Avatar billede mini-me Nybegynder
17. maj 2005 - 12:31 #4
Ja det er noget i samme stil som den funktion der, hvis du kan få den til at virke er pointene dine, tabellen bliver opdateret fra mit regnskabs program og jeg har derfor ingen indflydelse på hvordan den skal/bør være bygget op.
Avatar billede mini-me Nybegynder
17. maj 2005 - 12:50 #5
Jeg har det her...

Set rsEntries = Rs.Execute("Select * from InterNetGroup")

Do
  ' Gem data som kommasepareret liste
  arrID = arrID & "," & rsEntries("Grouping")
  arrRE = arrRE & "," & rsEntries("ParentGroup")
  arrSU = arrSU & "," & rsEntries("Name")
  rsEntries.MoveNext
Loop while not rsEntries.eof

' Lav arrays med data
arrID = Split(arrID,",")
arrRE = Split(arrRE,",")
arrSU = Split(arrSU,",")

Rs.Close

' Funktion som undersøger for svar
Function Threads(intID)   
  For m = 1 to Ubound(arrID)
    ' Hvis svar til det indlæg som funktionen er kaldt med
      If arrRE(m) = cint(intID) Then
      ' Tilføj til liste og kald funktionen for at undersøge for svar
      Threads = Threads & "<ul><li>" & arrSU(m) & Threads(arrID(m)) & "</li></ul>"   
    End If       
Next
End Function

' Kald funktionen med alle hovedindlæg
Response.Write Threads(0)
Avatar billede busschou Praktikant
17. maj 2005 - 12:53 #6
Ja der er det jo så blot at dit arrID ikke er unikt..hmm
Avatar billede mini-me Nybegynder
17. maj 2005 - 13:52 #7
Jeg er kommet frem til det her, det giver i det mindste et output men det output er helt hen i vejret ;)

Set rsEntries = Rs.Execute("Select * from InterNetGroup")

Do
  ' Gem data som kommasepareret liste
  arrID = arrID & "," & rsEntries("Grouping")
  arrRE = arrRE & "," & rsEntries("ParentGroup")
  arrSU = arrSU & "," & rsEntries("name")
  rsEntries.MoveNext
Loop while not rsEntries.eof

' Lav arrays med data
arrID = Split(arrID,",")
arrRE = Split(arrRE,",")
arrSU = Split(arrSU,",")

Rs.Close

' Funktion som undersøger for svar
Function Threads(intID)   
  For m = 1 to Ubound(arrID)
    ' Hvis svar til det indlæg som funktionen er kaldt med
    'response.Write(arrRe(m) & " = " & intID & "<br>")
      If trim(CStr(arrRE(m))) = trim(CStr(intID)) Then
      ' Tilføj til liste og kald funktionen for at undersøge for svar
      Threads = Threads & "<ul><li>" & arrSU(m) & Threads(arrID(m)) & "</li></ul>"   
      end if
  Next
End Function

' Kald funktionen med alle hovedindlæg
Response.Write Threads("")
Avatar billede mini-me Nybegynder
19. maj 2005 - 11:49 #8
Slet ingen der kan komme et en løsning ??
Avatar billede mini-me Nybegynder
25. maj 2005 - 12:50 #9
Jeg løste problemet med en javascript menu fra dtree, og lukker herfor.
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