dynamische liste erzeugen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • dynamische liste erzeugen

    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:

    • A
    • B
    • &nbsp;&nbsp;&nbsp;B.A
    • &nbsp;&nbsp;&nbsp;B.B
    • &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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
    so nun mein php code der nun eine html liste ( mit den <ul> und <li> tags generieren soll:

    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>"
    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:

    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>
Lädt...
X