Ankündigung

Einklappen
Keine Ankündigung bisher.

Tree View

Einklappen

Neue Werbung 2019

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

  • Tree View

    Hallo Leuts,

    ich muß eine Baumstruktur entwickeln mit Hilfe von MySql
    Leider ist die Anzahl der Unterpunkte nicht definiert.

    Darum hab ich ein wenig gegoogelt und bin auf Nested Sets gestoßen
    Hier mal ein Link dazu:

    Das 'Nested Sets' Modell - B�ume mit SQL PHP Script resource Tutorials, Workshops und Artikel


    Das klappt ja auch wunderbar. Jedoch sollte es so sein das man
    wie im Explorer den Baum auf- und zuklappen kann (also mit + und -)

    Leider krieg ich das einfach nicht hin!

    Vielleicht kann mir ja einer helfen. Bitte!


    Mfg


    PS: Leider kann ich keine Anhänge anfügen, darum wer
    den Quelltext mal haben möchte von dem was ich schon umgesetzt habe,
    möge mal bitte Bescheid sagen.


  • #2
    aufbereitung fürs web:

    ich denke deine frage hat im grunde nichts mehr mit php zu tun, da es um die reine visualisierungsebene geht....

    naja das kannst du ganz einfach mit javascript machen. baumstrukturen stellt man für html z.b. mit definitionslisten da, die kann man auch ganz gut verschachteln. du nummerrierst die child elemente einfach durch

    A
    |-A1
    |-A2
    |--AA
    |--AA1
    d.h. die childelemente bekommen alle die id (o.ä.) Achild, AAchild dessen css eigenschaft display:none; du via js auf display:inline; o.ä. setzt

    <script>
    function einblenden()
    {
    document.all.deineID.style.display="inline";
    }
    function ausblenden()
    {
    document.all.deineID.style.display="none";
    }
    </script>

    Kommentar


    • #3
      @dom:

      Nochmals danke für die schnelle Antwort.

      Hier mal der Code:

      PHP-Code:
      function showNavi() {
           
      $result getNavi();
       
       
              
      $level 1;
                               
      $tree"<ul id=\"NewTree\">";
              
              while(
      $row mysql_fetch_array($result)) {
                  if (
      $row['level'] > $level)
                      
      $tree.= "<ul>";
                  else if (
      $row['level'] < $level)
                      
      $tree.= str_repeat("</li></ul>"$level-$row['level']);
                  else if (
      $level 1)
                      
      $tree.= "</li>";
                      
                  
      $tree.= "<li style='line-height:20px' value_id=\"".$row['id']."\" level=\"".$row['level']."\" input_id=\"".$row['root_id']."\" productgroupname=\"\" input_type=\"\"><span>".$row[2]."&nbsp;<a href=\"".$_SERVER["PHP_SELF"]."?site=admin&action=del&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/del.png\" border=\"0\" title='Delete' width='10' height='11'></a>&nbsp;
                  <a href=\""
      .$_SERVER["PHP_SELF"]."?site=admin&action=insert&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/insert.png\" border=\"0\" title='Add New' width='10' height='11'></a>
      <a href=\""
      .$_SERVER["PHP_SELF"]."?site=admin&action=edit&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/edit1.png\" border=\"0\" title='Edit' width='10' height='11'></a>
      </span>"
      ;
                  
      $level $row['level'];
              } 
      // while
              
      $tree.= str_repeat("</ul>"$level-1);
              
              return 
      $tree;

      Kommentar


      • #4
        Und was ist mit dem Code? Funktioniert was nicht, wenn ja was? Vielleicht sind ein paar Kommentare in der Funktion auch praktisch um besser zu verstehen was du machst.

        Kommentar


        • #5
          also das javascript das ich oben gepostet habe verändert die css klasse eines html elements ( <li value_id"" level=""> wird wohl kaum valide sein )

          also wenn du bei dem aufbau mit unsortierten listen bleiben willst dann brauchen deine child elemente alle die selbe klasse, bzw falls deine childelemente ne eigene ul sind dann brauch dieses ul eine spezifische klasse.

          diese klasse bekommt ein display:none; damit sie vorerst nicht angezeigt wird. die javascript funktion einblenden() wird dann einfach dein display:none; verändern und zwar auf z.b. display:inline; wodurch der inhalt der klasse dann sichtbar wird.



          Code:
          <ul id="derbaum">
               <li><a href="javascript:einblendenA()">+</a> Elternelement A
                    <ul class="elementeA">
                       <li>Kindelement A</li>
                    </ul>
               </li>
               <li><a href="javascript:einblendenB()">+</a> Elternelement B
                  ..............
               </li>
          </ul>
          Das CSS:
          Code:
          .elementeA {
          display:none;
          }
          (bin mir grad nicht sicher ob die listen verschachtelung so korrekt ist)

          theoretisch brauch man dann für jede kind-liste eine js funktion, was bestimmt auch über variablen zu automatisieren geht. aber da musste dann mal nen bisschen nach javascript suchen.

          Kommentar


          • #6
            Danke erst mal für die Tips.

            Werde das mal versuchen umzusetzen.
            Mal sehen wies klappt.
            Melde mich dann wieder.

            Wenn einer mal nen Lösungsansatz bzw. Codebeispiel mit dem Code
            von oben basteln könnte wär das echt groß.

            Bin für jede Hilfe dankbar.


            Mfg

            Kommentar


            • #7
              Hallo,

              also ich bin grad voll am coden

              Jetzt hab ich allerdings mal ne Frage. Ich muß ja für alle ID's
              das Style ändern. Also z.B. in Ebene2 gibt es zwei Einträge.
              Diese haben dann folglich die ID Ebene2(zum Beispiel)

              Wenn ich dann aber das Script ausführe zeigt er mir nur den 1. Wert an.

              Wie kann ich das denn für alle Elemente dieser ID anwenden?


              Mfg

              Kommentar


              • #8
                Auch wenn dieser Post nicht so richtig zur Fragestellung passt:
                Es ist für die Pflege, Verwaltung, Anzeige wesentlich einfacher ein Objekt-Baum aufzubauen!
                In PHP geht das z.B. über DOM oder native Objekte.
                "Nobody is as smart as everybody" - Kevin Kelly
                — The best things in life aren't things

                Kommentar


                • #9
                  Hallo,

                  und könntest du mir vielleicht auch sagen wie man das macht?


                  Mfg

                  Kommentar


                  • #10
                    schau mal nach objektorientierter programmierung... das ist das was er meint. Du könntest auch jedem id noch ner klasse zuweisen um die styles leichter verändern zu können...
                    Under Construktion

                    Kommentar

                    Lädt...
                    X