Hallo,
ich habe eine relativ einfache Methode gewählt, um Kategorien in einer Datenbank zu speichern, und sie dann in einer Baumstruktur zu pflegen.
Die SQL-Tabelle sieht so aus:
id | category_name | parent_id |
1 | Hauptkat. 1 | 0 |
2 | Hauptkat. 2 | 0 |
3 | 1. Sub von Hauptkat. 1 | 1 |
4 | 2. Sub von Hauptkat. 1 | 1 |
Um zu Navigieren, verwende ich folgenden Code:
Soweit funktioniert alles. Jetzt die Frage. Ich bin mir nicht sicher, ob es bei dieser Variante des Speicherns in der Datenbank, also mit einer parent_id, zu Problemen beim Auslesen des "Gesamtbaumes" kommt, und ob das überhaupt möglich ist. Ich habe nämlich Folgendes vor: ich möchte in einem <select>-Feld alle Kategorien und Unterkategorien ausgeben, und zwar so:
Hauptkat. 1
Hauptkat. 1/1. Sub von Hauptkat. 1
Hauptkat. 1/2. Sub von Hauptkat. 1
Hauptkat. 2
Ich möchte damit ermöglichen, den einzelnen Kategorien und Unterkategorien neue hinzuzufügen. Geht das mit dieser Speichermethode, und falls ja, wie wäre denn der Ansatz.
Ich weiß, dass Nested Sets evtl. die bessere Wahl ist. Ich bin in Sachen SQL jedoch noch etwas neu und möchte mich erst Schritt für Schritt hocharbeiten. Nested Sets ist für mein Vorhaben wahrscheinlich ohnehin etwas zu viel, ich denke die aktuelle Methode müsste erst einmal reichen. BTW, was sind denn die Nachteile dieser Methode und v.a. warum?
ich habe eine relativ einfache Methode gewählt, um Kategorien in einer Datenbank zu speichern, und sie dann in einer Baumstruktur zu pflegen.
Die SQL-Tabelle sieht so aus:
id | category_name | parent_id |
1 | Hauptkat. 1 | 0 |
2 | Hauptkat. 2 | 0 |
3 | 1. Sub von Hauptkat. 1 | 1 |
4 | 2. Sub von Hauptkat. 1 | 1 |
Um zu Navigieren, verwende ich folgenden Code:
PHP:
$sql0 = "SELECT * FROM `cat_test` WHERE `parent_id` = '$parent_id' ORDER BY `category`";
$query0 = mysql_query ($sql0, $dbconnect);
for ($i1 = 0; $i1 < mysql_num_rows ($query0); $i1++) {
$array0[$i1] = mysql_fetch_array ($query0);
}
for ($i1 = 0; $i1 < count ($array0); $i1++) {
echo "<a href=\"test2.php?parent_id=".$array0[$i1][id]."\">".$array0[$i1][category]."</a><br>";
}
Soweit funktioniert alles. Jetzt die Frage. Ich bin mir nicht sicher, ob es bei dieser Variante des Speicherns in der Datenbank, also mit einer parent_id, zu Problemen beim Auslesen des "Gesamtbaumes" kommt, und ob das überhaupt möglich ist. Ich habe nämlich Folgendes vor: ich möchte in einem <select>-Feld alle Kategorien und Unterkategorien ausgeben, und zwar so:
Hauptkat. 1
Hauptkat. 1/1. Sub von Hauptkat. 1
Hauptkat. 1/2. Sub von Hauptkat. 1
Hauptkat. 2
Ich möchte damit ermöglichen, den einzelnen Kategorien und Unterkategorien neue hinzuzufügen. Geht das mit dieser Speichermethode, und falls ja, wie wäre denn der Ansatz.
Ich weiß, dass Nested Sets evtl. die bessere Wahl ist. Ich bin in Sachen SQL jedoch noch etwas neu und möchte mich erst Schritt für Schritt hocharbeiten. Nested Sets ist für mein Vorhaben wahrscheinlich ohnehin etwas zu viel, ich denke die aktuelle Methode müsste erst einmal reichen. BTW, was sind denn die Nachteile dieser Methode und v.a. warum?
Zuletzt bearbeitet: