19. juni 2003 - 14:12Der 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
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... ;-)
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
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.