/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Skalerbart menu-system
Fra : craZZter


Dato : 26-03-06 15:43

Hej NG!

Jeg er p.t. ved at skrue et skalerbart menu system sammen.

Det er bygget op over en mysql database og implementeres i praksis som en
linked liste implementation af et n'ary træ i PHP. Ved at foretage en
pre-order traversering af det får man netop den struktur som menuen skal
have. Så langt så godt...

www.m-sig.dk/basic.jpg fremgår lidt mere af idéen bag det. Her fremgår
strukturen på databasen også samt hvordan træet forventes opbygget.

Database-strukturen kan jo hurtigt smides i et multidimensionelt array med
fx.

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
array_push($res_array, $row);
}

Man står så med et multidimensionelt array der indeholder strukturen - men
kommer så til den "sjove" del hvor det reelt skal sorteres så datastrukturen
kan opbygges. Rækkefølgen de jo gerne skulle ende op i (baseret på 'id'
feltet i databasen) bliver jo:
2,5,6,11,4,9,10,1,13,3,12,8,7 (jf. .jpg filen)

I korte træk gennemløbes strukturen jo ved primært at kigge på om en node
har en child-reference. I så fald følges den. Hvis ikke følges en eventuel
n_sibling reference (next sibling). Hvis der heller ikke er en - eller hvis
den allerede har været fulgt - går vi et skridt tilbage igen. Det lugter jo
helt afgjort af en rekursiv opgave - men derfra og til at få den nedfældet
kommer problemet... Er der nogle der har nogle smarte idéer? Det er ikke
noget problem at lave noget skrammel-kode der løser problemet men det er der
jo ikke meget sjovt ved

PFT
/Michael



 
 
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste