Avatar billede weiland Nybegynder
19. juni 2003 - 14:12 Der er 2 kommentarer og
1 løsning

dynamisk site-map generering

Jeg har følgende funktion:

Function GetChilds(Id)
  Set Child = MyConn.Execute("SELECT * FROM Pages WHERE ParentPageId = "& Id)
  If Child.EOF Or Child.BOF then
      GetChilds = ingenting
  Else
      While not Child.EOF
          GetChilds = GetChilds & Child("Headline") & "<br>"
          If not GetChilds(Child("PageId")) = ingenting Then
              GetChilds = GetChilds & GetChilds(Child("PageId")) & "<br>"
          End If
      Child.MoveNext
      wend
  End If
End Function


Set RS = MyConn.Execute("SELECT * FROM Pages WHERE ParentPageId = 0")

While not RS.EOF
    Response.Write "<b>"& RS("Headline") &"</b><br>"
    Response.Write ""& GetChilds(RS("PageID"))
rs.MoveNext
wend

Den lister meget fint alle sider i tabellen "Pages", hvor alle sider har et PageID og et ParentPageID.
Øh, men hvordan får jeg funktionen til at vise det NIVEAU, som siderne er på?
Altså så resultatet bliver noget i retning af:

> Side 1
>> Side 1.1
>>> Side 1.11
>> Side 1.2
> Side 2
Avatar billede cultx Nybegynder
20. juni 2003 - 00:27 #1
Function GetChilds(Id, level)
  Set Child = MyConn.Execute("SELECT * FROM Pages WHERE ParentPageId = "& Id)
  If Child.EOF Or Child.BOF then
      GetChilds = ingenting
  Else
      While not Child.EOF
          space = ""
          For i = 1 to level
              space = space & ">"
          GetChilds = GetChilds & spacer & " " & Child("Headline") & "<br>"
          If not GetChilds(Child("PageId"), level+1) = ingenting Then
              GetChilds = GetChilds & GetChilds(Child("PageId"), level+1) & "<br>"
          End If
      Child.MoveNext
      wend
  End If
End Function


Set RS = MyConn.Execute("SELECT * FROM Pages WHERE ParentPageId = 0")

level = 1

While not RS.EOF
    Response.Write "<b>"& RS("Headline") &"</b><br>"
    Response.Write ""& GetChilds(RS("PageID"), level)
rs.MoveNext
wend



Overstående skulle gerne virke, men har ikke testet det, så hvis du ikke kan få det til at virke må du lige sige til... ;-)

Mvh
Stendal
Avatar billede cultx Nybegynder
20. juni 2003 - 00:38 #2
Du får lige en revideret udgave som er testet og klar til brug. DEt gik vist lige stærkt nok... ;-)


Function GetChilds(Id, level)
  Set Child = MyConn.Execute("SELECT * FROM Pages WHERE ParentPageId = "& Id)
  If Child.EOF Or Child.BOF then
      GetChilds = ingenting
  Else
      While not Child.EOF
          spacer = ""
          For i = 1 to level
              spacer = spacer & ">"
          Next
          GetChilds = GetChilds & spacer & " " & Child("Headline") & "<br>"
          If not GetChilds(Child("PageId"), level+1) = ingenting Then
              GetChilds = GetChilds & GetChilds(Child("PageId"), level+1) & "<br>"
          End If
      Child.MoveNext
      Wend
  End If
End Function


Set RS = MyConn.Execute("SELECT * FROM Pages WHERE ParentPageId = 0")

level = 1

While not RS.EOF
    Response.Write "<b>"& RS("Headline") &"</b><br>"
    Response.Write ""& GetChilds(RS("PageID"), level)
rs.MoveNext
Wend
Avatar billede weiland Nybegynder
20. juni 2003 - 08:37 #3
KANON! Tak for det!
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