Oliver Baer: Navigationsmenü aus Tabellen

Hallo Leute,

ich möchte mir eine Navigation basteln, und zwar habe ich 3 Tabellen. In einer steht die Oberkategorie, in der 2ten die Unterkategorie und in der 3ten die anderen seiten, die es noch gibt.
Nun will ich das ganze folgendermassen ausgeben lassen:

Oberkategorie1
 -unterkategorie1
 -unterkategorie2
Oberkategorie2
 -unterkategorie3
 -unterkategorie4
...
Site1
Site2
Site3

Die Tabelle oberkategorie und die Tabelle unterkategorie sind miteinander über ein Feld verknüpft, d.h. in der Tabelle unterkategorie ist ne id aus der Tabelle oberkategorie.
Ich komme einfach auf keinen vernünftigen Lösungsansatz, vielleicht hat ja jemand von euch ne Idee wie man das realisieren könnte.

Vielen Dank schonmal...

Oliver Baer

  1. Hallo Oliver,

    Oberkategorie1
     -unterkategorie1
     -unterkategorie2
    Oberkategorie2
     -unterkategorie3
     -unterkategorie4
    ...
    Site1
    Site2
    Site3

    mit 2 while-schleifen, die erste enthält den jeweiligen Datensatz der oberkategorie
    innerhalb dieser while schleife, startest Du eine Abfrage ob es datensätze in der unterkategorie gibt, die diese id besitzen, wenn ja neue whileschleife, die diese abarbeitet.

    while($result = mysql usw.)){
      echo "oberkategorie"
      //abfrage nach unterkategorie

    while( $result = mysqlusw.) {
           echo "die unterkategorie";
         }
    }

    so in etwa nur die Abfragen müssen noch rein, wie es am besten geht, d.h ob du erst ein datenarray erstellst von der oberkategorie und dieses durchläufst oder ob du eine andere avriante nutzt ist deine Sache. Kenn mich mir mysql nicht aus... finde postgresql im handling bequemer

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
  2. Hallo Oliver,

    das haben wir heute gerade fast fertig bekommen.

    Ich schlage Dir vor:

    ID_PAGE
    ID_PARENT
    PAGE_LEVEL (stellt die Einrücktiefe dar)

    Alle Seiten stehen in einer Tabelle.

    Mit MySQL fragst Du einfach im ersten Durchlauf alle Seiten mit ID_PARENT=0 ab. Die Seite gibt es nicht.
    Bei der Anzeige musst Du dann die Abfrage auf ID_PARENT = ID_PAGE durchführen und das Unterarray besorgen.
    Bei der Anzeige des Unterarrays musst du dann die Abfrage auf ID_PARENT = ID_PAGE der Unterseite ....
    usw

    PARENT  SEITE
            PARENT  SEITE
                    PARENT  SEITE
    PARENT  SEITE
    PARENT  SEITE

    usw.

    Ich würde mich außerdem darauf beschränken, maximal 1,5 Hierarchiestufen abzufragen, das bedeutet: Alle Seiten der obereren Klasse und nur die Seiten der 1. Unterklasse, deren Oberseite gerade angezeigt wird.

    usw.

    Dann muss man auch keine Angst vor der Rekursion haben.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.