無限分類は実際の開発でよく使われるデータ構造で、一般にツリー構造と呼ばれます。
タイトルデザイン: タオバオの商品分類と同様に、任意のカテゴリにサブカテゴリを設定できます。
1. `type` データテーブルを作成します
`id` 自動増加
`fid` int(11) デフォルト (0)、親ノード ID
`name` varchar(50)、カテゴリ名
コードをコピーします コードは次のとおりです:
CREATE TABLE `type` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fid` int(11) NOT NULL DEFAULT '0',
`name` varchar( 50) NOT NULL,
PRIMARY KEY (`id`)
)
2. 追加
まず最上位カテゴリをいくつか追加しましょう
コードをコピーします コードは次のとおりです次のように:
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '携帯電話');
INSERT INTO `type` (`id`, ` fid`, `name`) VALUES (NULL, ' 0', 'Computer');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', 'Shoes' );
INSERT INTO `type` (`id` , `fid`, `name`) VALUES (NULL, '0', 'Clothes');
ここで fid=0 は最上位のカテゴリを表します
次に追加します{コンピュータ} のいくつかのサブカテゴリ
コードをコピーします コードは次のとおりです:
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2) ', 'デスクトップ'), (NULL, '2', 'ノートブック' ');
ここで fid=2、{shoes} のサブカテゴリを追加した場合、ID 2 はカテゴリ {computer} の ID です。 、fid=3
同様に、{notebook} のサブカテゴリを追加すると、fid=6
コードをコピー コードは次のとおりです:
INSERT INTO `type` (`id`, ` fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6 ', 'hp');
3. 削除
カテゴリ {Notebook を削除する場合}、とても簡単です
コードをコピーします コードは次のとおりです:
DELETE FROM `type` WHERE `id また、`=6
{Notebook}のサブカテゴリを処理することも忘れないでください。それに応じて
コードをコピーします コードは次のとおりです:
function del($fid) {
$sql="SELECT * FROM ` type` WHERE `fid`=$fid";
$rs= mysql_query($sql);
for ($i = 0; $i < count($rs); $i++) {
$sql="DELETE FROM `type` WHERE `id`={$rs[$i ]['id']}";
mysql_query($sql); del($rs['id']);//再帰 }
}
del(6);// 操作を実行します
ここでこのように直接削除するのではなく、再帰を使用するのはなぜそんなに面倒なのでしょうか
コードをコピーします
コードは次のとおりです:DELETE FROM `type` WHERE `fid`=6
{ausu} と {hp} を直接削除しますか?ただし、{ausu} にサブカテゴリ {a1} があり、{a1} にもサブカテゴリ {a2} があると仮定すると、再帰なしにデータを完全に削除することはできません。
3. 検索
1. {Computer} のサブカテゴリを見つけます
コードは次のとおりです:
SELECT * FROM `type` WHERE `fid`=2
2 . {Computer} のすべてのサブカテゴリを検索します
コードをコピー
コードは次のとおりです:
function sel($fid) { $sql="SELECT * FROM `type` WHERE ` fid`=$fid" ; $rs=mysql_query($sql);
for ($i = 0; $i
echo $rs[$i][' name'];
sel($rs[$i]['id']);//再帰
}
}
sel(2);
4. 実際のデータ適用
データテーブルにフィールド `tid` を追加します。フィールドの値は、レコードが属するカテゴリの `type` テーブルの ID です。 name の値は変更される可能性があるため、name ではなく id である必要があります。
たとえば、{Computer} カテゴリに属する製品をクエリします
コードをコピーします コードは次のとおりです:
SELECT * FROM `goods` WHERE `tid`=2
注: コードは以前に実行されていない可能性があります。エラーはありますが、その考え方は正しいです。重要なのは、コードを覚えることではなく、ツリー構造を理解することです。
http://www.bkjia.com/PHPjc/327096.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327096.html技術記事無限分類は実際の開発でよく使われるデータ構造で、一般にツリー構造と呼ばれます。 タイトルデザイン:タオバオの商品分類と同様に、任意のカテゴリーにサブカテゴリーを設定できます。 ...