Visualisierung eines Stammbaums

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

  • Visualisierung eines Stammbaums

    Hi,

    ich muss unbedingt ein PHP-Script schreiben das mir von Leuten in meiner Datenbank einein Stammbaum erstellt. Jeder DB-Eintrag besteht aus 3 Feldern.

    1. ID
    2. Name
    3. Vorfahre

    Wie gesagt möchte ich nun das mir das Script in einer Stammbaumansicht (zb. wie im Windows Explorer) darstellt wie die einzelnen Leute zueinander in Vebindung stehen. Der Einfachheit halber soll jede Person nur einen Vorfahren statt 2 haben. Ich bekomme das ganze aber leider überhaupt nicht hin. Kann da jemand helfen?

  • #2
    wo genau hast du denn probleme?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Mir fehlt es einfach an einer Idee wie das zu verwirklichen wäre. Ich weiß schon das ich das am besten über Rekursive Programmierung erreiche, nur fehlt mir irgendwie der Ansatz. Wenn ich sonst Probleme mit PHP hatte dann habe ich einfach angefangen und mir den Rest aus Büchern, Foren etc. zusammengesucht, an dieser Stelle jedoch bin ich ziehmlich aufgeschmissen.

      Kommentar


      • #4
        mal angenommen,

        du hast die id der person, die als ausgangspunkt gilt ... ab damit in ein array

        - schauen, ob die ein vorfahr hat ... wenn ja, merken (an den anfang des arrays setzen) und zu dieser person einen vorfahr suchen

        - schauen, ob die ein nachkommen hat ... wenn ja, merken (ans ende des arrays setzen) und zu dieser person einen nachkommen suchen

        jetzt hast du ein array, welches in chronologischer reihenfolge die person enthält ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Dein Problem ist genau die Theorie der "nested sets".
          Such mal nach diesem Stichwort.
          Das Thema erfordert aber schon einige Hirnzellen und ist vom Niveau her recht hoch anzusiedeln. Also nicht gleich aufgeben. :-)

          Kommentar


          • #6
            @Der-Hund: So einfach funktioniert das leider nicht, da jede Person im Stammbaum auch mehrer NAchfahren haben kann die auf der gleichen Ebene liegen.

            @DSB: Sowas hatte ich befürchtet (das mit den Hirnzellen). Werde mal die Suche anschmeißen. Thx.

            Kommentar


            • #7
              So einfach funktioniert das leider nicht, da jede Person im Stammbaum auch mehrer NAchfahren haben kann die auf der gleichen Ebene liegen.
              schön, daß du diesen umstand gleich erwähnt hast ...
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Hm okay direkt erwähnt hab ich es nicht. Naja ist ja auch egal. Ich habe mir die Sache mit den NEsted Sets mal angesehen und das kommt für mich eher nicht in Frage weil die DB-Struktur bereits sthet und ohne weiteres läßt sich das nicht an die Erfordernisse der Nested Sets angleichen. Gibts sonst noch eine Möglichkeit?

                2. Frage

                Ich habe immer noch nicht genau verstanden was hier gemacht wird:

                PHP-Code:
                while($tmp mysql_fetch_array($result)) { 

                  
                $forumarray$tmp["ID"] ] = $tmp;         
                  
                $kindarray$tmp["PID"] ][] =  $tmp["ID"]; 
                Es geht mir in erster Linie um die erste Zeile. Wie ich schonmal erwähnt habe, habe ich mal diese Syntax gelernt:

                PHP-Code:
                While[Bedingung]
                {
                Anweisung

                Hier scheint das aber anders zu sein. Wäre jemand so nett mir das mal genauer zu erklären?

                Kommentar


                • #9
                  Hier scheint das aber anders zu sein. Wäre jemand so nett mir das mal genauer zu erklären?
                  nein, ist doch das selbe ...

                  die bedingung ist hier eben nur der wahrheitswert einer variablen, der vorher noch etwas zugewiesen wird. wenn fetch-array keine objekte mehr kriegt, leifert es false ... somit die abbruchbed. der schleife ....

                  da das zu den elementaren grundlagen gehört, frage ich lieber nochmal, ob ich deine frage richtig verstanden hab?
                  Die Zeit hat ihre Kinder längst gefressen

                  Kommentar


                  • #10
                    Du hast es richtig verstanden. Mir war nicht bewußt das man innerhalb der Bedingung eine Zuweisung machen kann. Um sicherzugehen:

                    Das ganze beduetet also:

                    Weise der Variablen $tmp den Wert aus mysql_fetch_array($result) zu und überprüfe dann ob die Variable $tmp existiert. Richtig?

                    Kommentar


                    • #11
                      Original geschrieben von Chaos06
                      Das ganze beduetet also:

                      Weise der Variablen $tmp den Wert aus mysql_fetch_array($result) zu und überprüfe dann ob die Variable $tmp existiert. Richtig?
                      nein, letzteres ist falsch.

                      natürlich existiert $tmp, denn du hast ihr ja gerade einen wert zugewiesen.

                      überprüft wird, ob der wert wahr oder falsch ist. beschäftige dich mal mit bool'schen variablen/ausdrücken.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar

                      Lädt...
                      X