Navigation aus Array erstellen

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

  • Navigation aus Array erstellen

    Hallo, ich bräuchte mal eure Hilfe.
    Ich möchte eine Navigation erstellen, die Daten dafür werden aus einer
    Datei ausgelesen.

    Das Schwierige für mich: Die Hauptkategorie zB Obst oder Gemüse, soll nur einmal angezeigt werden und die Unterkategorien alle.

    PHP-Code:
    <ul>
    <?php error_reporting(E_ALL);
    /* Inhalt der Datei  (Timestamp | Hauptkategorie | Unterkategorie | Pfad)
    1072047600|Obst|Äpfel|/obst/aepfel.php
    1072047610|Obst|Birnen|/obst/birnen.php
    1072047620|Obst|Bananen|/obst/bananen.php
    1072047630|Gemüse|Gurken|/gemuese/gurken.php
    1072047640|Gemüse|Tomaten|/gemuese/tomaten.php
    1072047650|Gemüse|Paprika|/gemuese/paprika.php
    1072047660|Kleider|Jacken|/kleider/jacken.php
    1072047670|Kleider|Hosen|/kleider/hosen.php
    1072047680|Kleider|Schuhe|/kleider/schuhe.php

    Ziel:
    * Obst
            - Äpfel
            - Birnen
            - Bananen
    * Gemüse
            - Gurken
            - Tomaten
            - Paprika
    * Kleider
            - Jacken
            - Hosen
            - Schuhe
    */
    $file="navi.txt";
    $arr=file($file);

    foreach(
    $arr as $line)
     {
    $z=explode("|",trim($line));
            echo 
    " <li>".$z[1]."</li>\n";
     }
    ?>
    </ul>
    ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

  • #2
    Zitat von RamonaS Beitrag anzeigen
    Die Hauptkategorie zB Obst oder Gemüse, soll nur einmal angezeigt werden und die Unterkategorien alle.
    Stichwort: Gruppenwechsel.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo,

      meinst Du so etwas?

      PHP-Code:
      $filedata file("navi.txt");
      $array_tmp = array(); // leerer Array


          // lesen des files
          
      foreach($filedata as $filedata_single_lines)
          {
          
      // teilen der segmente
          
      $line explode("|"$filedata_single_lines);
          
          
      // variablen zuweisen
          
      $cat $line[1];
          
      $subcat $line[2];
          
      $path $line[3];
          
              
      // wenn der hauptarrayschlüssel existiert
              
      if (array_key_exists($cat$array_tmp))
              {
                  
      $array_tmp[$cat][] = array($subcat$path);
              } 
              else
              {
                  
      $array_tmp[$cat] = array(array($subcat$path));
              } 
          
          }

          
      // auslesen der schlüsselwerte
          
      $keys array_keys($array_tmp);
          
          
      // bauen der navi
          
      for ($cnt 0$cnt count($array_tmp); $cnt += 1)
          {
              echo 
      "<h1>".$keys[$cnt]."</h1>";
              
              for (
      $sub_cnt 0$sub_cnt count($array_tmp[$keys[$cnt]]); $sub_cnt += 1)
              {        
                  echo 
      "<a href='".$array_tmp[$keys[$cnt]][$sub_cnt][1]."'>".$array_tmp[$keys[$cnt]][$sub_cnt][0]."</a><br>";
              }    
          } 
      Sollte klappen, wenn Du Deine Navi-Infos in eine "navi.txt" Datei im selben Verzeichnis ablegst. Musst halt noch Kontrollfunktionen etc. implementieren.

      Hab´s auf die Schnelle gemacht, wenn jemand Änderungen hat oder Ansätze, wie es besser wäre, würde es mich interessieren.
      Gruss,
      Asisito

      PHP Doku: http://de.php.net/manual/de
      Coding Standard: http://php-coding-standard.de
      MySQL Doku: http://dev.mysql.com/doc/refman/5.1/de/index.html
      PHP OOP: http://professionelle-softwareentwicklung-mit-php5.de

      ------------------------------------------------

      [COLOR=#000000][COLOR=#007700]if ( [/COLOR][COLOR=#0000bb]$humans [/COLOR][COLOR=#007700]>= [/COLOR][COLOR=#0000bb]2 [/COLOR][COLOR=#007700]) {
      [/COLOR][COLOR=#0000bb]war [/COLOR][COLOR=#007700]();
      } [/COLOR][/COLOR]

      Kommentar


      • #4
        Zitat von asisito Beitrag anzeigen
        Hallo,
        meinst Du so etwas?
        Ja genau in dieser Richtung, das funktioniert schon mal einwandfrei.
        Hätte noch mal einen Zusatzfrage:

        Was muß man tun wenn zB noch eine sub_cat eingefügt wird, etwa so:
        1072047600|Obst|Äpfel|Apfelsorte1|/obst/aepfelsorte1.php
        1072047600|Obst|Äpfel|Apfelsorte2|/obst/aepfelsorte2.php

        In der Foreach bekomme ich das alles hin, aber in den nächsten 2 for-schleifen klappt das nicht. Muß ich da 3 ineinander verschachtelte for-schreifen bauen?
        ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

        Kommentar


        • #5
          Zitat von RamonaS Beitrag anzeigen
          In der Foreach bekomme ich das alles hin, aber in den nächsten 2 for-schleifen klappt das nicht. Muß ich da 3 ineinander verschachtelte for-schreifen bauen?
          Das Sauberste wäre es, dafür eine Funktion zu schreiben und die rekursiv aufzurufen. Dann ist es egal, wie tief die Verschachtelung geht. Hier gibt es dazu ein Beispiel, wie man ein Verzeichnis komplett ausliest. Allerdings solltest du die Struktur deiner Textdatei überdenken, sonst funktioniert das nicht.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar

          Lädt...
          X