ホームページ >php教程 >php手册 >よりシンプルな無限レベル カテゴリ メニュー コード

よりシンプルな無限レベル カテゴリ メニュー コード

WBOY
WBOYオリジナル
2016-06-13 12:33:541096ブラウズ

まず、terry39 さんのアドバイスに感謝します。元旦には何もすることがないので、このプログラムの鍵となるのはデータ テーブルの設計です。非常にユニークで、再帰がなく、単純な SQL ステートメントに依存します。 メニューを一覧表示して、このデータ テーブルがどのように設計されているかを確認できます:
データベース フィールドはおおよそ次のとおりです:
----------- ------------ -------------------------------------- ------------ ---------
id 番号
fid 番号
fid 親カテゴリ番号
name カテゴリ名
path カテゴリのパス、ID をノードとして、1,2,3,4 のような文字列で構成されます。
---------------------- --------------------- ---------------------------- ----------

以下の Data

id fid name name path
------------ であると仮定できます。 ------------------------------------ -------------- --
1 0 0 カテゴリ 1 ,1,
2 カテゴリ 2,2,
3 1 カテゴリ 1-1 , ,1,3,
4 1 カテゴリ 1-2 ,1,4 、
5 カテゴリ 2-1 、2,5、
6 カテゴリ 1-2-1、、1、4、6、
- -------------- ------------------------------------ -
今回は面倒なので1つだけ使います幸いなことに、コードは長くなく、すべてのコードがクラスにカプセル化されています (必須ではありませんが、OO にも慣れておきたいと思っています (笑))。

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



/*************************************

ページ: menu.php
著者: Hui Boss
機能: データベース操作を定義し、メニュー リスト クラスを生成します

***************************** * ***********/
class menu{

//コンストラクター、関数: データベース接続を作成し、対応するものを選択しますデータベース
パブリック関数 __construct(){
$dbhost = "localhost";
$dbpassword = "7529639"; ,$dbpassword) または die("error!");
mysql_query("SET NAMES 'GBK'");
mysql_select_db($dbname) ;

// SQL を実行しますステートメント関数
プライベート関数 query($sql){
return mysql_query($sql); セット配列関数
プライベート関数 loop_query($result){
return mysql_fetch_array($result); }
//リスト メニュー list function
public function menulist() {
$sql=" select * from list order by path";
$result=$this->query($sql) );
while($rows=$this->loop_query($result)){
if (substr_count($rows['path'],',')>2){
for ($i=0;$i<(substr_count($rows['path'],',')-2 );$i )
echo ' ';
echo $rows['name']。 '
';
} /デストラクターを作成します。関数: データベース接続を閉じます。 🎜> パブリック関数 __destruct(){
return mysql_close()
}
}
$db=new menu();//生成例
$db->menulist();//メソッドを呼び出してメニューを生成します
?>




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