Hallo,
ich habe ein kleines Problem:
ich habe eine MySQL-Tabelle, die Produktkategorien enthält. Jede Kategorie kann beliebig viele Unterkategorien haben, jede Unterkategorie wieder beliebig viele weitere Unterkategorien usw. Die Tiefe der Verschachtelung ist nicht begrenzt.
Die Struktur der Tabelle ist wie folgt:
Feld:
catid
pid
tid
catname
catid ist die eindeutige ID-Nummer jeder Kategorie.
pid ist die ID der übergeordneten Kategorie
tid ist die ID der übergeordneten Kategorie des obersten Levels, welche immer die pid=0 hat
catname der Name der Kategorie
Ich versuche jetzt, eine Funktion zu bauen, die es mir erlaubt, von einer beliebigen Kategorie aus alle Unterkategorien zu ermitteln und in ein Array zu übergeben, dass danach ausgewertet werden kann.
Die Funktion sieht bis jetzt so aus:
PHP-Code:
function findsubcats($id,$liste) {
global $db;
$query=$db->query("SELECT * FROM kategorien WHERE pid='$id'");
$anzahl=$db->num_rows($query);
while ($result=$db->fetch_array($query)) {
$id=$result[catid];
array_push($liste,$id);
findsubcats($id);
}
return $liste;
}
Aufgerufen wird die Funktion an einer beliebigen Stelle des Skripts über:
PHP-Code:
$subcats=findsubcats($catid)
wobei $catid die ID einer beliebigen Kategorie sein soll.
Zurückgeben soll die Funktion ein Array mit allen Unterkategorien. Und eben diese Rückgabe funktioniert so nicht.
Wenn ich mir innerhalb der while-Schleife die Variable $id per echo anzeigen lasse, sehe ich, dass tatsächlich alle Subkategorien gefunden werden, aber der Aufbau des Arrays $liste funktioniert nicht.
Am Ende enthält $subcats nur die IDs der Subkategorien im ersten untergeordneten Level.
Ich hoffe, ich habe mich jetzt einigermaßen verständlich ausgedrückt
Hat jemand eine Idee, wo hier der Fehler liegt? Ich grübele jetzt schon seit 2 Tagen über Sache und komme alleine wohl nicht mehr weiter.
Gruß
Wolfgang