This article mainly introduces how php generates a tree list from the database query results. It involves the php technique for generating a tree list using html elements. It is very useful. For more information, see
This article mainly introduces how php generates a tree list from the database query results. It involves the php technique for generating a tree list using html elements. It is very useful. For more information, see
This example describes how to generate a tree-like list from the database query result of php. Share it with you for your reference. The specific analysis is as follows:
This Code reads data from the database to generate a tree-like list of windows resource managers.
<? Php/* Here are the database definitions (for Solid) that I use in this code. * It shoshould not be hard to adapt it to another database. * // * create table di1__types (id integer not null, icon VARCHAR (50), name VARCHAR (50), primary key (id); insert into di1__types VALUES (1, 'folderclosed ', 'directory'); insert into dimo-_types VALUES (2, 'document', 'file'); create table Directory (id INTEGER NOT NU LL, parent integer references directory (id), name VARCHAR (200), icon VARCHAR (50), type integer references di1__types (id), url VARCHAR (200 ), primary key (id); drop index directory_idx; create unique index directory_idx ON directory (parent, name); create sequence di1__id; "create procedure insert_dir_entry (name VARCHAR, parent INTEGER, type INTEGER) RETURNS (id INTEGER) BEGIN EXEC SQL WHENEVER SQLERR Or abort; exec sequence dimo-_id.next INTO id; exec SQL PREPARE c_insert INSERT INTO directory (id, parent, type, name) VALUES (?, ?, ?, ?); Exec SQL execute c_insert USING (id, parent, type, name); exec SQL DROP c_insert; END "; CALL insert_dir_entry ('My Computer ', NULL, 1 ); CALL insert_dir_entry ('network Neighbourhood ', NULL, 1); CALL insert_dir_entry ('luciifer. guardian. no ', 2, 1); CALL insert_dir_entry ('rafael. guardian. no ', 2, 1); CALL insert_dir_entry ('uriel. guardian. no ', 2, 1); CALL insert_dir_entry ('control Panel', NULL, 1); CALL insert_di R_entry ('service', 6, 1); CALL insert_dir_entry ('apache', 7, 2); CALL insert_dir_entry ('solid Server 2.2 ', 7, 2 ); */function icon ($ icon, $ name = '', $ width = 0, $ height = 0) {global $ DOCUMENT_ROOT; $ icon_loc = '/pics/menu '; $ file = "$ DOCUMENT_ROOT $ icon_loc/$icon.gif"; if (! $ Width |! $ Height) {$ iconinfo = getimagesize ($ file); if (! $ Width) {$ width = $ iconinfo [0];} if (! $ Height) {$ height = $ iconinfo [1] ;}} printf ('', $ name? "Name = \" $ name \ "": '', $ icon, $ width, $ height);} function display_directory ($ parent, $ showdepth = 0, $ ancestors = false) {global $ child_nodes, $ node_data, $ last_child; reset ($ child_nodes [$ parent]); $ size = sizeof ($ child_nodes [$ parent]); $ lastindex = $ size-1; if (! $ Ancestors) {$ ancestors = array () ;}$ depth = sizeof ($ ancestors); printf ('
', $ Parent, $ showdepth> 0? 'Show': 'hide '); while (list ($ index, $ node) = each ($ child_nodes [$ parent]) {for ($ I = 0; $ I <$ depth; $ I ++) {$ up_parent = (int) $ node_data [$ ancestors [$ I] ['parent']; $ last_node_on_generation = $ last_child [$ up_parent]; $ response = $ ancestors [$ I]; if ($ last_node_on_generation = $ response) {icon ("blank ");} else {icon ("line") ;}} if ($ child_nodes [$ node]) {/ /Has children, I. e. it is a folder $ conn_icon = "plus"; $ expand = true;} else {$ conn_icon = "join"; $ expand = false ;} if ($ index = $ lastindex) {$ conn_icon. = "bottom";} elseif ($ depth = 0 & $ index = 0) {$ conn_icon. = "top";} if ($ expand) {printf ("", $ node);} icon ($ conn_icon, "connImg _ $ node"); if ($ expand) {print ("") ;}$ icon = $ node_data [$ node] ['icon ']; if (! $ Icon) {$ type = $ node_data [$ node] ['type']; $ icon = $ GLOBALS ['dirent _ icons'] [$ type];} icon ($ icon, "nodeImg _ $ node"); $ name = $ node_data [$ node] ['name']; printf ('? % S ',-1, $ name, 10); if ($ child_nodes [$ node]) {$ newdepth = $ showdepth; if ($ newdepth> 0) {$ newdepth --;} $ new_ancestors = $ ancestors; $ new_ancestors [] = $ node; display_directory ($ node, $ newdepth, $ new_ancestors);} print ("");} Function setup_directory ($ parent, $ maxdepth) {global $ di1__icons, $ child_nodes, $ node_data, $ last_child; $ di1__icons = SQL _assoc ('select id, icon FROM di1__types '); $ query = 'select id, parent, type, icon, name '. 'From directory '. 'order BY parent, name'; $ child_nodes = array (); $ node_data = array (); $ res = SQL ($ query); while (list ($ id, $ parent, $ type, $ icon, $ name) = db_fetch_row ($ res) {$ child_no Des [(int) $ parent] [] = $ id; $ node_data [$ id] = array ('id' => $ id, 'parent' => $ parent, 'type' => $ type, 'icon '=> $ icon, 'name' => $ name); $ last_child [(int) $ parent] = $ id ;}}?>
I hope this article will help you with php programming.
,