ホームページ  >  記事  >  バックエンド開発  >  PHP コードを共有して無限分類プログラムを実装する_PHP チュートリアル

PHP コードを共有して無限分類プログラムを実装する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:44:33775ブラウズ

無限分類はすべてのプログラム開発で遭遇する問題です。ここで、php+mysql で実装された無限分類プログラムを紹介します。

私のデータベース構造をお見せしましょう: データベースの名前は: fa_category です

フィールド タイプ コメント
シド int(11) カテゴリーID
カテゴリ名 varchar(255) カテゴリ名
カテゴリータイプ int(1) カテゴリタイプ、1は単一ページ、2は一般カテゴリです
キャットディル varchar(255) 英語カタログ
ディスプレイ int(1) 1は表示、2は表示しないことを意味します
キーワード varchar(255) コラムキーワード
説明 テキスト コラム説明
時間 int(11) 作成時間
親ID int(11) 親ノードID、最上位ノードの親ノードは0です

parentid フィールドを使用して親ノードの ID を記録します。parentid が 0 の場合、それは root です。さっそく、コードの書き方を見てみましょう。実現したい機能は次の図に示すとおりです:

このように表示するにはどうすればよいですか?私はこの質問について長い間考えてきました。まずこの SQL ステートメントを見てみましょう。

コードは次のとおりですコードをコピー

左結合を使用してテーブルを接続し、フィールド has_children を返します。このフィールドは、子ノードの数を記録します。

コードを見てみましょう、

SELECT c.cat_id、c.cat_name、c.measure_unit、c.parent_id、c.is_show、c.show_in_nav、c.grade、c.sort_order、COUNT( s.cat_id ) AS has_children

FROM ecs_category AS c
LEFT JOIN ecs_category AS s ON s.parent_id = c.cat_id
c.cat_id ごとにグループ化
c.parent_id、c.sort_order ASC で注文

代码如下 复制幣
パブリック関数 getCategory($catid=0,$re_type = true,$selected=0)
    {
        $db = new Public_DataBase();
        $sql = 'select c.cid,c.catename,c.catetype,c.ctime,c.parentid,count(s.cid) as has_children from '.
        __MYSQL_PRE.'c 左結合としてのカテゴリ '.
        __MYSQL_PRE.'category as s on s.parentid=c.cid c.cid によるグループ c.parentid asc による順序';
        $res = $db->selectTable($sql);
        $cateInfo = self::getChildTree($catid,$res);
        if($re_type==true)
        {
               $select = '';
              foreach($cateInfo as $val)
              {
                 $select .= '

}Smarty ループを使用して表示します。効果は上の写真と同じです。ご質問がある場合は、メッセージを残してください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633090.html技術記事無限分類はすべてのプログラム開発で遭遇する問題です。ここでは、php+mysql で実装された無限分類プログラムを紹介します。 ここであなたに...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。