Toon posts:

[ms sql/asp] Navigatie/site map

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb een database gemaakt die in beginsel uit een tabelletje bestaat. Het betreft SQL Server 2000. Uit deze tabel worden de pagina's voor de site gehaald.

Het bevat de velden:
page_id, parent_id, kop, content. De rest is niet van belang. Ik wil graag een navigatie maken, en een site map, waarbij hij dus de site-structuur uit de database haalt. Het is een ASP-pagina.

De site heeft max.4 niveaus. In de database staat alleen n de parent_id opgeslagen tot welk niveau de pagina hoort.

Hoe kan ik dit het best doen? Het lijkt me niet dat je dan 4queries moet uitvoeren, per hoofd-item? Kan iemand mij op weg helpen :)?

Alvast bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38

https://fgheysels.github.io/


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Je kan ze ook ophalen order by hoofditem, en dan via een array elke keer eentje wegschrijven, dan heb je 2 querys (eentje voor de hoofditems, en eentje voor alle subitems die al goed geordend staan)

Verwijderd

Topicstarter
Oh ja :)

En een aparte tabel om de structuur op te bouwen, is dat wat?
Je kunt ook een pre-calc tabel gebruiken waarin je voor elke node in de tree alle parents in een rechte lijn naar de root opslaat. Die update je dan wanneer je een node toevoegt/verwijdert. Je kunt dan met een simpele select en een join snel de nodes ophalen.

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik heb zoiets ook gemaakt, maar dan met mysql/php en gebruikt gemaakt van een javascript menu (milonic) http://www.backusfoodtec.nl/milonic (dit is nog een testomgeving)

Ik heb 3 niveaus aangebracht en die kun je met 3 query's uit de db halen.

code:
1
2
3
SELECT TITEL, ID, VOLGORDE, PARENT FROM MILONIC WHERE NIVEAU=0 ORDER BY VOLGORDE
SELECT TITEL, ID, PARENT, VOLGORDE FROM MILONIC WHERE NIVEAU=1 AND SUB_ID=$object->ID ORDER BY VOLGORDE
SELECT TITEL, ID, VOLGORDE FROM MILONIC WHERE NIVEAU=2 AND SUB_ID=$object1->ID ORDER BY VOLGORDE

Verwijderd

Topicstarter
Ja, maar dat worden wel weer 4 queries. Wel wat veel?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 30 oktober 2003 @ 10:36:
Ja, maar dat worden wel weer 4 queries. Wel wat veel?
4 queries kunnen sneller zijn dan 1 complexe querie :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Noork
  • Registratie: Juni 2001
  • Niet online
Het kan ook met 1 query. Daar maak ik ook gebruik van.
code:
1
2
select PARENT, ID, TITEL, NIVEAU, SUB_ID, VOLGORDE from MILONIC WHERE 
TITEL IS NOT NULL ORDER BY NIVEAU, SUB_ID, VOLGORDE, TITEL ASC

hierna kun je met if statements gaan werken. if niveau==1 enz. enz.

Verwijderd

Topicstarter
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        sqlQuery = "SELECT * FROM PAGES WHERE language = 'NL' ORDER BY parent_id"
        Set rs = cnn.Execute(sqlQuery) 
        Do While Not rs.EOF
            if inspringen = 1 then
                response.write "<div class=inspr>ID:" & rs("page_id") & " P-ID:"& rs("parent_id") &"  "&rs("title") & "<br>"
            else 
                response.write "ID:" & rs("page_id") &  "&nbsp;P-ID:"& rs("parent_id") &"  "&rs("title") & "<br>"
            end if
            
            if previousID = rs("parent_id") then
                inspringen = 1
            else
                inspringen = 0
            end if
                previousID = rs("parent_id")
        rs.MoveNext
        loop
        rs.close
        cnn.close


Zoiets werkt ook wel
Pagina: 1