Ankündigung

Einklappen
Keine Ankündigung bisher.

stammbaum mal etwas anders

Einklappen

Neue Werbung 2019

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

  • #16


    noch mal ein kleines bild zur veranschaulichung ...
    dabei ist aber egal ob der stammbaum von oben nach unten oder von links nach rechts erfolgt ...
    gregor hat somit mit dem einladen aller personen bekonnen ... und dann haben die mitglieder auch eingeladen ...

    das ist die dementsrpechende tabelle für das bild:

    Code:
    name | eingeladenvon
    
    gregor | (leer)
    sandra | gregor
    patrick | gregor
    peter | sandra
    mike | sandra
    sven | patrick
    marie | sven
    udo | marie
    lenny | marie
    clara | patrick
    michael | peter
    carsten | peter
    susie | peter
    willi | susie
    anselm | susie
    kai | clara

    Kommentar


    • #17
      Auslesen und in PHP zusammenbauen. Besonders einfach geht das, wenn Du in der DB noch nen Timestamp für den Zeitpunkt der Einladung hinterlegst. Dann hast Du noch ein perfektes Sortierkriterium.
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #18
        ich find es nicht wirklich einfach, da ich leider nicht bei jeder person mehr einen timestamp habe, da ich von einer früheren txt datei ein paar namen in die tabelle übernommen habe ... eventuell zeigst du mir vllt einen ansatz ...

        Kommentar


        • #19
          Dann sortiere die Namen doch einmal ig mit PHP (eben über den Parent) und vergib in der DB nachträglich Timestamps vor denen der Kinder.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #20
            tut mir leid ... ich verstehe nicht ...

            Kommentar


            • #21
              Zitat von sandrasandra Beitrag anzeigen
              tut mir leid ... ich verstehe nicht ...
              *Mit Rehaugen guck* hast du vergessen

              Komisch, dass sich dieser Thread solange im Fortgeschrittenen-Forum hält, andere wären closed, trashed oder bestenfalls in der Scriptbörse gelandet, nicht wahr nikosch?

              Naja, wie dem auch sein. Du kannst nach der Parent-Child-Methode dynamisch ein Array über Referenzen erstellen, ein Timestamp ist auch nicht notwendig. Das ganze läuft nach diesem Prinzip:

              Baumstruktur aus DB in Array abbilden - php bar

              Kommentar


              • #22
                Was er meint ist, dass das Suchen in sortierten Datensätzen schneller geht, als in unsortierten Datensätzen! Daher wäre ein Timestamp ein guter Anhaltspunkt, wo das Kind eines Knotens zu suchen ist, weil die Kinder neuer sein müssen als der Vater...

                Solltest du wirklich NUR diese Daten - dh Name und EingeladenVon - hast, dann musst du schon von jedem Knoten aus den nächsten (die nächsten) Knoten suchen und diese mit Kanten versehen. Ich würde die Daten einmalig nach diesem Prinzip sortieren und die einzelnen Datensätze mit der Ebene im Baum versehen, sodass das Suchen schneller geht...

                EDIT: ...oder so wie hpf beschrieben hat!

                Kommentar


                • #23
                  Komisch, dass sich dieser Thread solange im Fortgeschrittenen-Forum hält, andere wären closed, trashed oder bestenfalls in der Scriptbörse gelandet, nicht wahr nikosch?
                  Ich habs einfach nicht gesehen. Passiert mir leider öfter, weil ich z.Zt sehr viel moderieren muss und die Threads über „Neue Beiträge“ lese.

                  [MOD: verschoben]


                  Du kannst nach der Parent-Child-Methode dynamisch ein Array über Referenzen erstellen
                  Das Problem ist, dass Du das ohne Sortierfeld jedes mal tun musst, was an sich unnötig ist. Siehe nachfolgend.
                  Das ganze läuft nach diesem Prinzip:
                  Das Prinzip hat einen entscheidenden Designfehler.
                  ORDER BY `parent`'
                  geht implizit davon aus, dass die IDs eine Sortierreihenfolge angeben. Das ist in einer echten DB allerdings nicht zwingend gegeben! Deshalb habe ich oben die Ergänzung von Timestamps empfohlen.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #24
                    Zitat von nikosch Beitrag anzeigen
                    Das Prinzip hat einen entscheidenden Designfehler.
                    geht implizit davon aus, dass die IDs eine Sortierreihenfolge angeben. Das ist in einer echten DB allerdings nicht zwingend gegeben! Deshalb habe ich oben die Ergänzung von Timestamps empfohlen.
                    Die Sortierung ist nicht relevant, das ist ja gerade der Clou an den Referenzen. Das Parent kann auch nach dem Child eingefügt werden

                    Kommentar


                    • #25
                      IMHO stimmt das nicht ganz. Zudem sind Referenzen in Verbindung mit Arrays für Anfänger sehr schwer zu handlen. Ich würde hier zu Objekten raten, die alles vuiel viel einfacher machen. Zudem zu einem zentralen Lookup-Index, key-ID => Objekt.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #26
                        Zitat von nikosch Beitrag anzeigen
                        IMHO stimmt das nicht ganz.
                        Was stimmt nicht ganz?

                        Kommentar


                        • #27
                          Zitat von hpf Beitrag anzeigen
                          Was stimmt nicht ganz?
                          Daß ein Parent nach einem Kind eingefügt werden kann.

                          Aus der Aufgabenstellung - Wer lud wen ein? - verstehe ich: Wer nicht in im System ist, kann nicht einladen.

                          Kommentar


                          • #28
                            Nein, das geht ja jetzt um die Implementierung. Also der Beispielcode funktioniert. Ich kann mich aus meiner Anfängerzeit aber erinnern, dass Arrays mit Referenzen (diese bleiben ja erhalten) durchaus zu eigenartigen Seiteneffekten führen können. Zudem kann man eine ordentlich sortierte Liste, einfach linear abbügeln, statt mit Rekursion.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #29
                              Zitat von Optimist
                              Daß ein Parent nach einem Kind eingefügt werden kann.
                              Es ging darum, aus dem SQL-Baum eine PHP-Datenstruktur zu erstellen. Ich schlug ein Array vor, wobei es egal ist, ob zuerst der Kind- oder Elterndatensatz eingefügt wird.

                              Zitat von nikosch Beitrag anzeigen
                              Zudem kann man eine ordentlich sortierte Liste, einfach linear abbügeln, statt mit Rekursion.
                              Mal angenommen, wir hätten jetzt noch einen Timestamp und die Datensätze kommen chronologisch sortiert aus der Datenbank, also erst die Eltern und dann die Kinder. Du hattest ja geschrieben, du würdest es mit Objekten lösen. Also würdest du einen Objektbaum erstellen (?), die Rekursion wäre damit aber immer noch da.
                              Oder wie meinst du das?

                              Und was meinst du nun mit "IMHO stimmt das nicht ganz."?

                              Kommentar


                              • #30
                                PHP-Code:
                                class Navi
                                  
                                {
                                  static 
                                $Index = array ();

                                  function 
                                __construct ($id $name)
                                    {
                                    
                                $this->id $id;
                                    
                                $this->name $name;
                                    }


                                  function 
                                addItem (Navi $item)
                                    {
                                    
                                $this->items[] = $item;
                                    
                                Navi::$Index[$item->id] = $item;
                                    }
                                  }

                                $root = new Navi ('#');

                                while (
                                $set = *_fetch_assoc ())
                                  {
                                  
                                Navi::$Index[$set['parent']]->addItem (new Navi ($set['id'] , $set['name']));
                                  } 
                                [COLOR="#F5F5FF"]--[/COLOR]
                                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                                [COLOR="#F5F5FF"]
                                --[/COLOR]

                                Kommentar

                                Lädt...
                                X