Hallo Zusammen![Hai](https://www.php-resource.de/forum/core/images/smilies/smilie_all.gif)
Ich habe eine dynamische Navigation programmiert. Der Inhalt des Verzeichnisses wird in ein Array geschrieben.
Dieses geben ich mit foreach aus. Damit der HTML-Code nachher auch gültig ist, muss das ganze folgende Struktur erzeugen:
Mit folgendem Code gebe ich die Navigation erfolgreich aus:
Die foreach Schleife wird ja für jeden Eintrag einmal durchlaufen. Dabei wird bei den Stufen t2 und t3 für jedes Elemenent ein <ul> Container erzeugt.
In dem ich die <ul> </ul> Tags der ersten Stufe t1 ausserhalb der foreach-Schleife platziere, stimmt es bei der ersten Stufe. Die Ganze Navigation wird also von <ul class="t1"></ul> umschlossen.
Da die Schleife für jeden Eintrag einmal durchlaufen wird generiert mir das Skript für jeden <li></li> Eintrag ein separates <ul></ul>..
Ist das verständlich erklärt??
Wie kann ich erreichen das auch die t2 und t3 jeweils nur ganzen Block umschliessen, und nicht jedes Element einzeln?
Was ich schon probiert habe:
1. Die foreach Schleife nach der ersten Ebene zu schliessen und dann mit neuen foreach-Schleifen den Rest auszugeben, so waren leider die Einträge immer zuunterst unter der Navigation.
2. Foreach verschalten, also innerhalb der foreach-Schleife 2 weitere welche die zweite und dritte Ebene ausgeben sollten. Das klappt jedoch nicht weil dass dann eine Endlos-Schleife gibt und die Navigation unentlich mal ausgebeben wird.
Hat jemand eine Idee wie ich weiterkommen könnte??
Mfg derLehrling
![Hai](https://www.php-resource.de/forum/core/images/smilies/smilie_all.gif)
Ich habe eine dynamische Navigation programmiert. Der Inhalt des Verzeichnisses wird in ein Array geschrieben.
Dieses geben ich mit foreach aus. Damit der HTML-Code nachher auch gültig ist, muss das ganze folgende Struktur erzeugen:
Code:
<ul> <li>1</li> <li>2 <ul> <li>2.1</li> <li>2.2</li> <li>2.3</li> </ul> </li> <li>3</li> </ul>
PHP-Code:
echo '<ul class="t1">';
foreach ($entries as $entry) {
if ($entry['path'] != './Inhalt'){
if ($entry['depth'] == 1) {
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</li>';
}
if ($entry['depth'] == 2) {
echo '<ul class="t2">';
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</ul></li>';
}
if ($entry['depth'] == 3) {
echo '<ul class="t3">';
echo '<li><a href="./Startseite.php?l=' . $entry['path'] . '">' . $entry['title'] . '</a>';
echo '</ul></li>';
}
}
}
echo '</ul>';
In dem ich die <ul> </ul> Tags der ersten Stufe t1 ausserhalb der foreach-Schleife platziere, stimmt es bei der ersten Stufe. Die Ganze Navigation wird also von <ul class="t1"></ul> umschlossen.
Da die Schleife für jeden Eintrag einmal durchlaufen wird generiert mir das Skript für jeden <li></li> Eintrag ein separates <ul></ul>..
Ist das verständlich erklärt??
Wie kann ich erreichen das auch die t2 und t3 jeweils nur ganzen Block umschliessen, und nicht jedes Element einzeln?
Was ich schon probiert habe:
1. Die foreach Schleife nach der ersten Ebene zu schliessen und dann mit neuen foreach-Schleifen den Rest auszugeben, so waren leider die Einträge immer zuunterst unter der Navigation.
2. Foreach verschalten, also innerhalb der foreach-Schleife 2 weitere welche die zweite und dritte Ebene ausgeben sollten. Das klappt jedoch nicht weil dass dann eine Endlos-Schleife gibt und die Navigation unentlich mal ausgebeben wird.
Hat jemand eine Idee wie ich weiterkommen könnte??
Mfg derLehrling
Kommentar