Kategorien

qsrs

Erfahrenes Mitglied
Hallo,

habe ein kleines Problem mit Kategorien. Ich hatte folgenden Gedanken zur Umsetzung von Kategorien:

Tabellenstruktur-DB:
id
category
category_description
parent_id

Wenn ich eine Hauptkategorie anlege, gebe ich den Wert 0 in parent_id an, was für die Hauptkategorie steht. Bei einer Abfrage der Hauptkategorien sage ich dann, SELECT * FROM parent_id WHERE parent_id = 0.

Die Frage ist, wie mache ich das mit den folgenden Unterkategorien. Die Unterkategorie bekommt in parent_id den Wert 1.

Wie sieht denn dann die Abfrage aus. Ich habe z.B. eine Hauptkategorie Skripte darunter eine Unterkategorie PHP. Wenn ich die Subkategorie PHP anklicke, soll alles angezeigt werden, was zu PHP gehört. Da aber alle Subkategorien den Wert 1 haben, kann ich ja nicht SELECT * WHERE parent_id = 1 abfragen, sonst werden alle Subkategorien angezeigt. Wie kann ich explizit die zur Hauptkategorie gebundenen Subkategorien abfragen?
 
Zuletzt bearbeitet:
Wenn du nur PHP angezeigt bekommen möchtest gehst du doch wieder über die normale id ...

Code:
L. Skripte id = 1 parent_id = 0
 L.. PHP id = 3 parent_id = 1
 L.. HTML id = 46 parent_id = 1
 
Du brauchst mindestens 3 Ebenen

Hauptkategorie - Unterkategorie - Inhalt


Alle HAUPTKATEGORIEN:
Select * From `table` WHERE `haupt` = '0' AND `unter` = `0` AND `inhalt` = '0'

Alle UNTERKAGEGORIEN EINER HAUPTKATEGORIE:
Select * From `table` WHERE `haupt` = '1' AND `unter` = `0` AND `inhalt` = '0'

Alle INHALTE EINER UNTERKATEGORIE EINER HAUPTKATEGORIE
Select * From `table` WHERE `haupt` = '1' AND `unter` = `1` AND `inhalt` = '0'

EIN INHALT EINER UNTERKATEGORIE EINER HAUPTKATEGORIE
Select * From `table` WHERE `haupt` = '1' AND `unter` = `1` AND `inhalt` = '1'


cu shutdown
 
Ich glaube ich verstehe nicht, wie Du es meinst. Wie würde denn dann die Tabelle ausfallen?

Schau dir mal den Screenshot im Anhang an. Das ist PHPNuke. da werden Kategorien auch so verwaltet, wie ich es beschrieben hatte. Ich verstehe nur nicht, wie ich den Inhalt von Unterkategorien anzeigen kann. Der Inhalt der Unterkategorien bekommt ja auch nur die Information zu welcher Haupt- und welcher Subkategorie er gehört.
 
Nehmen wir mal an du hast einen Eintrag bei den PHP Skripten, der hat dann als
Verknüpfung zu den Kategorien z.B. eine cat_id, die der id der Subkategorie entspricht.
 
Ok, das ist jetzt klar.

Eine Frage ist noch offen. Ich gehe jetzt mal von meinem Vorhaben aus. Korrigiert mich, wenn ich etwas falsch mache:

1. Ich habe ein Formular, mit dem ich neue Hauptkategorien anlege. Hierfür übergebe ich den Wert 0 in die Spalte parent_id. Bis hierhin ist auch die Abfrage der Hauptkategorien klar (SELECT * FROM `table` WHERE parent_id = 0).

2. Ich lege über ein weiteres Formular eine Subkategorie an. Ich frage zuerst alle Hauptkategorien wieder mit SELECT * FROM `table` WHERE parent_id = 0 ab um sie anzuzeigen und gebe der Subkategorie den Wert 1 mit. Hier fehlt schon der Bezug zur Hauptkategorie.

3. Ich lege einen Inhalt unter einer Subkategorie an und gebe im Formular dafür welchen Wert mit? Ich habe ja nur 0 für die Hauptkategorie und 1 für alle Subkategorien ich benötige aber für jede Subkategorie einen speziellen, einmaligen Wert. Das ist auch, warum ich die Tabelle bzw. Funktion in der angehängten Grafik nicht ganz verstehe.

4. Gleiches Problem wie in 3., wenn ich eine Hauptkategorie anklicke, kann ich ja auch nur den Wert 1 für die Subkategorie mitgeben. Hier würden ja auch alle Subkategorien angezeigt und nicht die, die zur angewählten Hauptkategorie gehören.

Ich glaube ich würde es besser anhand eines kurzen Beispieles verstehen. Kategorie anlegen, Inhalt anlegen, Kategorien abrufen, Inhalte abrufen...

[Nachtrag] Ich glaube es klappt nur, wenn die Subkategorien nicht alle den Wert 1 haben. Wie bekomme ich es also hin, dass sich der Wert der Subkategorie in Bezug auf die dazugehörige Hauptkategorie ändert? Wie mache ich das im Formualrfeld beim Erstellen?
 
Zuletzt bearbeitet:
Die Subkategorie bekommt als parent_id die id den Hauptkategorie!

(Ich denke du hast entweder KEINE Ahnung was du da eigentlich machen machen willst,
oder du verstehst keinerleit Logik hinter dem was du da zu schreiben bzw. zu kopieren
versuchst.)
 
Du hast entweder keinen Satz richtig gelesen, oder vertsanden, dass wenn ich kein Problem hätte, diesen Thread nicht geöffnet hätte. Ich habe jetzt eine Lösung gefunden.
 
Zurück