Tom2: Menü aus Config-File elegant lösen

Hi@all.forum

Ich code im moment eine ASP-Webseite zusammen, die die Menüstruktur aus einem File ausliest und dementsprechend das Menü generiert. Auf zwei Menüstufen habe ich es bis jetzt recht gut geschaft, wenn ich jedoch eine dritte hinzufügen will, so wird der Code ziemlich unbrauchbar, dh. er sieht scheisse aus und ist auch recht langsam - fubar eben.
Das Config-File sieht etwa folgendermassen aus:

#Hardware%html/hardware.htm               <= 1. Level
  ASUS%http://www.asus.com.tw             <= 2. Level
  Abit%http://www.abit.com.tw
#Sofware%html/software.htm
  #Microsoft%http://www.microsoft.com     <= Leitet 3. Level ein
    Microsoft Germany%http://www.microsoft.de <= 3. Level

Also, # leitet Menüebene ein (alles danach soll in div-Tag stehen), dann folgt der Name des Links und hinter dem % die URL. Der Code der das ganze verarbeitet sieht nun wie gesagt ziemlich dirty aus.

Ich suche desshalb nach einer Methode, nach einem Beispiel oder nach Tipps, womit ich die Daten bestmöglich auslesen kann.

Der Code muss nicht in VBScript sein, es kann auch PHP, Perl oder von mir aus ein C-Algorithmus aus einem ganz anderen Programm sein (Sprachen die ein Computer spricht sind für mich nicht so ein Problem wie einige Sprachen, die die Menschen sprechen ;-).

mfg und besten Dank

Tom2

  1. Hi,

    Ich suche desshalb nach einer Methode, nach einem Beispiel oder nach Tipps, womit ich die Daten bestmöglich auslesen kann.

    es fängt schon damit an, wie das Menü in der Datei abgelegt ist. Ich würde eine Art CSV-File erstellen und für jeden Datensatz eine Spalte mit dem "Mutterdatensatz" einfügen. Dabei wäre ein Eintrag mit Mutter=0 die Hauptebene. Das File stelle ich mir so vor (Zeilennummern vorangestellt):

    1:foobar,www.foobar.org,0
    2:foobar suche,www.foobar.org/suche/,1
    3:foobar forum,www.foobar.org/suche/,1
    4:batz,www.batz.org,0
    5:batz links,www.batz.org/links,4

    Die Einträge in Zeile 2 und 3 "hängen" somit am Eintrag in Zeile 1. Der Eintrag von Zeile 5 hängt am Eintrag von Zeile 4. Damit kannst Du beliebig tiefe Menüs _abbilden_.

    Doch das ist nur die halbe Miete! Du musst das ganze natürlich auch auslesen. Das geht am besten mit einem rekursiven Algorithmus. Du schreibst eine Funktion, die alle Einträge mit einer bestimmten "Mutter" ausgibt. Diese Funktion muss sich dann selbst für jeden Eintrag wieder neu aufrufen und eine neue "Mutter" übergeben. Das ist ganz ähnlich, wenn Du einen Verzeichnisbaum von Deiner Festplatte durchsuchen willst.

    Einige Infos zur Rekursion findest Du auch in einem Feature Artikel hier auf dem Server:
    http://aktuell.de.selfhtml.org/artikel/phpasp/php-forum/index.htm#a3.

    Viele Grüsse
    Achim