ホームページ  >  記事  >  バックエンド開発  >  無制限の分類 - 概要_PHP チュートリアル

無制限の分類 - 概要_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:08:01937ブラウズ

PHPコード部分:

//無制限のカテゴリ使用パス
//原則: パスを分割して、必要なすべての PID と ID を取得します。パスは、祖先 ID から親 ID までの一連の ID を含む、テーブルの設計時のフィールドです。
//このメソッドは、表示、削除、その他の操作に関係なく、SQL ステートメントを 1 回実行するだけで目的の効果が得られます
// このメソッドは、私が好んで使用する方法でもあります。なぜなら、私の原則は、再帰なしでできるのであれば、再帰は決して使用しないということだからです
$link=mysql_connect('localhost','ユーザー名,'パスワード');
if(mysql_errno()){
データ Echo 'データベース接続に失敗しました:'
}
mysql_select_db('db_kind');
mysql_set_charset('utf8');
//concat()、文字列を新しい文字列に連結します
$sql="select concat(path,'-',id) as conpath,id,name,path from wx_kind order by conpath";
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
$arr=array();
// ここで、パス フィールドまたは新しく形成されたコンパス フィールドを使用して文字列を分割することを選択できます
//explode() 関数について注意すべき点が 1 つあり、分割される文字列にパラメータを使用する文字が含まれているかどうかに関係なく、少なくとも 1 つの要素を含む配列が返されます
$count=count(explode('-',$row['path']))-1;
//str_repeat()、主に形式を明確にするために文字列を繰り返します
$str=str_repeat(' , $count);
echo $str.$id.'=>'.$row['name'].'
';
}
/***********************************
今すぐ削除する必要がある場合は、同じパスを使用してください
例えば、今度は Thunder の分類を削除します
まず ID に基づいてパスを見つけます
*******************************************/
/* $sql1="select id,path from wx_kind where id=20";
$result1=mysql_query($sql1);
$row=mysql_fetch_assoc($result1);
$id=$row['id'];
$path=$row['path'];
// このカテゴリを親カテゴリまたは祖先カテゴリとしてすべてのパスを構築します
$new_path=$path.'-'.$id;
実行 // 以下は削除可能です。
$sql2="id={$id} または '{$new_path}%' のようなパスから wx_kind から削除します";
$result2=mysql_query($sql2);
if($result2 && mysql_affected_rows()){
エコー「正常に削除されました」 ! ';
}その他{
エコー「削除に失敗しました!」 ';
} } */
/****************************************************/
//再帰関数の使用方法については、あまり説明しません。コードを直接見てください。重要なのは、検索方法が異なることです
関数display_classify($pid=0,$num=0){
$sql="select id,name from wx_kind where pid={$pid}";
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
$id=$row['id'];
$str=str_repeat(' , $num);
echo $ str。$ id。 '=>'。$ row ['name']。 '< hr/>';
display_classify($id,$num+1,$sid);
}
}
//display_classify();
/****************************************************/
以上
関数del_classify($id){
// まず再帰を使用して、その ID または祖先 ID を持つすべてのサブカテゴリを検索し、次に操作を内側から外側に順番に削除します。削除するときは順序に注意してください。
$sql="select id,name from wx_kind where pid={$id}";
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
$id=$row['id'];
del_classify($id);
}
$sql1="id={$id} の wx_kind から削除";
$result=mysql_query($sql1);
if(!($result && mysql_affected_rows())){
$bool=false;
}その他{
$bool=true;
}
$bool を返す;
}
//del_classify(5);
以下はデータベースコードです:
--
-- データベース: `db_kind`
--
----------------------------------------------- - ----------
--
-- テーブル構造 `wx_kind_dump`
--
テーブル `wx_kind_dump` を作成します (
`id` int(11) NOT NULL auto_increment,
`pid` int(11) NOT NULL,
`name` char(40) NOT NULL,
`path` char(40) NOT NULL,
主キー (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=26;
--
-- テーブル `wx_kind_dump` 内のデータをエクスポートします
--
INSERT INTO `wx_kind_dump` 値 (1, 0, 'ニュース', '0');
INSERT INTO `wx_kind_dump` 値 (2, 0, 'Video', '0');
INSERT INTO `wx_kind_dump` 値 (3, 0, 'picture', '0');
INSERT INTO `wx_kind_dump` VALUES (4, 0, 'Reading', '0');
INSERT INTO `wx_kind_dump` 値 (5, 1, '政治ニュース', '0-1');
INSERT INTO `wx_kind_dump` VALUES (6, 1, 'Financial News', '0-1');
INSERT INTO `wx_kind_dump` VALUES (7, 1, 'Entertainment News', '0-1');
INSERT INTO `wx_kind_dump` VALUES (8, 1, 'スポーツ ニュース', '0-1');
INSERT INTO `wx_kind_dump` VALUES (9, 8, 'バスケットボール', '0-1-8');
INSERT INTO `wx_kind_dump` VALUES (10, 8, 'football', '0-1-8');
INSERT INTO `wx_kind_dump` VALUES (11, 8, 'F1', '0-1-8');
INSERT INTO `wx_kind_dump` VALUES (12, 8, '网球', '0-1-8');
INSERT INTO `wx_kind_dump` VALUES (13, 9, '国际篮球', '0-1-8-9');
INSERT INTO `wx_kind_dump` VALUES (14, 9, 'CBA', '0-1-8-9');
INSERT INTO `wx_kind_dump` VALUES (15, 9, 'CUBA', '0-1-8-9');
INSERT INTO `wx_kind_dump` VALUES (16, 9, 'NBA', '0-1-8-9');
INSERT INTO `wx_kind_dump` VALUES (17, 9, 'NCAA', '0-1-8-9');
INSERT INTO `wx_kind_dump` VALUES (18, 16, '热火', '0-1-8-9-16');
INSERT INTO `wx_kind_dump` VALUES (19, 16, '湖人', '0-1-8-9-16');
INSERT INTO `wx_kind_dump` VALUES (20, 16, '雷霆', '0-1-8-9-16');
INSERT INTO `wx_kind_dump` VALUES (21, 16, '凯尔特人', '0-1-8-9-16');
INSERT INTO `wx_kind_dump` VALUES (22, 18, 'James', '0-1-8-9-16-18');
INSERT INTO `wx_kind_dump` VALUES (23, 18, 'Wade', '0-1-8-9-16-18');
INSERT INTO `wx_kind_dump` VALUES (24, 20, 'KD', '0-1-8-9-16-20');
INSERT INTO `wx_kind_dump` VALUES (25, 20, 'WS', '0-1-8-9-16-20');

www.bkjia.com本当http://www.bkjia.com/PHPjc/477826.html技術記事 PHPコード部分: //無制限分类使用路径 //原則: 路径を通ってすべての希望のpidおよびidを分別し、路径は设计表時の1字段、包含着从祖先...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。