⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000021.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;thinkin&nbsp;(强强),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;database&nbsp;tree&nbsp;layout&nbsp;&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Feb&nbsp;17&nbsp;11:02:54&nbsp;2000)&nbsp;<BR>&nbsp;<BR>&lt;?php&nbsp;&nbsp;//&nbsp;-*-&nbsp;C++&nbsp;-*-&nbsp;<BR>/*&nbsp;Here&nbsp;are&nbsp;the&nbsp;database&nbsp;definitions&nbsp;(for&nbsp;Solid)&nbsp;that&nbsp;i&nbsp;use&nbsp;in&nbsp;this&nbsp;code.&nbsp;<BR>&nbsp;*&nbsp;It&nbsp;should&nbsp;not&nbsp;be&nbsp;hard&nbsp;to&nbsp;adapt&nbsp;it&nbsp;to&nbsp;another&nbsp;database.&nbsp;<BR>&nbsp;*/&nbsp;<BR>/*&nbsp;<BR>CREATE&nbsp;TABLE&nbsp;dirent_types&nbsp;(&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;INTEGER&nbsp;NOT&nbsp;NULL,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;icon&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY&nbsp;KEY(id)&nbsp;<BR>);&nbsp;<BR>INSERT&nbsp;INTO&nbsp;dirent_types&nbsp;VALUES(1,&nbsp;'folderclosed',&nbsp;'Directory');&nbsp;<BR>INSERT&nbsp;INTO&nbsp;dirent_types&nbsp;VALUES(2,&nbsp;'document',&nbsp;'File');&nbsp;<BR>CREATE&nbsp;TABLE&nbsp;directory&nbsp;(&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;INTEGER&nbsp;NOT&nbsp;NULL,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;parent&nbsp;&nbsp;&nbsp;&nbsp;INTEGER&nbsp;REFERENCES&nbsp;directory(id),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(200),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;icon&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(50),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;INTEGER&nbsp;REFERENCES&nbsp;dirent_types(id),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(200),&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY&nbsp;KEY(id)&nbsp;<BR>);&nbsp;<BR>DROP&nbsp;INDEX&nbsp;directory_idx;&nbsp;<BR>CREATE&nbsp;UNIQUE&nbsp;INDEX&nbsp;directory_idx&nbsp;ON&nbsp;directory(parent,&nbsp;name);&nbsp;<BR>CREATE&nbsp;SEQUENCE&nbsp;dirent_id;&nbsp;<BR>&quot;CREATE&nbsp;PROCEDURE&nbsp;insert_dir_entry&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;(name&nbsp;VARCHAR,&nbsp;parent&nbsp;INTEGER,&nbsp;type&nbsp;INTEGER)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURNS(id&nbsp;INTEGER)&nbsp;<BR>BEGIN&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;WHENEVER&nbsp;SQLERROR&nbsp;ABORT;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SEQUENCE&nbsp;dirent_id.NEXT&nbsp;INTO&nbsp;id;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;PREPARE&nbsp;c_insert&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INSERT&nbsp;INTO&nbsp;directory&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(id,&nbsp;parent,&nbsp;type,&nbsp;name)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUES(?,&nbsp;?,&nbsp;?,&nbsp;?);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;EXECUTE&nbsp;c_insert&nbsp;USING&nbsp;(id,&nbsp;parent,&nbsp;type,&nbsp;name);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;SQL&nbsp;DROP&nbsp;c_insert;&nbsp;<BR>END&quot;;&nbsp;<BR>CALL&nbsp;insert_dir_entry('My&nbsp;Computer',&nbsp;NULL,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('Network&nbsp;Neighbourhood',&nbsp;NULL,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('lucifer.guardian.no',&nbsp;2,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('rafael.guardian.no',&nbsp;2,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('uriel.guardian.no',&nbsp;2,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('Control&nbsp;Panel',&nbsp;NULL,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('Services',&nbsp;6,&nbsp;1);&nbsp;<BR>CALL&nbsp;insert_dir_entry('Apache',&nbsp;7,&nbsp;2);&nbsp;<BR>CALL&nbsp;insert_dir_entry('Solid&nbsp;Server&nbsp;2.2',&nbsp;7,&nbsp;2);&nbsp;<BR>*/&nbsp;<BR>function&nbsp;icon($icon,&nbsp;$name&nbsp;=&nbsp;&nbsp;'',&nbsp;$width&nbsp;=&nbsp;0,&nbsp;$height&nbsp;=&nbsp;0)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$DOCUMENT_ROOT;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$icon_loc&nbsp;=&nbsp;&nbsp;'/pics/menu';&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$file&nbsp;=&nbsp;&nbsp;&quot;$DOCUMENT_ROOT$icon_loc/$icon.gif&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!$width&nbsp;||&nbsp;!$height)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$iconinfo&nbsp;=&nbsp;getimagesize($file);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!$width)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$width&nbsp;=&nbsp;$iconinfo[0];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!$height)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$height&nbsp;=&nbsp;$iconinfo[1];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;'&lt;img%s&nbsp;border=0&nbsp;align=top&nbsp;src=&quot;/pics/menu/%s.gif&quot;&nbsp;'.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'width=&quot;%d&quot;&nbsp;height=&quot;%d&quot;&gt;',&nbsp;$name&nbsp;?&nbsp;&nbsp;&quot;&nbsp;name=\&quot;$name\&quot;&quot;&nbsp;:&nbsp;&nbsp;'',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$icon,&nbsp;$width,&nbsp;$height);&nbsp;<BR>}&nbsp;<BR>/*&nbsp;<BR>&nbsp;*&nbsp;Displays,&nbsp;recursively,&nbsp;the&nbsp;contents&nbsp;of&nbsp;a&nbsp;tree&nbsp;given&nbsp;a&nbsp;starting&nbsp;<BR>&nbsp;*&nbsp;point.&nbsp;<BR>&nbsp;*&nbsp;<BR>&nbsp;*&nbsp;Parameters:&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;$parent&nbsp;-&nbsp;the&nbsp;parent&nbsp;node&nbsp;(not&nbsp;listed&nbsp;in&nbsp;the&nbsp;directory).&nbsp;&nbsp;Node&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;is&nbsp;the&nbsp;root&nbsp;node.&nbsp;<BR>&nbsp;*&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;$maxdepth&nbsp;(optional)&nbsp;-&nbsp;maximum&nbsp;number&nbsp;of&nbsp;recursion&nbsp;levels.&nbsp;&nbsp;-1&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(the&nbsp;default&nbsp;value)&nbsp;means&nbsp;no&nbsp;limits.&nbsp;<BR>&nbsp;*&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;$ancestors&nbsp;(optional)&nbsp;-&nbsp;an&nbsp;array&nbsp;of&nbsp;the&nbsp;ancestor&nbsp;nodes&nbsp;in&nbsp;the&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current&nbsp;branch&nbsp;of&nbsp;the&nbsp;tree,&nbsp;with&nbsp;the&nbsp;node&nbsp;closest&nbsp;to&nbsp;the&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top&nbsp;at&nbsp;index&nbsp;0.&nbsp;<BR>&nbsp;*&nbsp;<BR>&nbsp;*&nbsp;Global&nbsp;variables&nbsp;used:&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;$child_nodes&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;$node_data&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;$last_child&nbsp;<BR>&nbsp;*&nbsp;<BR>&nbsp;*&nbsp;Global&nbsp;variables&nbsp;modified:&nbsp;<BR>&nbsp;*&nbsp;&nbsp;&nbsp;The&nbsp;array&nbsp;pointers&nbsp;in&nbsp;$child_nodes&nbsp;will&nbsp;be&nbsp;modified.&nbsp;<BR>&nbsp;*/&nbsp;<BR>function&nbsp;display_directory($parent,&nbsp;$showdepth&nbsp;=&nbsp;0,&nbsp;$ancestors&nbsp;=&nbsp;false)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$child_nodes,&nbsp;$node_data,&nbsp;$last_child;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;reset($child_nodes[$parent]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$size&nbsp;=&nbsp;sizeof($child_nodes[$parent]);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$lastindex&nbsp;=&nbsp;$size&nbsp;-&nbsp;1;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!$ancestors)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$ancestors&nbsp;=&nbsp;array();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$depth&nbsp;=&nbsp;sizeof($ancestors);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;'&lt;div&nbsp;id=&quot;node_%d&quot;&nbsp;class=&quot;dirEntry&quot;&nbsp;visibility=&quot;%s&quot;&gt;',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$parent,&nbsp;$showdepth&nbsp;&gt;&nbsp;0&nbsp;?&nbsp;&nbsp;'show'&nbsp;:&nbsp;&nbsp;'hide');&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(list($index,&nbsp;$node)&nbsp;=&nbsp;each($child_nodes[$parent]))&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;of&nbsp;the&nbsp;uptree&nbsp;nodes:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;an&nbsp;uptree&nbsp;node&nbsp;is&nbsp;not&nbsp;the&nbsp;last&nbsp;one&nbsp;on&nbsp;its&nbsp;depth&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;branch,&nbsp;there&nbsp;should&nbsp;be&nbsp;a&nbsp;line&nbsp;instead&nbsp;of&nbsp;a&nbsp;blank&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;before&nbsp;this&nbsp;node's&nbsp;icon.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;($i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;&lt;&nbsp;$depth;&nbsp;$i++)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$up_parent&nbsp;=&nbsp;(int)$node_data[$ancestors[$i]][&nbsp;'parent'];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$last_node_on_generation&nbsp;=&nbsp;$last_child[$up_parent];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$uptree_node_on_generation&nbsp;=&nbsp;$ancestors[$i];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($last_node_on_generation&nbsp;==&nbsp;$uptree_node_on_generation)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon(&nbsp;&quot;blank&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon(&nbsp;&quot;line&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($child_nodes[$node])&nbsp;{&nbsp;&nbsp;//&nbsp;has&nbsp;children,&nbsp;i.e.&nbsp;it&nbsp;is&nbsp;a&nbsp;folder&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$conn_icon&nbsp;=&nbsp;&nbsp;&quot;plus&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$expand&nbsp;=&nbsp;true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$conn_icon&nbsp;=&nbsp;&nbsp;&quot;join&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$expand&nbsp;=&nbsp;false;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($index&nbsp;==&nbsp;$lastindex)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$conn_icon&nbsp;.=&nbsp;&nbsp;&quot;bottom&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;($depth&nbsp;==&nbsp;0&nbsp;&amp;&amp;&nbsp;$index&nbsp;==&nbsp;0)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$conn_icon&nbsp;.=&nbsp;&nbsp;&quot;top&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($expand)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;&quot;&lt;a&nbsp;href=\&quot;javascript:document.layers['node_%d'].visibility=&nbsp;<BR>'show'\&quot;&gt;&quot;,&nbsp;$node);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;icon($conn_icon,&nbsp;&nbsp;&quot;connImg_$node&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($expand)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(&nbsp;&quot;&lt;/a&gt;&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$icon&nbsp;=&nbsp;$node_data[$node][&nbsp;'icon'];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!$icon)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$type&nbsp;=&nbsp;$node_data[$node][&nbsp;'type'];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$icon&nbsp;=&nbsp;$GLOBALS[&nbsp;'dirent_icons'][$type];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;icon($icon,&nbsp;&nbsp;&quot;nodeImg_$node&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$name&nbsp;=&nbsp;$node_data[$node][&nbsp;'name'];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;'&amp;nbsp;&lt;font&nbsp;size=&quot;%d&quot;&gt;%s&lt;/font&gt;&lt;br%c&gt;',&nbsp;-1,&nbsp;$name,&nbsp;10);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($child_nodes[$node])&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newdepth&nbsp;=&nbsp;$showdepth;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($newdepth&nbsp;&gt;&nbsp;0)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$newdepth--;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$new_ancestors&nbsp;=&nbsp;$ancestors;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$new_ancestors[]&nbsp;=&nbsp;$node;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display_directory($node,&nbsp;$newdepth,&nbsp;$new_ancestors);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;print(&nbsp;&quot;&lt;/div\n&gt;&quot;);&nbsp;<BR>}&nbsp;<BR>function&nbsp;setup_directory($parent,&nbsp;$maxdepth)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$dirent_icons,&nbsp;$child_nodes,&nbsp;$node_data,&nbsp;$last_child;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$dirent_icons&nbsp;=&nbsp;sql_assoc(&nbsp;'SELECT&nbsp;id,icon&nbsp;FROM&nbsp;dirent_types');&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$query&nbsp;=&nbsp;&nbsp;'SELECT&nbsp;id,parent,type,icon,name&nbsp;'.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'FROM&nbsp;directory&nbsp;'.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ORDER&nbsp;BY&nbsp;parent,name';&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$child_nodes&nbsp;=&nbsp;array();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$node_data&nbsp;=&nbsp;array();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$res&nbsp;=&nbsp;sql($query);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(list($id,&nbsp;$parent,&nbsp;$type,&nbsp;$icon,&nbsp;$name)&nbsp;=&nbsp;db_fetch_row($res))&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$child_nodes[(int)$parent][]&nbsp;=&nbsp;$id;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$node_data[$id]&nbsp;=&nbsp;array(&nbsp;'id'&nbsp;=&gt;&nbsp;$id,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'parent'&nbsp;=&gt;&nbsp;$parent,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type'&nbsp;=&gt;&nbsp;$type,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'icon'&nbsp;=&gt;&nbsp;$icon,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name'&nbsp;=&gt;&nbsp;$name);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;$last_child[(int)$parent]&nbsp;=&nbsp;$id;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR>?&gt;&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>&nbsp;<BR>人生到处知何似?&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;应似飞鸿踏雪泥。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;泥上偶然留指爪,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;鸿飞那复计东西!&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;162.105.37.191]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -