Hallo,
ich bin dabei ein CMS zu entwickeln , für die Menüstruktur gibt es folgende Struktur der DB-Tabelle rubrik:
rubrik_id: Hier wird die ID gespeichert ^^ zum aufrufen
id_text: Hier wird eine ID von DB Text gespeichert
text_link_name: Hier wird der Linkname gespeichert
parent_id: die ID von der Rubrik dadrüber - Anfangs-ID:0
over_id: Hiermit erzeuge ich eine gewisse reinfolge der Links unter einer
Kategorie- es ist die Id von dem Objekt dadrüber
virtuel: unsichtbar /sichtbar
menue: welches menue
So mein Ziel ist es für ein Controlcenter den kompletten Baum auszugeben und zwar in einem Array
Dazu habe ich eine rekursive Methode programmiert (sie befindet sich in der klasse rubrik). Die rekursive Methode bekommt immer eine parent_id übergeben- Dann wird die Anzahl der Links von der Rubrik dieser parent_id gezählt. Die Datensätze werden einzelnd ausgelesen und nach der richtigen Reinfolge in das Array eingefügt. Dabei wird jedesmal geprüft -ob es bei den Links eine Rubrik darunter gibt - ist dies der Fall wird die Methode nochmal aufgerufen.
function get_tree($parent_id,$ebene,$menue){
//erstmal einmal herausfinden - wieviele datensätze es gibt
$result_oben = $this->sql_result(‚SELECT * FROM rubrik WHERE
parent_id = ‚$parent_id‘ AND menue = ‚$menue‘;‘);
$zaehler = mysql_num_rows($result_oben);
if(!(mysql_result($result_oben,0,0)))
return 0;
$this->n2 = 0;
//in einer for schleife ausgeben
for($z = 0;$z
$resultat = $this->sql_result(‚SELECT * FROM rubrik WHERE parent_id = ‚$parent_id‘ AND over_id=‘$this->n2’ AND menue = ‚$menue‘;’);
$this->n2 = mysql_result($resultat,0,‚rubrik_id‘);
//in einem Array speichern: $this->tree[]=array(mysql_result($resultat,0,‚rubrik_id‘),$this->n2,mysql_result($resultat,0,‚id_text‘),mysql_result($resultat,0,‚text_link_name‘),mysql_result($resultat,0,‚parent_id‘),mysql_result($resultat,0,‚over_id‘),mysql_result($resultat,0,‚virtuel‘),$ebene);
if($this->links_darunter($this->n2)){
$this->get_tree($this->n2,$ebene+1,$menue);
}
}
if($ebene == 0)
return $this->tree;
else
return;
}
Mein Problem ist, dass vermutlich die lokalen Variablen von der aufrufenden Methode wie z.B. result_oben sich durch die aufgerufene Methode ändern. Was kann ich tun, um das zu verhindern?
MfG Sebastian