PHP JS無限スケーラブルメニューの詳しい解説(シンプルで分かりやすい)
Jun 13, 2016 pm 12:34 PM
ここ數(shù)日間、基本的な內(nèi)容を投稿してきましたが、今日は、CMS システムのバックエンドで一般的に使用されるカテゴリー管理部分の本質(zhì)は、無制限のカテゴリー メニューです。初心者には難しいかもしれませんが、今日の私の詳しい説明を聞いて、將來は誰でもできるようになると思います。それを達(dá)成するにはどうすればよいでしょうか?まずデータベースを作成しましょう:
--
-- テーブル構(gòu)造 `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 デフォルト '',
`columninputdate` date NOT NULL デフォルト '0000-00-00',
PRIMARY KEY (` columnid`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 AUTO_INCREMENT=15;
-- テーブル `cr_columninfo` 內(nèi)のデータをエクスポートします
--
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, '香港と臺(tái)灣のスター', 'leehui', '2006-09-28'),
(4, 0, '風(fēng)景寫真', 'leehui1983', '2006-09-29'),
(5, 4, '広大な海', 'leehui1983', '2006-09-29') ,
(6, 5, '福州の海', 'leehui1983', '2006-09-29'),
(7, 2, '卒業(yè)寫真', 'leehui', '2006-09-29 ' ),
(9, 0, 'スポーツスター', 'leehui1983', '2006-10-02'),
(10, 0, '絶妙な壁紙', 'leehui1983', '2006-10 - 02'),
(11, 0, '都市風(fēng)景', 'leehui1983', '2006-10-02'),
(12, 0, '漫畫アニメーション', 'leehui1983', '2006 - 10-02'),
(13, 0, 'ゲームのスクリーンショット', 'leehui1983', '2006-10-02'),
(14, 0, '作者のアルバム', 'leehui1983', ' 2006-10-02');
これらはテスト データです。基本原則は、各列に獨(dú)自の ID 番號(hào)と、これら 2 つの関係に基づいて、最上位の列の親 ID = 0 となるツリー構(gòu)造を確立します。次に、プログラムの実行原理を説明します。このプログラムはサブメニューを橫斷するために最も一般的な再帰アルゴリズムを使用します。まず、最初にすべてのトップ メニューをクエリして表示します。大きなテーブルでは、各行にトップレベル メニューが表示され、次にすべてのサブメニューが再帰的にリストされます。サブメニューは上位レベル メニューの次の行に配置され、表示屬性が表示されます。行の ID はプログラムによって動(dòng)的に生成され、JS と組み合わせて行の表示と非表示を制御します。これは、Microsoft のメニューと同様のスケーラブルな効果です。この記事は、プログラムを説明するために、生成されたページの HTML を DW にコピーした最終結(jié)果です。
コード部分を見てください。難しい構(gòu)文はありません。興味があれば、このコードを展開してください。
PHP コードは次のとおりです:
コードをコピーします コードは次のとおりです:
?
?
?
="0" bgcolor="#EFEFE7">
<表幅="100%" 高さ="25" ボーダー="0" セルパディング="0" セルスペース="0" bgcolor="#739E18" >
//使用する ID 番號(hào)ドロップダウン メニューを追跡
$layer =1; //現(xiàn)在のメニューを追跡するために使用されるレベル
$Con=mysql_connect("localhost","root", "7529639");
mysql_query("SET NAMES 'GBK'");
$sql="select * from cr_columninfo where columnfatherid=0"; > $result=mysql_query( $ sql,$Con);
//第 1 レベルのメニューが存在する場(chǎng)合、メニューの表示を開始します
if(mysql_num_rows($result)>0) ShowTreeMenu($Con ,$result,$ID);
//=================================== =========
//ツリーメニュー関數(shù)を表示 ShowTreeMenu($con,$result,$layer)
//$con: データベース接続
//$result: メニューレコードセット表示する
//$layer: 表示するメニューのレベル
//========================== ============ =======
function ShowTreeMenu($Con,$result,$layer)
{
// メニュー項(xiàng)目の數(shù)を取得します。表示する必要があります
$numrows=mysql_num_rows($result) ;
//メニューの表示を開始します。各サブメニューはテーブルで表されます
echo "
"; | ; ; echo " | "; //メニュー項(xiàng)目にサブメニューがない場(chǎng)合は、メニュー名のみが表示されます echo $menu[columnname]; echo " |
?>