Heim  >  Artikel  >  Datenbank  >  Verwenden der Funktionsrekursion zur Implementierung dynamischer ...

Verwenden der Funktionsrekursion zur Implementierung dynamischer ...

黄舟
黄舟Original
2016-12-14 09:20:00988Durchsuche

Baummenüs werden in vielen Desktop-Anwendungssystemen häufig verwendet. Ihr Hauptvorteil besteht darin, dass die Struktur klar ist, sodass Benutzer ihren aktuellen Standort klar erkennen können. Bei der Anwendung von Baummenüs im Web gibt es jedoch keine idealen vorgefertigten Komponenten, die direkt verwendet werden können. Daher verwenden Programmierer im Allgemeinen hauptsächlich JavaScript, um einige einfache Baumstrukturmenüs zu implementieren, diese Menüs werden jedoch häufig in erstellt Das Definieren jedes Menüelements und die hierarchische Beziehung zwischen den einzelnen Menüelementen ist nicht förderlich für die Erweiterung. Sobald eine andere Menüstruktur benötigt wird, muss diese häufig neu geschrieben werden, sodass die Verwendung nicht sehr praktisch ist.

Nachdem ich die Funktionsrekursion studiert hatte, stellte ich fest, dass diese Art von Baummenü die Anzeige des Baummenüs durch rekursive Funktionen dynamisch ändern kann und es keine Begrenzung für die Anzahl der Serien gibt. Das Folgende ist der Verarbeitungscode für ein dynamisches Baummenü, das ich mit PHP, MySQL und JavaScript geschrieben habe. Wenn Sie interessiert sind, kommen Sie mit mir, um zu sehen, wie ich es umsetze:)

Zuallererst brauchen wir eine Datenbank. In dieser Datenbank erstellen wir die folgende Tabelle:

CREATE TABLE menu ( 
id tinyint(4) NOT NULL auto_increment, 
parent_id tinyint(4) DEFAULT '0' NOT NULL, 
name varchar(20), 
url varchar(60), 
PRIMARY KEY (id) 
);

In dieser Tabelle ist
id der Index
parent_id, der zum Speichern der ID-Nummer verwendet wird Vorheriges Menü. Wenn es sich um ein Menü der ersten Ebene handelt, ist es 0.
Name ist der Name des Menüs, das den auf der Seite anzuzeigenden Menüinhalt darstellt -Menü müssen Sie die URL-Adresse der Verbindung angeben. Dieses Feld wird zum Speichern dieser Adresse verwendet. Für andere Menüs, die nicht auf der letzten Ebene liegen, ist dieses Feld leer In der Datenbank können Sie einige Datensätze hinzufügen. Folgendes habe ich beim Testen verwendet:




Achten Sie beim Hinzufügen von Datensätzen darauf, dass die parent_id nicht vorhanden ist -Das Menü der ersten Ebene muss als ID-Nummer des Menüs der oberen Ebene angegeben werden, andernfalls wird Ihr Menü nicht angezeigt :)

INSERT INTO menu VALUES ( '1', '0', '人事管理', ''); 
INSERT INTO menu VALUES ( '2', '0', '通讯交流', ''); 
INSERT INTO menu VALUES ( '3', '1', '档案管理', ''); 
INSERT INTO menu VALUES ( '4', '1', '考勤管理', 'http://localhost/personal/attendance.php'); 
INSERT INTO menu VALUES ( '5', '2', '通讯录', ''); 
INSERT INTO menu VALUES ( '6', '2', '网络会议', ''); 
INSERT INTO menu VALUES ( '7', '3', '新增档案', 'http://localhost/personal/add_achive.php'); 
INSERT INTO menu VALUES ( '8', '3', '查询档案', 'http://localhost/personal/search_archive.php'); 
INSERT INTO menu VALUES ( '9', '3', '删除档案', 'http://localhost/personal/delete_archive.php'); 
INSERT INTO menu VALUES ( '10', '5', '新增通讯记录', 'http://localhost/communication/add_address.php'); 
INSERT INTO menu VALUES ( '11', '5', '查询通讯记录', 'http://localhost/communication/search_address.php'); 
INSERT INTO menu VALUES ( '12', '5', '删除通讯记录', 'http://localhost/communication/delete_address.php'); 
INSERT INTO menu VALUES ( '13', '6', '召开会议', 'http://localhost/communication/convence_meeting.php'); 
INSERT INTO menu VALUES ( '14', '6', '会议查询', 'http://localhost/communication/search_meeting.ph');
Okay! Mit der Datenbank besteht das Folgende darin, das Menü aus der Datenbank über PHP und JavaScript zu lesen und anzuzeigen:)


1. JavaScript-Skript:



Dieses Skript ist sehr Ganz einfach: Es wird verwendet, um auf das Ereignis zu reagieren, wenn auf ein Menü geklickt wird.

function ShowMenu(MenuID) 
{ 
if(MenuID.style.display=="none") 
{ 
MenuID.style.display=""; 
} 
else 
{ 
MenuID.style.display="none"; 
} 
}
2. CSS-Datei:





definiert einige grundlegende Stilinformationen, wie Schriftarten, Farben, Hyperlink-Stile usw., falls Sie die ändern möchten Stil Wenn ja, ändern Sie ihn einfach hier!

TD { 
FONT-FAMILY: "Verdana", "宋体"; FONT-SIZE: 12px; LINE-HEIGHT: 130%; letter-spacing:1px 
} 
A:link { 
COLOR: #990000; FONT-FAMILY: "Verdana", "宋体"; FONT-SIZE: 12px; TEXT-DECORATION: none; letter-spacing:1px 
} 
A:visited { 
COLOR: #990000; FONT-FAMILY: "Verdana", "宋体"; FONT-SIZE: 12px; TEXT-DECORATION: none; letter-spacing:1px 
} 
A:active { 
COLOR: #990000; FONT-FAMILY: "Verdana", "宋体"; FONT-SIZE: 12px; TEXT-DECORATION: none; letter-spacing:1px 
} 
A:hover { 
COLOR: #ff0000; FONT-FAMILY: "Verdana", "宋体"; FONT-SIZE: 12px; TEXT-DECORATION: underline; letter-spacing:1px 
} 
.Menu { 
COLOR:#000000; FONT-FAMILY: "Verdana", "宋体"; FONT-SIZE: 12px; CURSOR: hand 
}
3. Unten ist meine PHP-Seite!


//Grundlegende Variableneinstellungen
$GLOBALS["ID"] =1; //ID-Nummer zur Verfolgung des Dropdown-Menüs
$layer=1; aktuelle Menüebene

//Mit der Datenbank verbinden
$Con=mysql_connect("localhost","root","");

// Extrahieren Sie das Menü der ersten Ebene
$sql="select * from menu where parent_id=0"
$result=mysql_query($sql,$Con>

//If das Menü der ersten Ebene existiert Anzeige des Startmenüs
if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID);


/ /====== =====================================
/ /Baummenüfunktion anzeigen ShowTreeMenu ($con,$result,$layer)
//$con: Datenbankverbindung
//$result: der Menüdatensatz, der angezeigt werden muss
//layer: die Ebene des Menüs, das angezeigt werden muss
//================================== ===========
function ShowTreeMenu($Con,$result,$layer)
{
//Ermitteln Sie die Anzahl der Menüelemente, die angezeigt werden müssen
$ numrows=mysql_num_rows($result);

/ Anzeige des Menüs starten, jedes Untermenü wird durch eine Tabelle dargestellt
echo " ";for($rows=0;$rows< ;$numrows;$rows++)
{
/ /Füge den Inhalt des aktuellen Menüelements in das Array ein
$menu=mysql_fetch_array($result);

//Extrahiere das Untermenü Datensatz des Menüelements
$sql="select * from menu where parent_id =$menu[id]"
$result_sub=mysql_query($sql,$Con);

echo " ";
//Wenn der Menüpunkt ein Untermenü hat, fügen Sie JavaScript onClick Statement hinzu
if(mysql_num_rows($result_sub)>0)
{
echo " ";
echo " " ;
}
else
{
echo " "; " 🎜>if($menu[url]!="")
echo "$menu[name]";
else
echo $menu[name];
echo "



"

//Wenn der Menüpunkt ein Untermenü hat, zeigen Sie das Untermenü an
if(mysql_num_rows($result_sub)>0)
{
//Geben Sie die ID und den Stil des Untermenüs an, die der onClick-Anweisung entsprechen
echo " "
echo " ";
echo " ";
//Erhöhen Sie die Reihe um 1
$layer++;
//Rufen Sie die Funktion ShowTreeMenu() rekursiv auf, um ein Untermenü zu generieren
ShowTreeMenu($Con,$result_sub, $layer);
//Kehren Sie nach Abschluss der Untermenüverarbeitung zum vorherigen Schritt der Rekursionsebene zurück und reduzieren Sie die Ebene um 1
$layer--; 🎜>}
//Weiter zum nächsten Menüpunkt anzeigen
}
echo " " ;
?> Über der PHP-Seite habe ich eine Funktion ShowTreeMenu() definiert. Durch den Aufruf dieser Funktion wird sie rekursiv aus der Datenbank abgerufen. Rufen Sie jeden Menüpunkt auf und zeigen Sie ihn auf der Seite an :)


Wenn Wenn Sie weitere verwandte Inhaltsartikel erhalten möchten, achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn