"; $level_1 = ($level_1 > 0 ?$level_1 :1); $myPrivilege = $userInfo['privilege']; $max_layer=5; if($selectedLanguage == 'eng'){ $menuName = 'name_2'; $menuRemark = 'remark_2'; }else{ $menuName = 'name_1'; $menuRemark = 'remark_1'; } getSerial(); $tmpSql="SELECT * FROM $elementTable ORDER BY elementNo"; //$tmpResult = @mysqli_query($pubConn,$tmpSql); $tmpResult = mysqli_query($pubConn,$tmpSql); echo mysqli_error($pubConn); while($tmpRow=mysqli_fetch_array($tmpResult)){ $tmpNum=$tmpRow['elementNo']; $elementExistArr[$tmpNum]=$tmpRow['existFlag']; } //for($i=0;$i$i=$elementExistArr[$i]"; //menuTypeNo level_1 level_2 level_3 level_4 level_5 name_1 name_2 link_1 link_2 privilege remark_1 remark_2 $menuSql = "SELECT level_1,level_2,level_3,level_4,level_5,$menuName,httpLink,$menuRemark,menuTypeNo FROM $menuTable WHERE privilege <= '$myPrivilege' AND privilege >= '0' AND level_1='$level_1' ORDER BY level_1,level_2,level_3,level_4,level_5 "; if($DEBUG) echo "
menuSql = $menuSql"; $menuResult = mysqli_query($pubConn,$menuSql); echo mysqli_error($pubConn); $menuRowsNum = mysqli_num_rows($menuResult); //init menu array $tmpArrNo=0; for($i=0;$i< $menuRowsNum;$i++){ $menuRow=mysqli_fetch_array($menuResult); //echo "
menuTypeNo=$menuRow[menuTypeNo]"; if($elementExistArr[$menuRow['menuTypeNo']]!=1) continue; $menu_arr[$tmpArrNo]=array(0,0,0,0,0,'menuName','menuLink','menuRemak'); //match to $max_layer $menu_arr[$tmpArrNo][0]=$menuRow['level_1']; $menu_arr[$tmpArrNo][1]=$menuRow['level_2']; $menu_arr[$tmpArrNo][2]=$menuRow['level_3']; $menu_arr[$tmpArrNo][3]=$menuRow['level_4']; $menu_arr[$tmpArrNo][4]=$menuRow['level_5']; $menu_arr[$tmpArrNo][$max_layer]=$menuRow[$menuName]; $menu_arr[$tmpArrNo][$max_layer + 1]=$menuRow['httpLink']; $menu_arr[$tmpArrNo][$max_layer + 2]=$menuRow[$menuRemark]; $tmpArrNo++; } $topMenuName=$menu_arr[0][$max_layer]; /* if($DEBUG){ echo "
menuRowsNum = $menuRowsNum"; echo "
-------------------------------------"; //显示导入数组的信息 for($i=0;$i<$menuRowsNum;$i++){ echo "
>"; for($j=0;$j<$max_layer;$j++){ if($menu_arr[$i][$j] > 0){ echo "{$menu_arr[$i][$j]}"; echo "."; } } echo "-{$menu_arr[$i][$max_layer]}"; echo "-{$menu_arr[$i][$max_layer+1]}"; echo "-{$menu_arr[$i][$max_layer+2]}"; } } */ ?> menuIdbgnNumendNum"; for($i=0 ; $i < sizeof($menu_arr); $i++) //从上到下 ---> 级 { $tree_menu[$i]=array(0,'',0,0); $menu_temp=''; $div_bgn_num=0; $div_end_num=0; $menu_id=''; for($id=0;$id<$max_layer;$id++){ if($menu_arr[$i][$id] > 0){ if($id > 0){ $menu_id = $menu_id.'_'.$menu_arr[$i][$id]; }else{ $menu_id = $menu_arr[$i][$id]; } }else{ break; } } $show_name = $menu_arr[$i][$level_num]; $num=1; while($menu_arr[$i][$num] > 0){ $num++; } $show_level = $menu_arr[$i][$num - 1].'.'; $lastLevelNo=$num - 1; $show = "".$show_name.""; //$show = "".' '.$show_name.""; $show_1 = "$show"; $show_2 = "$show"; $show_3 = ""; $show_4 = "$show"; $show_5 = ""; $menu_temp.="\n"; for($j=$bgnLevelNo;$j < $level_num; $j++){ //从左到右 ---> 层 if($menu_arr[$i][$j] > 0){ //如果该节点大于零 //如果下面有树枝或页子与本节点(树枝或叶子)相连,即下面有兄弟节点 if($menu_arr[$i+1][$j] > $menu_arr[$i][$j] ){ //如果是树枝 if($menu_arr[$i][$j+1] > 0){ $menu_temp.="$show_3"; //show_3 //否则是叶子 }else{ $menu_temp.="$show_2"; //show_2 } }else{ //如果下面的节点号不大于本节点号 if($menu_arr[$i][$j+1] > 0){ //如果本节点不是叶子 $is_line =0; //标志位,用于标志同一树枝下面是否还有分支,或是直接连在本枝上的叶子。 //顺着上一层目录,向下查找 for($p=$i+1;$p < sizeof($menu_arr) && $menu_arr[$p][$j-1] == $menu_arr[$i][$j-1];$p++){ if($menu_arr[$p][$j] > $menu_arr[$i][$j]){ //找到了!!! $is_line = 1; break; } } if($is_line == 1){ //下面还有分支,或是直接连在本枝上的叶子 $menu_temp.= "$show_3"; //show_3 }else{ //同一树枝下没有分支,或是连在本枝上的叶子 $menu_temp.= "$show_5"; //show_5 } }else{ //本节点是叶子 if($menu_arr[$i+1][$j+1] > 0){ //本节点有分叉,即有起点在本节点的子树 $menu_temp.= "$show_1"; //show_1 $div_bgn_num++; }else{ $menu_temp.= "$show_4"; //show_4 //本节点是树枝最末一片页子 for($k=$bgnLevelNo;$k < $level_num;$k++){ if($menu_arr[$i+1][$k] == 0){ $div_end_num = $j - $k + 1; break; } } //if($menu_arr[$i][$bgnLevelNo] != $menu_arr[$i+1][$bgnLevelNo] // || $menu_arr[$i+1][$bgnLevelNo] == 0){ // $div_end_num = $j - $bgnLevelNo; //} if($div_end_num == 0){ $div_end_num = 1; } if($DEBUG) echo "$j / $k $div_bgn_num $div_end_num"; for($k=($i-1);$k >= $bgnLevelNo;$k--){ if($menu_arr[$k][$j-1] == $menu_arr[$i][$j-1] && $menu_arr[$k][$j] > 0){//同一个父节点 if($tree_menu[$k][3] > 2){ $tree_menu[$k][3] --; if($DEBUG) echo "$j / $k {$tree_menu[$k][2]} {$tree_menu[$k][3]}"; } }else{ break; } } } } } //end else of if($menu_arr[$i+1][$j] > $menu_arr[$i][$j] ) } //end if($menu_arr[$i][$j] > 0) } //end for($j=0;$j < $level_num;$j++) $menu_temp.="
"; $tree_menu[$i][0]=$menu_id; $tree_menu[$i][1]=$menu_temp; $tree_menu[$i][2]=$div_bgn_num; $tree_menu[$i][3]=$div_end_num; if($DEBUG) echo "$menu_id $div_bgn_num $div_end_num"; } //end for($i=0 ; $i < sizeof($menu_arr); $i++) if($DEBUG) echo ""; //echo "
menu_num = $i"; /*************************************下面是顺序显示菜单程序***************************************/ echo ">> $topMenuName"; for($i=0;$i<=sizeof($tree_menu);$i++){ $menu_id = $tree_menu[$i][0]; $menu_content = $tree_menu[$i][1]; $div_bgn_num = $tree_menu[$i][2]; $div_end_num = $tree_menu[$i][3]; if($div_bgn_num > 0){ echo "\n
"; echo "$menu_content"; echo "\n
"; echo "\n
"; }else{ echo "$menu_content"; } for($j=0;$j<$div_end_num;$j++){ echo "\n
"; } } //echo "
i=$i"; //鼠标形状 //小手: style="cursor:hand" //左箭头: style="cursor:w-resize" ?>