Mailinglisten-Archive |
Hi Leute, hab mir einen Kategoriebaum angelegt, der Aufbau ist dieser: +--------+----------+----------+----------+ | catId | parentId | catName | catDepth | +--------+----------+----------+----------+ Dadurch möchte ich beliebig (naja fast) viele Kategorien und beliebige Kategorietiefen speichern. Soweit so gut. Wenn ich jetzt den Kategoriebaum komplett auslesen will, mache ich das mit einem select statement das alle Kategorien in Arrays einliest. (Ich wollte nicht x select abfragen machen, klar) dazu hab ich mir dann eine rekursive Funktion geschrieben, die die Arrays durchforstet. Das auslesen dieses Kategoriebaumes mit ca 120 Einträge mit einer Tiefe von 3 dauert 2.5 sec. das scheint mir doch ein bischen lange. Meine Frage nun wie kann man das ganze effizienter machen? keine Rekusrion verwenden? (dann wären aber beliebige Tiefen nicht möglich) Dennis $catIndex ist das Array das einfach eine Nummerierung 1-x enthält Die anderen arrays wie sie Spaltennamen in der DB function showCategory($ID) { for($i = 0 ; $i < sizeof($catIndex) ; $i++){ if($catId[$i] == $ID) { //einrücken for($k=0;$k<$catDepth[$i];$k++) { echo " "; } echo "id: $catId[$i] $catName[$i]<br>"; for($j = 0 ; $j < sizeof($catIndex) ; $j++){ if($catParentId[$j] == $ID) { showCategory($catId[$j]); } } } } }
php::bar PHP Wiki - Listenarchive