dwex
Erfahrenes Mitglied
Hallo Leute,
ich bin gerade so ziemlich am verzweiflen weil ich eine (meine erste) rekursive Funktion brauche und es nicht so tut wie ich will.
Was brauche ich:
Ich benötige eine Funktion welche mir ausgehend von einer bestimmten Kategorie - alle Elternkategorien als Array zurück liefert.
Meine Datenbank sieht (vereinfacht) so aus:
|-------------------|-------------|
| categories_id | parent_id |
|-------------------|-------------|
| 23 | 0 |
| 24 | 0 |
| 25 | 0 |
| 26 | 23 |
| 27 | 24 |
| 28 | 0 |
| 29 | 27 |
|-------------------|-------------|
Dazu habe ich folgende Funktion:
welche ich mit
aufrufe.
Die Ausgabe ist dabei
Jetzt habe ich die Funktion mal umgeschrieben, sodass mir diese ein Array mit allen relevanten ID´s zurückgeben müsste.
Dieses rufe ich dann einfach zum testen mit
auf.
Dort bekomme ich jedoch keine Ausgabe mehr.
Kann mir bitte jemand weiterhelfen wo mein Denkfehler liegt?
Vielen Dank für euer Bemühungen im Voraus!
ich bin gerade so ziemlich am verzweiflen weil ich eine (meine erste) rekursive Funktion brauche und es nicht so tut wie ich will.
Was brauche ich:
Ich benötige eine Funktion welche mir ausgehend von einer bestimmten Kategorie - alle Elternkategorien als Array zurück liefert.
Meine Datenbank sieht (vereinfacht) so aus:
|-------------------|-------------|
| categories_id | parent_id |
|-------------------|-------------|
| 23 | 0 |
| 24 | 0 |
| 25 | 0 |
| 26 | 23 |
| 27 | 24 |
| 28 | 0 |
| 29 | 27 |
|-------------------|-------------|
Dazu habe ich folgende Funktion:
PHP:
function get_tree($who,$ebene) {
$res=mysql_query ("select * from `categories` where `categories_id`=$who;");
if($daten == false) {
$daten_array = array();
}
while ($verwandter=mysql_fetch_array($res)) {
echo $ebene = $verwandter[categories_id].",";
get_tree($verwandter[parent_id],$ebene);
}
}
PHP:
get_tree(29, "");
Die Ausgabe ist dabei
Code:
29,27,24,
Jetzt habe ich die Funktion mal umgeschrieben, sodass mir diese ein Array mit allen relevanten ID´s zurückgeben müsste.
PHP:
function get_tree($who,$ebene,$daten=false) {
$res=mysql_query ("select * from `categories` where `categories_id`=$who;");
if($daten == false) {
$daten_array = array();
}
while ($verwandter=mysql_fetch_array($res)) {
$ebene = $verwandter[categories_id].",";
$daten_array[] = $verwandter[categories_id];
if($verwandter[parent_id] == 0) {
return $daten_array;
}
get_tree($verwandter[parent_id],$ebene, $daten_array);
}
}
PHP:
print_r(get_tree(29, ""));
Dort bekomme ich jedoch keine Ausgabe mehr.
Kann mir bitte jemand weiterhelfen wo mein Denkfehler liegt?
Vielen Dank für euer Bemühungen im Voraus!
Zuletzt bearbeitet: