PHP無制限分類に基づく深い理解_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:10:22
オリジナル
833 人が閲覧しました

無限分類は実際の開発でよく使われるデータ構造で、一般にツリー構造と呼ばれます。
タイトルデザイン: タオバオの商品分類と同様に、任意のカテゴリにサブカテゴリを設定できます。

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

注: コードは以前に実行されていない可能性があります。エラーはありますが、その考え方は正しいです。重要なのは、コードを覚えることではなく、ツリー構造を理解することです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327096.html技術記事無限分類は実際の開発でよく使われるデータ構造で、一般にツリー構造と呼ばれます。 タイトルデザイン:タオバオの商品分類と同様に、任意のカテゴリーにサブカテゴリーを設定できます。 ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート