[PHP+MySQL] Kategorie i rysowanie drzewka

0

Witam, mam spory problem. Stworzyłem skrypt kategorii na zasadzie:

tabela kategorii:
ID | Name | ...

tabela relacji:
ChildID | ParentID

i teraz tabela relacji łączy kategorie w sposób: kategoria - podkategoria. Podkategorie mogą być teoretycznie nieskończonego poziomu. Zrobiłem też funkcję rekurencyjną wypisującą drzewko kategorii:

function showchild($parentid=0, $level='    '){
	
	global $db, $id, $tree;
	
	$result=$db->select('cat_links, categories', 'categories.Name, categories.ID', 'cat_links.ChildID=categories.ID AND cat_links.ParentID='.$parentid);

	while($rec=$db->fetch_assoc($result)){
	
		if($id==$rec['ID'])
			$name='<b>'.$rec['Name'].'</b>';
		else 
			$name=$rec['Name'];
		$tree.=$level.'<a href="cattree.php?ID='.$rec['ID'].'">'.$name.'</a>'.($id==$rec['ID']?'<img src="../Pictures/Graphic/Arrow.png" alt="" style="position: relative; top: 8px;"/>':'').'<br>';
		showchild($rec['ID'], $level.'&nbsp;&nbsp;&nbsp;&nbsp;');
	
	}
}

Problem teraz jest taki, że przy większej (choć znowu nie tak dużej) ilości danych funkcja powoduje niedziałanie całego skryptu - dostaję na wyniku białą stronę. Drzewko jest mi bardzo potrzebne, jak mogę zrobić je inaczej, żeby nie... hmmm... nie zżerało tyle czasu? Zasobów? No, żeby to działało... :P

0

może spróbuj tak: http://4programmers.net/Forum/315417#id315417
wydaje mi się że robienie drugiej tabeli jest zbędne a wywoływanie za każdym razem nowego zapytania trochę dziwne

//

thenkles napisał(a)
Adamo napisał(a)

wydaje mi się że robienie drugiej tabeli jest zbędne

Nie, bo każda kategoria może mieć wiele rodziców.

a tego już nie napisałeś :)

0
Adamo napisał(a)

wydaje mi się że robienie drugiej tabeli jest zbędne

Nie, bo każda kategoria może mieć wiele rodziców.

Adamo napisał(a)

a wywoływanie za każdym razem nowego zapytania trochę dziwne

Jest, ale nie miałem pomysłu jak to zrobić inaczej. Kod, który dałeś podsunął mi pomysł, więc będę kombinował :P. Dzięki :)

0

http://www.dbf.pl/faq/tresc.html?rozdzial=1#o1_9 powinno chociaż trochę pomóc

1 użytkowników online, w tym zalogowanych: 0, gości: 1