以前、分類機能も含めて百科事典を作ったことがあるので、最初は難しそうだと思ったのですが、それは無限分類ではなく、自分で設計した固定の3段階分類のシンプルな実装でした。考えてみると実装方法が大雑把すぎます。実は、3 レベル分類は無限レベル分類の特殊なケースにすぎません。しばらく考えてから、ネットで調べたら、そういうのがたくさんあることが分かりました(笑)。実際、無限ドロップダウン リスト関数は非常に単純で、再帰アルゴリズムを使用するだけです。
まず、データベースを設計する必要があります。分類情報を格納するテーブルを構築する必要があります。最初のフィールドは主キー (ID)、2 番目は親分類 ID (parentid) です。 、3 番目は分類の名前 (クラス名) です。考えられる影響は次のとおりです:
ID PARENTID CLASSNAME
1 0 第 1 レベルの分類 A
2 0 第 1 レベルの分類 B
3 1 第 2 レベルの分類 A
4 1 第 2 レベルの分類 B
主なアイデア: 最初に 3 番目の分類を確認します。 4 行目では、親クラス ID (PARENTID) の値は 1 で、id=1 のクラスのサブクラスに属していることを示しています。ただし、1 行目と 2 行目は第 1 レベルの分類であり、上位の分類がないため、親クラス ID (PARENTID) の値は 0 で、主分類を示し、以下同様に無限分類を実現します。最終的な効果は次のとおりです。
§第 1 レベルの分類 A
§─┴第 2 レベルの分類 A
§─┴第 2 レベルの分類 B
§第 1 レベルの分類 B
そして、記述として PHP が使用されます。ここでの言語は、原理が似ており、単なる再帰であるため、他の言語に簡単に変更できます。
コードをコピーします コードは次のとおりです:
$dbhost = "localhost" // データベースのホスト名
$dbuser = "root"; // データベースのユーザー名
$; dbpd = "123456 "; // データベースのパスワード
$dbname = "test" // データベース名
mysql_select_db($dbname);データベース
mysql_query(" SET NAMES 'utf8'");
display_tree("§",0);
function display_tree($tag,$classid) {
$result = mysql_query("
SELECT *
ylmf_class
WHERE 親 ID) = '" . $ classid . "'
;"
);
while ($row = mysql_fetch_array($result)) {
// ノード名をインデントします
echo $tag.$row['classname'] . "< ;br/> ;";
//この関数を再度呼び出して、子ノードの子ノードを表示します
display_tree($tag."─┴",$row['id']);
}
}
?> ;