Hallo Andres!
Dieses ganze Szenario, würde meiner Meinung nach, wieder für eine seperate Speicherung der Struktur sprechen, etwa in xml.
das war auch mein erster Gedanke ;-)
Nur, was bringt das? Das Problem ist ja, dass ich XML immer umwandeln muss, und das macht man in PHP gemein hin indem man die XML-Datei komplett parst und in einen Array schreibt. Mit diesem Array arbeite ich dann wenn ich Daten ausgeben will. Daher ist die Speicherung eigentlich gar nicht so relevant, der große Unterschied ist, dass ich bei XML immer alles parsen muss, und bei einer DB-Lösung SELECTiere ich direkt die Datensätze die ich brauche udn habe so nur eien Bruchteil des Baums. Das Problem ist auch weniger die oben angesprochenen Änderungen in der Struktur(hoch, runter...) in XML darstellen zu kömnnen, sondern in einem Array. Wie vertausche ich denn 2 Elemente eines Arrayy, bzw. wie verändere ich dei Reihenfolge der Elemente? Solche Sachen mache ich nicht gerne, weil ich imme rdas Gefühl habe mir potentielle "Sollbruchstellen" einzuhandeln, obwohl das glaube ich in der Praxis kein wirkliches Problem ist, oder? Oder würdet Ihr einen ganz anderen Weg gehen die Struktur darzustellen und zu veränern? Egal in welcher Programmiersprache, ist nicht auf PHP beschränkt, aber vielleicht gibt es ja einen besseren Weg als das mit einem Array und jeweils den Unterbaum als Array an das Elternelement als Element hängen, nur wie bringe ich das die Reihenfolge unter? Ist irgendwie nicht konsistent. Bedenke das ich ja nicht nur eine ID brauche, sondern auch den Namen der Kategorie um das ganze ausgeben zu können!
Der "medienbruch"(XML<->DB) ist mir im Augenblick trotzdem wieder etwas egaler als vorher, nur zweifele ich ob XML hier was bringt ;-)
Diese Struktur, könntest du dann in einem Record speichern den du in einer Datei cachest, den du nat. nicht immer neu generierst, sondern nur bei Änderungen der Struktur.
Was für ein "Record"? Ich greife immer nur auf einen Teil des Baums zu, nie auf den ganzen, daher ist es eien Frage ob es Sinn macht jedesmal beim Auslesen die komplette Struktur parsen zu müssen.
Dadurch könntest du, wenn jede Kategorie, eine ID hätte, das ganze recht einfach zuordnen.
hm.?
Von der XML Struktur, würde ich das ähnlich machen, wie du das vorgeschlagen hast. Danach musst du das ja "nur" noch die XML-Struktur, in einem Record aus Arrays abbilden. Ich würde das ganze aus Arrays zusammenbauen, die solange auf weitere arrays verweisen, bis man bei der untersten Ebene angelangt sind. Diese Art der Struktur, ist meiner Meinung nach wesentlich flexibler, als die die mit in der Tabelle gespeichert wird. So bist du auch nicht auf die 5 Ebenen in der Tabelle beschränkt, und meiner Meinung nach, dürfte der Rechenaufwand eher geringer ausfallen, als einen, rein in einer relationalen DB, gespeicherten, da du nicht mehrere Anfragen braucht, um die komplette Struktur herauszufinden, bzw. die ganze Tabelle abfragen musst.
Ich will nie die ganze Struktur abfragen. Wie ich unten beschrieben habe (Daten-Struktur: [pref:t=53383&m=295932], stattfindende Abfragen: [pref:t=53383&m=296462]) wird pro request immer nur eine SQL-Abfrage auf die Struktur-Tabelle notwendig!
Vielen Dank und viele Grüße
Andreas