Hallo!
Also die bisherigen Beiträge habe ich ja leider nicht wirklich nachvollziehen können, allerdings habe ich in der Zwischenzeit meine eigene Lösung deutlich verkürzt und vereinfacht:
Mit 2 DB Abfragen werden die Daten der beiden Tabellen in einem assoziativen Array gespeichert ('$rows_kategorien' und '$rows_unterkategorien') und ohne sonst noch was zu tun kann es sofort zur Ausgabe kommen, die nun so aussieht:
echo "<ul>";
foreach($rows_kategorien AS $kategorie)
{
echo "<li>".$kategorie['name']."</li>";
foreach($rows_unterkategorien AS $unterkategorie)
{
if($unterkategorie['category'] == $kategorie['id'])
{
echo "<ul>";
echo "<li>".$unterkategorie['name']."</li>";
echo "</ul>";
}
}
}
echo "</ul>";
Der Unterschied zu meiner ursprünglichen Lösung ist nun, dass für jeden Listenpunkt der "Hauptliste", also für jede Kategorie, das _komplette_ Array mit den Unterkategorien durchgearbeitet wird, um passende Einträge für eine (evt.) Unterliste zu finden.
Das ist zwar performancelastiger, aber im Code um ein Vielfaches kürzer und simpler. Und da es sich in meinem Fall um maximal 10-30 Kategorien mit jeweils maximal bis zu 10-20 Unterkategorien handelt, ist, was die Geschwindigkeit der Skriptabarbeitung und somit des Seitenaufbaus bezrifft, bis dato kein Delay bemerkbar.
Vereinfachteren Code kann ich es mir jetzt nicht mehr vorstellen, aber ich bin natürlich für jeden Vorschlag weiter offen wie man das, was ich hier realisiere, noch eleganter lösen könnte.
Mit lieben Grüßen
Melvin Cowznofski

What – me worry?