yuki_365170a716 2008-8-11 10:58
PHP的开合式多级菜单程序
<P># -------------------------------------------------------- <BR># 数据表的结构 'menu' <BR># --------------------------------------------------------<BR>CREATE TABLE menu ( <BR>menu_id [url=http://whatis.ctocio.com.cn/searchwhatis/69/6025569.shtml]int[/url](11) [url=http://whatis.ctocio.com.cn/searchwhatis/471/6093471.shtml]NOT[/url] NULL auto_increment, <BR>menu varchar(20) NOT NULL, <BR>menu_grade int(11) NOT NULL, <BR>menu_superior int(11) NOT NULL, <BR>UNIQUE menu_id (menu_id) <BR>); <BR># -------------------------------------------------<BR>#数据表内的内容,根据具体情况而定<BR># -------------------------------------------------<BR>INSERT INTO menu VALUES( '1', '计算机', '1', '0'); <BR>INSERT INTO menu VALUES( '2', '编程', '2', '1'); <BR>INSERT INTO menu VALUES( '3', '[url=http://networking.ctocio.com.cn/]网络[/url]', '2', '1'); <BR>INSERT INTO menu VALUES( '4', '[url=http://whatis.ctocio.com.cn/searchwhatis/77/6026077.shtml]PHP[/url]与MySql', '3', '2'); <BR>INSERT INTO menu VALUES( '5', 'C语言', '3', '2'); <BR>INSERT INTO menu VALUES( '6', '网页制作', '3', '3'); <BR>INSERT INTO menu VALUES( '7', '[url=http://whatis.ctocio.com.cn/searchwhatis/96/6092596.shtml]TCP[/url]、IP协议', '3', '3'); <BR>INSERT INTO menu VALUES( '8', '数学', '1', '0'); <BR>INSERT INTO menu VALUES( '9', '高等数学', '2', '8'); <BR>INSERT INTO menu VALUES( '10', '线性代数', '3', '9'); <BR>INSERT INTO menu VALUES( '11', '离散数学', '3', '9'); <BR>INSERT INTO menu VALUES( '12', '初等数学', '2', '8'); <BR>INSERT INTO menu VALUES( '13', '文学', '1', '0'); <BR>INSERT INTO menu VALUES( '14', '中国文学', '2', '13'); <BR>INSERT INTO menu VALUES( '15', 'php', '4', '4'); <BR>INSERT INTO menu VALUES( '16', '[url=http://database.ctocio.com.cn/mysql/]mysql[/url]', '4', '4'); </P>
<P><? <BR>//树型目录结构模板程序 <BR>//菜单目录库字段说明: <BR>//menu_id 菜单项目 id <BR>//menu 菜单名称 <BR>//menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........ <BR>//menu_superior 上一级菜单 id 号 </P>
<P>function my_menu($menu_content,$i,$menu_grade_temp,$menu_superior_temp) <BR>{ <BR>global $PHP_SELF; <BR>$temp1=$menu_grade_temp+1; <BR>$menu_superior_temp_array=split("/",$menu_superior_temp); <BR>for ($t=0;$t<$i;$t++) <BR>{ <BR>$menu_array=split("/",$menu_content[$t]); <BR>If(($menu_array[2]==$menu_grade_temp)&&($menu_array[3]==$menu_superior_temp_array[$menu_grade_temp-1])) <BR>{ <BR>for($p=1;$p<=$menu_grade_temp;$p++){echo ">";} //显示目录前的等级箭头<BR>$temp3=$menu_superior_temp_array; <BR>$temp3[$menu_grade_temp]=$menu_array[0]; <BR>$temp2=implode("/",$temp3); <BR>if ($menu_array[0]==$menu_superior_temp_array[$temp1-1]) <BR>{ <BR>$temp5=$temp1-1; <BR>$temp3[$menu_grade_temp]=""; <BR>$temp6=implode("/",$temp3); <BR>echo "<a href=\"$PHP_SELF?menu_grade_temp=".$temp5."&menu_superior_temp=<BR>$temp6\">$menu_array[1]</a><br>";<BR>my_menu($menu_content,$i,$temp1,$temp2); <BR>} <BR>else <BR>{ <BR>$temp3[$menu_grade_temp+1]=""; <BR>$temp6=implode("/",$temp3); <BR>echo "<a href=\"$PHP_SELF?menu_grade_temp=".$temp1."&menu_superior_temp=<BR>$temp6\">$menu_array[1]</a><br>";<BR>} <BR>} <BR>} <BR>} <BR>// 连接 MySql [url=http://database.ctocio.com.cn/]数据库[/url] <BR>$db_host="localhost"; <BR>$db_user="root"; <BR>$db_password="zmxj"; <BR>$db_name="joss"; <BR>mysql_connect($db_host,$db_user,$db_password); <BR>mysql_select_db($db_name); </P>
<P>//从数据库中取得数据 <BR>$query_string="select * from menu order by menu_grade"; <BR>$db_data=mysql_query($query_string); </P>
<P>//第一次执行初始化 <BR>if ($menu_grade_temp=="") <BR>{ <BR>$menu_superior_temp=0; <BR>} </P>
<P>//将所有的信息读入数组,并统计数组个数 <BR>$i=0; <BR>while (list($menu_id,$menu,$menu_grade,$menu_superior)=mysql_fetch_row($db_data)) <BR>{ <BR>$menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior; <BR>$i++; <BR>} <BR>my_menu($menu_content,$i,1,$menu_superior_temp); <BR>?></P>
<P><A href="http://www.knowsky.com/2489.html"></A> </P>