ホームページ  >  記事  >  バックエンド開発  >  PHPでの無制限分類例(タオバオ模倣品分類)

PHPでの無制限分類例(タオバオ模倣品分類)

WBOY
WBOYオリジナル
2016-07-25 08:58:431474ブラウズ
  1. CREATE TABLE `type` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `fid` int(11) NOT NULL DEFAULT '0',
  4. `name` varchar(50) NOT NULL,
  5. 主キー (`id`)
  6. )
コードをコピー

2. 追加 いくつかのトップレベルのカテゴリを追加する

  1. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', 'mobilephone');
  2. INSERT INTO `type` (`id`, ` fid `, `name`) VALUES (NULL, '0', 'computer');
  3. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', 'shoes' ) ;
  4. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', 'Clothes');
コードをコピー

ここで、fid=0 は最上位のカテゴリを表します

次に、{Computer} にいくつかのサブカテゴリを追加します

  1. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', 'Desktop'), (NULL, '2', 'Notebook');
コードをコピー

ここで fid=2、id 2 はカテゴリ {Computer} の ID です。{Shoes} のサブカテゴリを追加すると、fid=3 になります。 同様に、{notebook} にサブカテゴリを追加すると、fid=6 となります。

  1. INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6', 'hp');
コードをコピー

3. 削除します。 カテゴリ {Notebook} を削除したい場合は、次の手順を実行できます。

  1. DELETE FROM `type` WHERE `id`=6
コードをコピー

{Notebook} サブカテゴリも同様に処理する必要があります。

  1. function del($fid) {

  2. $sql="SELECT * FROM `type` WHERE `fid`=$fid";
  3. $rs=mysql_query($sql);
  4. for ($i = 0; $i $sql="DELETE FROM `type` WHERE `id`={$rs[$i]['id']}" ;
  5. mysql_query($sql);
  6. del($rs['id']);//再帰
  7. }
  8. }

  9. del(6);//操作を実行

コードをコピー

なぜこのように直接削除せずに再帰を使用するのがそれほど面倒なのでしょうか?

  1. DELETE FROM `type` WHERE `fid`=6
コードをコピー

それでは、{ausu}、{hp}を直接削除できますか? ただし、{ausu} にサブカテゴリ {a1} があり、{a1} にもサブカテゴリ {a2} があると仮定すると、再帰なしにデータを完全に削除することはできません。

3. 検索

1. {コンピューター} のサブカテゴリを検索します。

  1. SELECT * FROM `type` WHERE `fid`=2
コードをコピー

2 {Computer} のすべてのサブカテゴリを検索します。

  1. function sel($fid) {

  2. $sql="SELECT * FROM `type` WHERE `fid`=$fid";
  3. $rs=mysql_query($sql);
  4. for ($i = 0; $i echo $rs[$i]['name'];
  5. sel($rs[$i]['id'] );//再帰
  6. }
  7. }

  8. sel(2);

コードをコピー

IV. フィールド `tid` をデータ テーブルに追加します。フィールド値は、レコードが属する `type` テーブルの ID です。 name の値は変更される可能性があるため、name ではなく id である必要があります。

たとえば、{Computer} カテゴリに属する​​製品をクエリします。

  1. SELECT * FROM `goods` WHERE `tid`=2
コードをコピー

以上、皆さんのお役に立てれば幸いです。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。