echo $begrüßung;
meine Navigation steht in einem Array, das dyn, zusammengebaut wird. Ich habe 2 style definiert, eins für Hauptpunkte, eins fürs Untermenü.
So sieht das Ganze in PHP aus
Das ist schon der zweite Schritt. Bau bitte zunächst das Menü (oder ein beispielhaftes) mit HTML-Code auf. Dann kannst du damit testen, wie sich das CSS darauf auswirkt. Im Allgemeinen muss man keine DIV-Suppe bauen, wenn man eine Liste erzeugen will. Dafür gibt es bereits Elemente, wie <ul> nebst <li>. Solche Listen lassen sich auch schachteln.
foreach($navi){
[...]
// $naviString.="<div id="sub_navi">";
Das (abgesehen vom foreach-Fehler) erzeugt in deinem Dokument am Ende mehrmals die gleiche ID. IDs müssen dokumentweit eindeutig und einmalig sein. Wenn du mehrere Elemente gleich klassifizieren willst, nimm eine Klasse.
ABER: Ich krieg es nicht hin, den Text der Untermenüpunkte anderes zu formatieren (kleiner Schrift, eingerückt).
Ein Untermenüpunkt zeichnet sich dadurch aus, dass er entweder einer bestimmten Klasse angehört oder in einer bestimmten Struktur steckt. "ul li" ist ein beliebiger Menüpunkt. "#main_navi li" ist ein Menüpunkt des Hauptmenüs (Das gibt es nur einmal, deswegen kann es auch eine ID bekommen.) "#main_navi li ul" ist ein Untermenü und "#main_navi li li" oder "#main_navi ul li" ist ein Untermenüpunkt. "ul ul li" bzw. "ul li li" geht auch, wenn die ganze Struktur nicht in weiteren ULs steckt und solch ein Gebilde nicht weiter auf der Seite vorkommt. Da man aber nicht weiß, ob nicht in Zukunft weitere Listengebilde im Projekt hinzukommen, wäre eine der Varianten mit der #main_navi meines Erachtens die sinnvollere.
Wenn du nun dein CSS-Problem erfolgreich geklärt hast, kannst du weitermachen und den PHP-Code schreiben, der dir das HTML-Gebilde zusammenbaut. Da du dir zunächst ein Beispiel gebaut hast, kannst du nun das Ergebnis des PHP-Codes mit dem funktionierenden Beispiel vergleichen, wenn der mit PHP zusammengebaute HTML-Code nicht so will wie er soll.
echo "$verabschiedung $name";