Denkanstoß zum PHP Problem

  • Hiho liebe Community,

    ich hab' gerad' 'n ziemliches Loch im Kopf :)

    Ich hab' 'n CMS und das wollte ich jetzt um 'ne Produktfuntion erweitern.
    Produkte kann man auch schon anlegen und Kategorien dazu auch.
    Jetzt habe ich folgendes Problem.
    Ich will, dass man zu jeder Kategorie x-beliebige Unterkategorien anlegen kann.
    Dies wollte ich über "Ebenen" Regeln und habe dazu auch schon 'ne Ebenentabelle mit folgenden Spalten erstellt--> ebenenID, ebene, parentID.
    in der Kategorietabelle gibt's eine Spalte ebenenID und in der Produkttabelle dann 'ne Spalte kategorieID.

    Jetzt kommt mein Problem. Ich weiß immoment nicht so Recht, wie ich das umsetzen soll.
    Weil er muss ja schauen, ob das eine Unterkategorie oder eine Kategorie is', wenn es eine Kategorie is', soll er die ebene einfach auf 0 setzen, wenn nicht soll er immer einen hochzählen und in parentID soll die ID, der zugehörigen Ebene stehen :s

    Wenn du im Recht bist, kannst du dir leisten, die Ruhe zu bewahren; und wenn du im Unrecht bist, kannst du dir nicht leisten, sie zu verlieren.
    __________________________________________
    Software design is hard, and we need all the help we can get.
    – Bjarne Stroustrup

  • Ich habe sowas in der Art mal bei einer Navigation gemacht, halt Menupunkte beliebig um Untermenupunkte erweiterbar und das ganze beliebig tief verschachtelt.
    Alle Menupunkte stehen in einer Tabelle, egal ob Hauptmenupunkt oder Untermenupunkt. Das - genauso wie die Tiefe der Verschachtelung - ergibt sich aus dem Feld `parent_id`. Hauptmenupunkte haben `parent_id`=0, Untermenupunkte - wer hätte es gedacht - die ID des Elternmenupunktes.
    Ich klatsch dir einfach mal eine Funktion rein, die das Menu aufbauen soll (ist aus einem Projekt das seit einer ganzen Weile auf Eis liegt und ungetestet. Soll aber ja sowieso nur als Inspirationsquelle dienen):

    Vielleicht hilft dir das als kleiner Denkanstoß.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • ist auch, gklaube ich, der weg wie es realisiert wird..
    der erste einsprungspunkt hat die id 1 und es gibt nur eine tabelle die mit sich selber referenziert wird.
    also will sagen: ich kenn es nur so :)

    bei mehrsprachigkeit wird eben das erste element genommen und als eltern-element refernziert indem parent null ist (oder auch 0, wenn man da nen "ur-element" haben will mit ner festen außerdatenbnklichen ID)

  • Ich hab' jetzt mal die Klasse soweit fertig geschrieben. Aber irgendwie will das noch nich' so, wie ich das will...z.B. wird in der Tabelle "parentID (ebenen)" nicht die ID gespeichert....und für das Ebenenhochzählen muss ich mir noch 'ne Funktion überlegen...
    Ich poste mal die zwei Klassen, vllt habt ihr ja ne Idee warum er die ParentID nicht reinschreibt.
    Die ParentID soll quasi die kategorie ID der darüberliegenden Klasse sein:

    Klasse Ebenen :

    Klasse Kategorie:

    Das Formular, wo man dann quasi zu der Kategorie die unterkategorie auswählen kann sieht wie folgt aus:

    Wenn du im Recht bist, kannst du dir leisten, die Ruhe zu bewahren; und wenn du im Unrecht bist, kannst du dir nicht leisten, sie zu verlieren.
    __________________________________________
    Software design is hard, and we need all the help we can get.
    – Bjarne Stroustrup

    Einmal editiert, zuletzt von invidicult (23. Dezember 2010 um 08:57)