luiggi: Navigation aus Datenbank

Hallo,
ich habe mir jetzt eine Sitemap aufgebaut.
dabei habe ich festgestellt,
dass ich meine Navigation eben in der Navigation brauche & pflege,
dann in der Sitemap
und teilweise in einzelnen Dateien (als Hilfe für den User).

Nun kam mir die Idee, die Navigation in eine Datenbank abzulegen und dann aus dieser alle Dateien zu versorgen.

Mein Ansatz sieht so aus:
datenbank:
id, ebene, link, text, kat1

ein datensatz sieht dann so aus:
1, 1, kontakt.php, Kontakt, about/

Zusammengesetzt dann so:
about/kontakt.php mit der Linkbezeichnung Kontakt

Meine Navigation habe ich so aufgebaut:
<li><a href="index.php">Home</a>
    <ul>
 <li><a href="about/kontakt.php">Kontakt</a></li>
 <li><a href="about/termine.php">Termine</a></li>
    </ul>
</li>
Danach kommen dann noch einmal 4 weitere von diesen Blöcken (=5 Register in der Navigation).

Das auslesen aus der DB klappt per Array gut,
kann auch die Links korrekt zusammensetzen:
<li><a href="<? echo $arr[0][4], $arr[0][2];?> "><? echo $arr[0][3];?> </a></li>

Soweit alles gut, Nur:

Wie kann ich diese 5 Hauptkategorien mit den jeweiligen Unterpunkten per Skript erzeugen? Das eben praktisch nicht alle Links in einer Liste stehen, sondern eben unterteilt sind.
Ich denke, mal mit Schleifen: Sobald eine Zeile im Array bei Kat1 (Kategorie) = about/ ist , dann erzeuge einen Link. Wenn nicht, gehe zum nächster Reihe und schaue wieder.
Bei der nächsten Kategorie durchlaufe wieder das Array von vorne und erzeige die Links, die zu der Kategorie passen.

Ist das so in etwa umsetzbar?
Ist das ganze überhaupt sinnvoll?

Sg Stefan

  1. hallo,

    ich habe mir jetzt eine Sitemap aufgebaut.

    Schön. Gibt es denn auch eine Site dafür?

    dabei habe ich festgestellt,
    dass ich meine Navigation eben in der Navigation brauche

    Das ist eine geradezu revolutionäre Feststellung. Auf diese Idee konnte außer dir wirklich niemand kommen.

    Nun kam mir die Idee, die Navigation in eine Datenbank abzulegen

    Und woher kam dir diese Idee?

    Mein Ansatz sieht so aus:
    datenbank:
    id, ebene, link, text, kat1
    Meine Navigation habe ich so aufgebaut:
    <li><a href="index.php">Home</a>
        <ul>
    <li><a href="about/kontakt.php">Kontakt</a></li>
    <li><a href="about/termine.php">Termine</a></li>
        </ul>
    </li>

    Für diese "Navigation" brauchst du keine Datenbank. Allerdings brauchst du dafür ein Grundverständnis dafür, wie Listen aufgebaut werden.

    Ist das ganze überhaupt sinnvoll?

    Nein.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hi,

      Schön. Gibt es denn auch eine Site dafür?

      Ja: http://www.stefan-luger.de.tt

      Das ist eine geradezu revolutionäre Feststellung. Auf diese Idee konnte außer dir wirklich niemand kommen.

      War schon immer meiner Zeit voraus....

      Nun kam mir die Idee, die Navigation in eine Datenbank abzulegen
      Und woher kam dir diese Idee?

      Um nicht jedesmal alle Dateien einzeln zu bearbeiten.

      Ist das ganze überhaupt sinnvoll?
      Nein.

      Warum? Einmal angelegt (okay, mit großem Aufwand) ist das im Handling dann leichter.

      Sg Stefan
      PS: Schöne Grüße aus FFM

      1. hallo,

        Nun kam mir die Idee, die Navigation in eine Datenbank abzulegen
        Und woher kam dir diese Idee?
        Um nicht jedesmal alle Dateien einzeln zu bearbeiten.

        So viel ist das nicht, daß man eine Datenbank bemühen müßte. Du hast eine Liste mit verschiedenen Links, die vermutlich in allen deinen Einzelseiten gleich aussehen soll. Das wäre verständlich. Aber dafür reicht es aus, entweder SSI zu nehmen oder, falls du PHP benutzt, ein include(). Warum willst du es dir mit einer Navigation so schwer machen?

        Ist das ganze überhaupt sinnvoll?
        Nein.
        Warum?

        Datenbanken sind dazu da, eben "Daten" aufzunehmen und zu speichern - gegebenenfalls auch Daten, die sich ändern können. Dazu mußt du einen Mechanismus haben, mit dem solche Daten hineingeschrieben werden, und einen Mechanismus, der sie daraus wieder herauslesen kann. Sowas ist bei größeren Datenmengen eventuell sinnvoll, aber bei deiner Navigation bedeutet es, mit einer Atomrakete auf Mikroben schießen zu wollen.

        Einmal angelegt (okay, mit großem Aufwand) ist das im Handling dann leichter.

        Dafür gibt es wesentlich einfachere Methoden als eine Datenbank. - Datenbanken sind was Feines. Aber man sollte sie nicht andauernd unterfordern und mit Aufgaben betrauen, die sich mit wesentlich weniger Aufwand erledigen lassen können.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Ist das so in etwa umsetzbar?
    Ist das ganze überhaupt sinnvoll?

    Zweimal ja, eventuell noch den content in die DB packen und ...
    ... Du hast ein kleines CMS. (Dann noch einen content-Manager Bereich und Sicherheit, also ein "Login-System"...)

    Ach so, diese Frage mit dem Erstellen des Menüs auf Basis der Daten, tja, alles aus der DB in ein Array laden und dieses dann durchlaufen bis das Menü steht. Ähnlich machst Du es mit der Sitemap.

    1. Hi,
      Login und Admin Area habe ich schon.
      Auch deshalb will ich mehr per DB machen.

      Zudem denke ich auch über eine deutsche/englische Version der HP nach, auch da brauche ich die Navi in englisch.

      Sg Stefan

      1. Zudem denke ich auch über eine deutsche/englische Version der HP nach, auch da brauche ich die Navi in englisch.

        Vorsichtshalber mit Unicode - UTF8 - kommen.

  3. yo,

    id, ebene, link, text, kat1

    Wie kann ich diese 5 Hauptkategorien mit den jeweiligen Unterpunkten per Skript erzeugen? Das eben praktisch nicht alle Links in einer Liste stehen, sondern eben unterteilt sind.

    dein problem liegt darin, dass du die ebene in der datebank geschrieben heisst und nicht die zugehörigkeit zu dem jeweiligen hauptlink. die ebene ist nur eine folge davon (prozessdaten), sprich du musst die hiraschie der links untereinander in der datenbank abspeichern und nicht die ebene.

    zum beisiel könnte man die id des vorgängers in die datenbank schreiben. somit lassesn sich die links verschachteln. allerdings ist dieses vorgehen nicht ganz unkritisch, rekursive konstrukte in rdbms sollten eigentlich vermieden werden, sind aber doch häufig im einsatz.

    einer anderer weg ist, indem du ein spalte einführst, welche die sortierung der links enthält. allerdings muss dafür immer umsortiert werdeb, falls zum beispiel ein neuer link hinzukommt oder entfernt wird.

    Ilja

    1. Hi,

      ... die zugehörigkeit zu dem jeweiligen hauptlink ...
      ... die id des vorgängers in die datenbank schreiben ....

      Das werde ich mal versuchen, bisher ist die DB noch nicht sehr groß und Änderungen sehr leicht.

      einer anderer weg ist, indem du ein spalte einführst, welche die sortierung der links enthält. allerdings muss dafür immer umsortiert werdeb, falls zum beispiel ein neuer link hinzukommt oder entfernt wird.

      Auch das geht, da ich nicht so viele neue Links haben werde (zur Not kann man ja auch Platz lassen...). Aber das Ebenen Problem hätte ich dann auch hier?

      Sg Stefan

      1. yo,

        Auch das geht, da ich nicht so viele neue Links haben werde (zur Not kann man ja auch Platz lassen...). Aber das Ebenen Problem hätte ich dann auch hier?

        nicht was die reihenfolge der links betrifft, schließlich settz du die ja genauso in der sortierungsspalte, wie du sie haben willst. bei der formatierung kann das schon anders aussehen, dort dann auf die ebene zurückzugreifen.

        Ilja