Hallo zusammen,
Ich habe in meiner Datenbank Daten in Form einer Baumstruktur abgelegt, verbunden durch die ElternID.
Nun möchte ich beginnend von einer Kategorie ID alle anderen Kategoreien die unter der übergebenen Kategorie sitzen anhand der ElternID ermitteln :)
Dazu hier meine rekursive Funkion:
es gibt einen unterschied zwischen
function baumstruktur
und
function &baumstruktur
bitte ansehen !!
function baumstruktur ($CAT,$result=array()){
echo $CAT; // Zum Testen
$row=$this->db_fetcharray($this->db_query("SELECT name,EID,KID FROM eg_okat WHERE KID = ".$CAT." LIMIT 1"));
if($row["EID"]!=0){echo "a";
$result[$CAT] = $row["name"];
$this->baumstruktur($row["EID"],$result);
hier wird eine kopie von $result übergeben ! (call by value)
es muß aber das original &$result übergeben werden (call by reference)
wo wandert die rückgabe hin ???
}elseif($row["EID"]==0){echo "b";
$result[$CAT] = $row["name"];
}
return $result;
hier wird $result zurückgegeben aber im aufruf nicht beachtet !
}
Das gute Stück funktioniert sogar, nur überschreibt er mit immer wieder mein array "$result" mit den neuen Daten die er ermittelt, er soll aber natürlich die Daten festhalten.
Hat hier jemand einen Tipp für mich ?
Viele Grüße und danke, Chrisi ...