2016-04-11 4 views
0

私はPHPとMySQLを使用して、ファミリーツリープログラムを構築しており、ほぼ完成しました。私のメインプログラムは、個人、子供、配偶者の3つのテーブルで動作します。あなたが推測できるように、最後の2つのテーブルは単にリレーションテーブルであり、これで私はファミリーツリー全体をレンダリングできます。 parentID and childID"spouse"表が"individaulID""spouseID"を持って、ツリーへの文字列データ

今選択したノードのためにのみ関係ツリーを表示する必要があるザ・ - 」child"テーブルがちょうど2列を有しているテーブル"individual"は、などGender, date of birth, date of death, email, first name, last nameなどの詳細に家族全員を保持しています。私が受信するデータは、次のようである:

"P(13)=14,P(14)=15,P(15)=16,C(16)=17,S(17)=18,C(17)=19" 

ここで、 "P(13)14 =" 14 13の親であることを意味し、 "C(16)17 =" 17 16の子と「S(であることを意味17)= 18は、18が配偶者17であることを意味する。

複数のユーザーが一時表を使用すると、問題が発生する可能性があるため、一時表を作成したくない。このデータを解析してUL LI構造を作成する方法に関するアイデアはありますか?

おかげで、 のSudhir

+0

このレイアウトはあなたに課せられていますか、以前のタイプ(C/S)の単純な関係テーブルを持つと、クエリが簡単になります。それ以外の場合は、最終的に詳細を読む前に、テーブル間で切り替えるという関係に従わなければなりません。 – Mike

+0

はいマイク、レイアウトが課され、私はそれを変更できません。私はフルツリーをレンダリングするときに、私はこれらの3つのテーブルでクエリを実行し、それは正常に動作します。 2つのノードが選択されたときに文字列データが入力される問題が修正されました。 – Sudhir

答えて

0

は、私はそれを解決しました。私がしたことは以下の通りです。
文字列から、一番上のノードを見つけることができます。また、文字列に必要なユーザーIDを見つけて、リストを$ valid_idsに格納することもできます。だから私はIDとしてトップノードを使用してオリジナルのスクリプトを実行し、where句に

"individual_id in ($valid_ids)"
を含めるようにSQLを変更しました