Rekrusive Funktion - Ergebnisse in Array schreiben

zyro

Mitglied
Hallo zusammen,

ich habe eine Rekursive Funktion, die einen "Mentor"-Stammbaum generieren soll.
Das heißt ich habe eine Datenbank mit Mitgliedern und jeder kann eingeben wer sein Mentor ist. Ein Mentor kann mehrere Nutzer haben und man selbst kann eben auch Mentor sein.
Ich benutze dafür diese Funktion:

PHP:
function getSons($id, $ebene = 1) {
	 
	$res = mysql_query("SELECT * FROM table WHERE mentor = '".$id."'");
	$num = mysql_num_rows($res);
	
		while($row = mysql_fetch_assoc($res)) {
			
			echo'<br/>'.$row['nachname'].', '.$row['vorname'].'<br><br>';
		
			getSons($row['id'], $ebene+1);	
		
		}

}

Wie ihr seht ist hier eine Ausgabe drin, die die Ergebnisse unter einander darstellt. Mein Problem ist dass durch die Rekursion Styles etwas sonderbar reagieren. Aus diesem Grunde möchte ich alle Ergebnisse in einen Array schreiben und diesen dann später in einer anderen Funktion ausgeben.
Ich steh völlig auf dem Schlauch alles was ich bisher probiert habe funktioniert nicht.
Könnt ihr mir bitte weierhelfen und mir sagen wie ich alles(ebene nachname vorname) in einen Array schreiben kann.

Erläuterung: ebene gibt an in welcher ebene im Stammbaum wir uns befinden. D.h. wenn jemand zwei Schüler hat sind beide ebene 1. Haben die Schüler weiter Schler sind diese ebene 2 usw.
 
Zuletzt bearbeitet:
PHP:
$mentors = array();
function getSons($id, $mentors, $ebene = 1) {
     
    $res = mysql_query("SELECT * FROM table WHERE mentor = '".$id."'");
    $num = mysql_num_rows($res);
    
        while($row = mysql_fetch_assoc($res)) {
            
            $row['ebene'] = $ebene;
            $mentors[] = $row;
        
            getSons($row['id'], $mentors, $ebene+1);    
        }

}
var_dump($mentors);

So ungefaehr? Das fuegt ein neues Element 'ebene' in deinen Array der aus der DB kommt ein und haengt diesen dann an den Array $mentors. In dem sollte dann am Ende alles drin stehen.
 
Ja die Idee ist ist richtig, aber in mentors steht nichts drin... das wundert mich etwas.
 
Vielen Dank,
da hätte ich auch selber drauf kommen können, manchmal steht man einfafch auf dem Schlauch.
Klappt jetzt.
 
Zurück