ここ数日間、基本的な内容を投稿してきましたが、今日は、CMS システムのバックエンドで一般的に使用されるカテゴリー管理部分の本質は、無制限のカテゴリー メニューです。初心者には難しいかもしれませんが、今日の私の詳しい説明を聞いて、将来は誰でもできるようになると思います。それを達成するにはどうすればよいでしょうか?まずデータベースを作成しましょう: -- -- テーブル構造 `cr_columninfo` --
コードをコピー コードは次のとおりです:
CREATE TABLE `cr_columninfo` ( `columnid` int(4) NOT NULL auto_increment、 `columnfatherid` int(4) NOT NULL デフォルト '0'、 `columnname` varchar(100) NOT NULL デフォルト ''、 `columnadder` varchar(50) NOT NULL デフォルト ''、 `co lumninputdate ` date NOT NULL デフォルト '0000-00-00', PRIMARY KEY (`columnid`) ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 -- テーブル `cr_columninfo` にデータをエクスポートします - - INSERT INTO `cr_columninfo` (`columnid`, `columnfatherid`, `columnname`, `columnadder`, `columninputdate`) VALUES (1, 0, 'AV star', 'leehui', '2006-09-28') ), (2, 0, 'キャンパススタイル', 'leehui1983', '2006-09-28'), (3, 1, '香港と台湾のスター', 'leehui', '2006-09-28 ') , (4, 0, '風景写真', 'leehui1983', '2006-09-29'), (5, 4, '広大な海', 'leehui1983', '2006-09-29' ), (6, 5, '福州の海', 'leehui1983', '2006-09-29'), (7, 2, '卒業写真', 'leehui', '2006-09-29'), ( 9, 0, 'スポーツスター', 'leehui1983', '2006-10-02'), (10, 0, '絶妙な壁紙', 'leehui1983', '2006-10-02'), ( 11, 0, '都市風景', 'leehui1983', '2006-10-02'), (12, 0, '漫画アニメーション', 'leehui1983', '2006-10-02'), (13, 0, 'ゲームのスクリーンショット', 'leehui1983', '2006-10-02'), (14, 0, '作者のアルバム', 'leehui1983', '2006-10-02')
これらはテストデータです。基本的には、ツリー構造に従ってデータ フィールドを確立することが基本であり、各列には独自の ID 番号と親列の ID 番号があり、これらの 2 つの関係に基づいてツリー構造が確立されます。親 ID = 0。これは簡単に理解できます。次に、このプログラムは最も一般的な再帰アルゴリズムを使用してサブメニューを検索し、それらを大きなテーブルに表示します。トップレベルのメニューを表示し、再帰によってすべてのサブメニューをリストします。メニューとサブメニューは上位レベルのメニューの次の行に配置され、行の表示属性は動的に生成されません。このプログラムを JS と組み合わせて行の表示と非表示を制御します。これは、スケーラブルな Microsoft メニューに似ています。その結果、誰もが理解できるように、記事の最後に図が示されています。プログラムのデモを行うために、生成されたページの HTML を DW にコピーします。
コード部分を見てください。難しい構文はありません。興味があれば、このコードを展開してください。
PHP コードは次のとおりです:
コードをコピーします コードは次のとおりです:
类别目录树 列ツリー構造リスト $ GLOBALS["ID"] =1; //ドロップダウン メニューの ID 番号を追跡するために使用されます $layer=1; //現在のメニューのレベルを追跡するために使用されます //データベースに接続します $Con =mysql_connect("localhost ","root","7529639"); mysql_select_db("cr_download"); mysql_query("SET NAMES 'GBK'"); // 第 1 レベルのメニューを抽出します $sql=" select * from cr _columninfo where columnfatherid= 0"; $result=mysql_query($sql,$Con); //第 1 レベルのメニューが存在する場合、スタート メニューを表示 if(mysql_num_rows($result)>0) ShowTreeMenu( $Con,$result,$ ID) //=================================== ======= = ShowTreeMenu //============================のシリーズ。 ============ = function ShowTreeMenu($Con,$result,$layer)メニューの表示を開始します。各サブメニューはテーブルを使用して を示します “テーブルのセルパディング = '0' セル間隔 = '0' 境界線 = '0' 幅 = '100%' & GT;"; ; $ ROWS ++ ) select * from cr_columninfo where columnfatherid=$menu[columnid]" ; $result_sub=mysql_query($sql,$Con); echo "
"; サブメニューがある場合は、JavaScript の onClick ステートメントを追加します if(mysql_num_rows($result_sub) > echo " ;项目 // このメニュー項目にサブメニューがない場合は、メニュー名のみを表示します echo $ menu [columnname]; echo "& lt;/td & gt; & lt;/tr & gt;"; if(mysql_num_rows($ result_sub)> 0) id "++。 ; echo "
"; // 系列に 1 を追加します $layer++; // ShowTreeMenu() 関数を再帰的に呼び出してサブメニューを生成します ShowTreeMenu($Con,$result_sub,$layer); //サブメニューの処理が完了し、再帰の前の層に戻ります echo "
"; "
}
?> ;
最後に、レンダリングとソース コードのパッケージを添付します。この記事が皆様のお役に立てれば幸いです^_^
このドキュメントをダウンロードしてください。
http://www.bkjia.com/PHPjc/317503.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/317503.html
技術記事
数日間基本的な内容を投稿したので、今日は CMS システムのバックエンドで一般的に使用されるカテゴリー管理部分の本質である、初心者向けの無制限のカテゴリー メニューについて説明します。 ...