無制限の分類は、主に上位レベルの分類の ID と分類パスを保存することによって実現されます。データの構造が単純なので、分類関係をツリー表示するには再帰を使って実装するしか考えられません。
無制限の分類は、主に上位レベルの分類の ID と分類パスを保存することによって実現されます。データの構造が単純なので、分類関係をツリー状に表示したいのですが、それを実装するには以下が自分で書いた分類データのテーブル構造とツリー表示関数です。間違っていますか?みんなが指摘してくれることを願っています。
テーブル構造: id フィールドはカテゴリ識別子、name フィールドはカテゴリ名、father_id フィールドは親カテゴリの ID、path フィールドはカテゴリ パス (カテゴリの祖先のコレクションを格納) 、 isdir はディレクトリであるかどうかを判断します (1 は Yes を意味し、0 は No を意味します)。
表示関数:
コードをコピー コードは次のとおりです:
//$count は、分類レベル
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where Father_id = Fatherid"); 🎜>$num = $this->sql->sql_numrows();
$n = 1;
while(isset($rs[$i])) 🎜>{
$name = "";
for($n = 1 ; $n < $count ; $n )
{
$name.="│ "; }
if($i 1==$num)
{
$name.="lux─".$rs[$i][name]
}
else
{
$name.="pils─".$rs[$i][name]
}
if($rs[$i][isdir])
{
; $str.= "".$name."";
}
else
{
$str.= $name";
}
$temp = $count 1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i;
}
return $str;
}
$this->sql オブジェクトが SQL 操作クラス オブジェクトである場合、re_datas() 関数は見つかった配列、sql_numrows( ) 関数はクエリされた番号を返します