[PHP+MySQL] Kategorie i rysowanie drzewka

Odpowiedz Nowy wątek
2006-08-05 15:46
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

Pozostało 580 znaków

2006-08-05 15:53
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ś :)


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2006-08-05 23:42
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 :)

Pozostało 580 znaków

2006-08-06 00:03
0

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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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