Toon posts:

probleem met generen categorie lijst, wie helpt??

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mede tweakers,

Ik heb een (klein) probleem met het onderstaande tabelletje.
id | int(11)
parent_id | int(11)
naam | varchar(25)

In dit tabelletje staan allerlei categorieen. Via de parent_id wordt bepaald onder welke categorie een subcat valt. De tabel wordt bv gevuld met de volgende data :
0 | 0 | Top
2 | 0 | Mainboards
3 | 2 | Pentium II/III
4 | 2 | Pentium 4
7 | 3 | Asus
6 | 3 | Chaintech
8 | 3 | Abit
9 | 2 | AMD Athlon/Duron
10 | 4 | Chaintech
11 | 4 | Asus
12 | 9 | Abit

Als ik nu de volgende functie er oplost gaat, gaat alles opzich goed. Ik krijg nu netjes een lijst met de categorieen en subcat. etc.

function print_categorieen($pid)
{$query = db_query("SELECT * FROM categories WHERE parent_id = $pid");
while ($cat = db_fetch_object($query)) {
print ($cat->naam."<BR>");
if ($cat->id != $pid) { print_categorieen($cat->id); }
}
}

Maar nu wil zo'n hierarchies (??) menu zetten met van die plussen en minnen er voor zodat kunt zie waar nog subcats zitten. Daarvoor moet ik echter weten op welk level een categorie zich bevind en dat krijg ik niet voor elkaar.

Weet iemand hier een oplossing voor ??

Verwijderd

dan moet je een recursive functie maken.
(ff niet syntax specifiek)

recurseshit(forid) {

select * from ... where parent_id = forid

rst=fetchinto(etc) -> (resultaat opslaan in array)
close recordset

for (i=0; i<count(rst); ++i) {
recurseshit(rst[i]["parent_id"]);
}
}

zoiets (doe het ff uit m'n hoofd :) )
en vervolgens beginnen met recurseshit(0), maar dan moet het toplevel dus wel 0 zijn.

Verwijderd

oh ja...
niet vergeten om direct na

recurseshit(rst[i]["parent_id"]);

een functie aan te roepen die de text ook daadwerkelijk
print :7