przejde do rzeczy odrazu.
mam tabele o nazwie category w bazie która wygląda nast. :
id_category || parent_id || name
i wiadomo odpowiednio
1 || 0 || cos
2 || 0 || cos2
3 || 1 || cos3
4 || 2 || cos4
znalazlem 2 sposoby aby wyswietlic drzewo na stronie.
sposob 1:
<?php function show($res) { $q="SELECT * FROM category WHERE parent_id = $res"; if($row['parent_id'] > 0) { show($row['id_category']); } else } $q="SELECT * FROM category WHERE parent_id = 0"; { } ?>
sposob 2:
<?php function getAll ($query) { if (!$res) return $ret; $ret[] = $r; return $ret; } function drzewoKategorii ($kategorie = null, $rodzicId = 0, $zaglebienie = 0, $wynik = null) { if ($wynik == null) if ($kategorie == null) { $query = "select * from category order by parent_id, name"; $kategorie = getAll($query); } foreach ($kategorie as $kat) { if ($r["parent_id"] == $rodzicId) { $r["zaglebienie"] = $zaglebienie; $wynik[] = $kat; $wynik = drzewoKategorii ($kategorie, $kat["id_category"], ($zaglebienie+1), $wynik); } } return $wynik; } $drzewo = drzewoKategorii(); foreach ($drzewo as $galaz) { for ($i=0; $i<=$galaz["zaglebienie"]; $i++) { } } ?>
kody obu przykładów rozumiem w około 90%.
w sposobie 1 wyświetla mi drzewo bardzo ladnie ale nietety po wyswietleniu wszystkiego wywala mi blad i reszta strony nie laduje sie.
sposob 2 nie wyswietla mi drzewa (nie wiem czemu...) jednak jesli w index-ie dam include cat.php <-- plik z 1 sposobem, a do innej stronki powiedzmy ogloszenia.php wrzuce skrypt 2 dzieje sie bardzo dziwna rzecz. po zaladowaniu index.php wyswietla mi kategorie z bledem a po klikniecu odnosnika do ogloszenia.php wyswietla mi kategorie z 2 skryptu bardzo ladnie i bez bledu.
moje pytanie, ktory skrypt jest lepszy, i dlaczego 2 skrypt samodzielnie nie dziala a z 1 skryptem "z-includowanym" do indexu dziala?