Heim > Artikel > Backend-Entwicklung > Ein einfacherer Menücode für Kategorien mit unendlichen Ebenen
Ein einfacherer Kategoriemenücode mit unendlicher Ebene
Zunächst möchte ich Terry39 für seine Anleitung danken. Ich habe am Neujahrstag nichts zu tun, also werde ich es tun Implementieren Sie einfach das Prinzip, über das er gesprochen hat. Der Schlüssel zum Programm ist, dass das Design der Datentabelle ohne Rekursion sehr einzigartig ist. Sehen wir uns an, wie diese Datentabelle gestaltet ist 🎜>Die Datenbankfelder sind ungefähr wie folgt:
--- ---------------------------------- ----------------------------------------------------------------
ID-Nummer
Fid-Elternkategorienummer
Name der Kategoriename
Pfad ist der Klassifizierungspfad mit der ID als Knoten, der eine Zeichenfolge ähnlich 1,2,3,4,
bildet ---------------------- -------------- ---------------------- ----------
Es kann davon ausgegangen werden, dass folgende Daten vorliegen
id fid name path
--------------- ------------------------ -------------
1 0 Kategorie 1 ,1,
2 0 Kategorie 2,2,
3 1 Kategorie 1-1,1,3,
4 1 Kategorie 1-2,1,4,
5 2 Kategorie 2-1,2,5,
6 4 Kategorie 1-2-1,1,4,6,
---- ----------------------------- --------------------- -----
Dieses Mal bin ich faul, ich verwende nur eine Seite, zum Glück ist der Code nicht lang, alle Codes sind in Klassen gekapselt (nicht notwendig, aber ich möchte mich auch mit OO vertraut machen, haha! ), werfen wir einen Blick auf den Seitencode:
<?php classmenu{ //创建构造函数,作用:数据库连接并选择相应数据库 publicfunction__construct(){ $dbhost="localhost"; $dbuser="root"; $dbpassword="7529639"; $dbname="menu"; mysql_connect($dbhost,$dbuser,$dbpassword)ordie("error!"); mysql_query("SETNAMES'GBK'"); mysql_select_db($dbname); } //执行SQL语句函数 privatefunctionquery($sql){ returnmysql_query($sql); } //取得结果集数组函数 privatefunctionloop_query($result){ returnmysql_fetch_array($result); } //列出菜单列表函数 publicfunctionmenulist(){ $sql="select*fromlistorderbypath"; $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'].'<br>'; } } //创建析构函数,作用:关闭数据库连接 publicfunction__destruct(){ returnmysql_close(); } } $db=newmenu();//生成实例 $db->menulist();//调用方法生成菜单 ?>