ich möchte eine liste mit den <ul> und <li> tags generieren
also ich habe die listenstruktur in ein array gepackt ($liste)
und die links, die in die liste reinkommen auch in ein array ($links)
ich zeug mal wie die struktur gespeichert habe
sagen wir mal ich will diese liste generieren:
so speicher ich immer nur die "position" das heißt, ob der listeneintrag, in der "haupt"liste steckt oder ob die es eine verschachtelte / untergeordnete liste ist:
so würde das array $liste aussehen: (für das beispiel oben)
leerzeichen hab ich zur übersichtlichkeit nur erstellt!
so nun mein php code der nun eine html liste ( mit den <ul> und <li> tags generieren soll:
erklärung zum code
+++++++++++++++++++++++++++++++++++++++++
foreach ($liste as $var1) {
$anz++;
} es werden die elemente des array gezählt
echo "<ul>"; es wird die hauptliste geöffnet
for($i=0;$i<$anz;$i++) { so oft wie es elemente im array gibt
echo '<li>'.$links[i]; es wird ein <li> tag gesetzt und der links ausgegeben (dahinter folgt kein </li> tag [COLOR="Sienna"]weil[/COLOR] falls eine neu liste danach erscheint, darf das li TAG nicht geschlossen werden davor [COLOR="Red"]hier wird übrigens nur "<ul>" ausgegeben, das element des array nicht, sehr komisch, weil wenn ich es einzeln ausgeben lassen will (echo $links[0]; dann gehts[/COLOR]
if($liste[i+1]>$liste[i]) echo "<ul>"; falls das nächste element > aktuelle element ist: wird kein </li> gesetzt, sondern eine neue liste gestartet (<ul>)
if($liste[i+1]==$liste[i]) echo "</li>"; falls nächstes element == aktuelles ist: wird der listenpunkt geschlossen </li>
if($liste[i+1]<$liste[i]) {
??????????????} falls nächstes listenelement < aktuellem ist: wie muss das nun aussehen, wenn die liste geschlossen wird ?
einfach </ul></li> ??? was ist, wenn 2 listen hintereinander geschlossen werden?
echo "</ul>"; hauptlisten TAG wird geschlossen
+++++++++++++++++++++++++++++++++++++++++
könnte einer das script vervollständigen bzw. ergänzen, oder vielleicht auch ein neues schreiben / ganz umschreiben ???
das zum beispiel sowas generiert wird:
also ich habe die listenstruktur in ein array gepackt ($liste)
und die links, die in die liste reinkommen auch in ein array ($links)
ich zeug mal wie die struktur gespeichert habe
sagen wir mal ich will diese liste generieren:
- A
- B
- B.A
- B.B
- B.A.A
- C
so speicher ich immer nur die "position" das heißt, ob der listeneintrag, in der "haupt"liste steckt oder ob die es eine verschachtelte / untergeordnete liste ist:
so würde das array $liste aussehen: (für das beispiel oben)
leerzeichen hab ich zur übersichtlichkeit nur erstellt!
Code:
1 1 2 2 3 1
PHP-Code:
foreach ($liste as $var1) {
$anz++;
}
echo "<ul>";
for($i=0;$i<$anz;$i++) {
echo '<li>'.$links[i];
if($liste[i+1]>$liste[i]) echo "<ul>";
if($liste[i+1]==$liste[i]) echo "</li>";
if($liste[i+1]<$liste[i]) {
??????????????}
}
echo "</ul>";
+++++++++++++++++++++++++++++++++++++++++
foreach ($liste as $var1) {
$anz++;
} es werden die elemente des array gezählt
echo "<ul>"; es wird die hauptliste geöffnet
for($i=0;$i<$anz;$i++) { so oft wie es elemente im array gibt
echo '<li>'.$links[i]; es wird ein <li> tag gesetzt und der links ausgegeben (dahinter folgt kein </li> tag [COLOR="Sienna"]weil[/COLOR] falls eine neu liste danach erscheint, darf das li TAG nicht geschlossen werden davor [COLOR="Red"]hier wird übrigens nur "<ul>" ausgegeben, das element des array nicht, sehr komisch, weil wenn ich es einzeln ausgeben lassen will (echo $links[0]; dann gehts[/COLOR]
if($liste[i+1]>$liste[i]) echo "<ul>"; falls das nächste element > aktuelle element ist: wird kein </li> gesetzt, sondern eine neue liste gestartet (<ul>)
if($liste[i+1]==$liste[i]) echo "</li>"; falls nächstes element == aktuelles ist: wird der listenpunkt geschlossen </li>
if($liste[i+1]<$liste[i]) {
??????????????} falls nächstes listenelement < aktuellem ist: wie muss das nun aussehen, wenn die liste geschlossen wird ?
einfach </ul></li> ??? was ist, wenn 2 listen hintereinander geschlossen werden?
echo "</ul>"; hauptlisten TAG wird geschlossen
+++++++++++++++++++++++++++++++++++++++++
könnte einer das script vervollständigen bzw. ergänzen, oder vielleicht auch ein neues schreiben / ganz umschreiben ???
das zum beispiel sowas generiert wird:
Code:
<ul> <li>Link 1</li> <li>Link 2 <ul> <li>Link 2.1 <ul> <li>Link 2.1.1</li> </ul> </li> </ul> <li>Link 3</li> </ul>