Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Baumstruktur mit Eltern a la Breadcrumb

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Baumstruktur mit Eltern a la Breadcrumb

    Habe lang überlegt ob es eher für fortgeschrittene oder anfänger.
    Eigentlich gehöre ich eher zu den fortgeschrittenen, doch dies schon fast anfänger Niveau.

    Ich brauche eine Baumstruktur, jedoch immer mit den entsprechenden Elternnamen davor.
    z.B.
    Eltern
    Eltern / Kind1
    Eltern / Kind1 / Kind2

    Datenbank hat die Spalten
    | ID | Name | PARENT

    1 | Verschiedenes | 0
    2 | subCategorie1 | 1
    3 | subsub2 | 2
    4 | subCategorie2 | 1

    Der Elternknoten hat immer PARENT = 0

    Mein Ansatz bisher.

    PHP-Code:
    $liste = array();
    function 
    gib_baumstruktur($kategorie$parent_id '0') {
        global 
    $liste;
        foreach (
    $kategorie as $key => $value) {
            if (
    $value['parent'] === $parent_id) {    
                if(
    $parent_id == 0){
                    
    $liste[(int)$value['id']] = $value['name'];
                }  
                if(isset(
    $value['parent']) && $parent_id != 0){
                    
    $liste[(int)$value['parent']] .= "/".$value['name']; // Undefined offset: 2 (ab und zu)
                
    }                         
                
    gib_baumstruktur($kategorie$value['id']);
            }
        }
    }
    gib_baumstruktur($kategorie); 
    Ausgabe
    PHP-Code:
    array (size=2)
      
    => string 'Verschiedenes/subCategorie1/subCategorie2' (length=41)
      
    => string '/subsub2' (length=8

  • #2
    Willkommen im Forum.

    Und wo liegt das Problem? Welche Ausgabe erwartest du? Was funktioniert nicht so, wie es gedacht ist?

    Kommentar


    • #3
      Meine Ausgabe ist ja bisher
      PHP-Code:
      array (size=2)
        
      => string 'Verschiedenes/subCategorie1/subCategorie2' (length=41)
        
      => string '/subsub2' (length=8
      Ich brauche aber
      PHP-Code:
      array (size=2)
        
      => string 'Verschiedenes'
        
      => string 'Verschiedenes/subCategorie1'
        
      => string 'Verschiedenes/subCategorie1/subsub2'
        
      => string 'Verschiedenes/subCategorie2' 

      Kommentar


      • #4
        Zum Beispiel:

        PHP-Code:
        <?php

        function gib_baumstruktur($kategorie$parent_id 0) {
            
        $ret = array();

            
        $rec = function ($path$parent_id) use (&$rec, &$ret$kategorie) {
                foreach (
        $kategorie as $entry) {
                    if (
        $entry['parent'] === $parent_id) {
                        
        $newPath $path . (($path === '') ? '' '/') . $entry['name'];
                        
        $ret[] = $newPath;
                        
        $rec($newPath$entry['id']);
                    }
                }
            };

            
        $rec(''$parent_id);

            return 
        $ret;
        }



        $kategorie = array();

        $kategorie[] = array('id' => 1'name' => 'Verschiedenes''parent' => 0);
        $kategorie[] = array('id' => 2'name' => 'subCategorie1''parent' => 1);
        $kategorie[] = array('id' => 3'name' => 'subsub2',       'parent' => 2);
        $kategorie[] = array('id' => 4'name' => 'subCategorie2''parent' => 1);


        var_dump(gib_baumstruktur($kategorie));

        //array(4) {
        //  [0]=>
        //  string(13) "Verschiedenes"
        //  [1]=>
        //  string(27) "Verschiedenes/subCategorie1"
        //  [2]=>
        //  string(35) "Verschiedenes/subCategorie1/subsub2"
        //  [3]=>
        //  string(27) "Verschiedenes/subCategorie2"
        //}

        Kommentar


        • #5
          Vielen, vielen Dank!

          Kommentar

          Lädt...
          X