まず、私はプログラミングと PHP に不慣れなため、私を炎上させないでください。私は教室で基礎の快適さの外に出て、最初のプロジェクトに取り組もうとしている学生です。私は検索を実行しましたが、私の問題は、探しているものをどのように表現すればよいかさえわからず、簡単な解決策を見落としているかどうかに興味があることです. この問題に関連すると思われる「ネストされた」または「ツリー」のすべてのバリエーションを検索しようとしましたが、私の質問に答えるものを見つけるのに問題があります。
ネストされたツリーの他のメンバーによって参照されたメンバーをリストしようとしています。たとえば、ジョンがメアリー、マイクを後援し、トムとマイクがミーガンとスーザンを後援し、スーザンがベティとミシェルを後援した場合、次のようなものを表示できるようにしたいと考えています。
- ジョン
- メアリー
- マイク
- ミーガン
- スーザン
- ベティ
- ミシェル
- トム
たとえば、必要に応じて 5 レベルの深さだけを表示する必要があるなど、検索する深さを指定できるようにしたいと考えています。このために、私は考えていましたfor (i=0;i<=4;i++)
$query = "SELECT fname, lname, user_id FROM USER WHERE sponsor_id = (SELECT user_id FROM USER WHERE username = '$_SESSION[username]')";
$result = mysqli_query($con, $query);
while ($row = mysqli_fetch_row($result)) {
echo "<ul><li>$row[0] $row[1]</li>";
$subquery = "SELECT fname, lname, user_id FROM USER WHERE sponsor_id = '$row[2]'";
$subresult = mysqli_query($con, $subquery);
while ($row2 = mysqli_fetch_row($subresult)) {
echo "<ul><li>$row2[0] $row2[1]</li></ul>";
}
}
これは、正確に機能しなかった一般的な必要な構造を把握するための私の最後の試みでした。これをさらに深くしてネストを続けたい場合は、任意のレベルでこれを機能させることができると確信していますが、100 レベルを返したい場合はどうすればよいでしょうか...私が見落としている単純な構造があるようです。
私が探しているものを検索する方法を知っていれば、これを説明するのに役立つリンクさえあれば、どんなガイダンスでも大歓迎です。
皆さんのコメントを読んで、いろいろ検索した結果、答えを見つけました。私が探しているのは、隣接リストまたはクロージャ テーブルです。これについて私が見つけた最良の情報はhttp://www.slideshare.net/billkarwin/models-for-hierarchical-dataにあります。みんな情報ありがとう!