PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Visualisierung eines Stammbaums (https://www.php-resource.de/forum/php-developer-forum/49062-visualisierung-eines-stammbaums.html)

Chaos06 09-01-2005 23:02

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?

derHund 09-01-2005 23:07

wo genau hast du denn probleme?

Chaos06 09-01-2005 23:33

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.

derHund 10-01-2005 01:46

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 ...

DSB 10-01-2005 10:15

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. :-)

Chaos06 10-01-2005 13:06

@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.

derHund 10-01-2005 14:08

Zitat:

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 ...

Chaos06 10-01-2005 14:49

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?

derHund 10-01-2005 14:53

Zitat:

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?

Chaos06 10-01-2005 15:04

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?

wahsaga 10-01-2005 15:19

Zitat:

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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:45 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG