免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2080 | 回复: 6
打印 上一主题 下一主题

实现像 WIN 文件栏的目录树程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-09 10:58 |只看该作者 |倒序浏览
readme:
目录树图片如附图;
数据表为父子类型;

<?php
/*
CREATE TABLE `column` (
  `id` int(10) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  `father` int(10) NOT NULL default '0',   //父编号
  `treelevel` int(4) NOT NULL default '0', //所处树的级别
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;
*/
$server="localhost";
$database="dbname";            #建立的数据库名
$user="root";                                #数据库帐号
$password="";                                #数据库密码
$dbh =  mysql_connect($server,$user,$password);
mysql_select_db($database);
$curId=$get_var[curId];
$fid=$get_var[fid];
$str_id=$get_var[str_id];
$sortLevel=$get_var[sortLevel];
$start_id=$get_var[start_id];
$id=$get_var[id];
$func=$get_var[func];
//        网站栏目导航
function classpath($colid)
{
        global $Table,$DB_web,$style_var;
        $sql="select name,id,father from column where id=".$colid;
        $res=mysql_query($sql);
        $r=mysql_fetch_array($res);
        $returnval=$r[name];
        while($r[father])
        {
                $sql="select name,id,father from column where id=".$r[father];
                $res=mysql_query($sql);
                $r=mysql_fetch_array($res);
                $returnval=$r[name]."->;".$returnval;               
        }
        return $returnval;
}
?>;
<SCRIPT LANGUAGE="JavaScript">;
function inputvalue(name,id)
{
        if(parent.mainname.document.operate)
        {
                parent.mainname.document.operate.operatename.value=name;
                parent.mainname.document.operate.operatecolid.value=id;
        }
}
</SCRIPT>;
<?
function DisplayRoot()
{
        global $DB_web,$curId,$Table;
  
        $query = "select name from $Table[bx_user_info]";
        $res=mysql_query($query);
        $r=mysql_fetch_array($res);
        ?>;
        <!-- <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">; -->;
          <tr>;
                <td class="white" width=10>;&amp;</td>;<td>;
                  <TABLE border=0 cellspacing=0 cellpadding=0>;
                        <TR>;
                                <TD>;<img src="../../images/tree_home.gif" height=18>;</TD>;
                                <TD>;<span class=white>;【<a  class="white">;<?print $r[name]?>;</a>;】</span>;</TD>;
                        </TR>;
                        </TABLE>;
                  </td>;
          </tr>;
        <!-- </table>; -->;
        <?
        if($curId)
        {
                print "<a href='#curp'>;↓</a>;";
        }
        ?>;
<?php
}
//展开函数
function showTree($fid,$str_id,$sortLevel)
{
        global $DB_web,$Table;
        $expand_id=explode(",",$str_id);

        $pic_top = "./images/tree_topadd.gif";
        $pic_normal = "./images/tree_branch.gif";
        $pic_add = "./images/tree_add.gif";
        $pic_dec = "./images/tree_dec.gif";
        $pic_bg = "./images/tree_line.gif";
        $pic_end = "./images/tree_end.gif";
        $pic_dec_end = "./images/tree_dec_end.gif";
        $pic_add_end = "./images/tree_add_end.gif";
    $result=set_result($fid);
        $maintree=0;
        while($row=mysql_fetch_array($result))
        {
                $maintree++;
                $maxid = get_maxid($row[id]);
                $pic_result=set_result($row[id]);
                $is_comm_info="";
                if($row[style]==2)        //一般信息
                {
                        $is_comm_info="[<a class='white' href='javascript:  inputvalue(\"$row[name]\",\"$row[id]\";' title='作为对象选中' >;√</a>;]";
                }
                $isAllow=(isallow($row[id],2,1,0))?"<a href='rightframe.htm1?colid=$row[id]' target='mainname' class='white'>;<span class='white'>;":"<span class='white'>;";
                if(mysql_num_rows($pic_result)>;0)//判断是否有子类别
                {
                        $flag=false;
                        for($j=0;$j<count($expand_id);$j++)
                        {
                                if($expand_id[$j]<>;""
                                {
                                        if($expand_id[$j]==$row[id])
                                                {
                                                $flag=true;
                                        }
                                }
                        }
                        if($flag)//展开
                        {
                                if($maxid==$row[id])//最後一個类别
                                {
                                        $thispic = $pic_dec_end;
                                }
                                else
                                {
                                        $thispic = $pic_dec;
                                }

                                $strnbsp="";
                                $thisid=$row[id];
                                for($i=0;$i<$sortLevel;$i++)//循环查找判断父类的显示方式
                                {
                                        $father_islast = father_islast($thisid);
                                        $hid = $thisid;
                                        $thisid = intval(get_fatherid($thisid));
                                        if($father_islast)
                                                $strnbsp="<td width=20>;</td>;".$strnbsp;
                                        else
                                                $strnbsp="<td width=20 background='".$pic_bg."'>;</td>;".$strnbsp;
                                }
                                echo "<tr>;<td>;&amp;</td>;<td>;<table border=0 cellspacing=0 cellpadding=0>;<tr>;".$strnbsp."<td >;<a href='?func=set_id&id=$row[id]&str_id=$str_id'>;<img src='".$thispic."' border='0' >;</a>;</td>;";

                                print "<td>;<span class='white'>;".$isAllow;
                                print $row[name]."</a>;($row[orderid])&amp;$is_comm_info</span>;";
                                echo "</td>;</tr>;</table>;</td>;</tr>;";
                                $fid=$row[id];
                                $level=$sortLevel+1;
                                showTree($fid,$str_id,$level);
                        }
                        else
                        {
                                if($maxid==$row[id])//最後一個类别
                                {
                                        $thispic = $pic_add_end;
                                }
                                else
                                {
                                        $thispic = $pic_add;
                                }       
                                $strnbsp="";
                                $thisid=$row[id];
                                for($i=0;$i<$sortLevel;$i++)
                                {
                                        $father_islast = father_islast($thisid);
                                        $thisid = intval(get_fatherid($thisid));
                                        if($father_islast)
                                                $strnbsp="<td width=20>;</td>;".$strnbsp;
                                        else
                                                $strnbsp="<td width=20 background='".$pic_bg."'>;</td>;".$strnbsp;
                                }
                                echo "<tr>;<td>;&amp;</td>;<td>;<table border=0  cellspacing=0 cellpadding=0>;<tr>;".$strnbsp."<td >;<span  class='white'>;<a href='?func=set_id&id=$row[id]&str_id=$str_id'>;<img src='".$thispic."' border='0' >;</a>;</td>;<td>;";
                                print $isAllow;
                                print $row[name]."</a>;($row[orderid])&amp;$is_comm_info</span>;";
                                echo "</td>;</tr>;</table>;</td>;</tr>;";
                        }
                }#end if(mysql_num_rows($pic_result)>;0)
                else
                {
                        if($maxid==$row[id])//最後一個类别
                        {
                                $thispic = $pic_dec_end;
                                $child_result=set_result($row[id]);
                                $hadchind = mysql_num_rows($child_result);
                                if($hadchind)
                                {
                                        $thispic = $pic_normal;
                                }
                                else
                                {
                                        $thispic = $pic_end;
                                }
                        }
                        else
                        {
                                $thispic = $pic_normal;
                        }
                        $strnbsp="";
                        $thisid=$row[id];
                        for($i=0;$i<$sortLevel;$i++)
                        {
                                $father_islast = father_islast($thisid);
                                $thisid = intval(get_fatherid($thisid));
                                if($father_islast)
                                        $strnbsp="<td width=20>;</td>;".$strnbsp;
                                else
                                        $strnbsp="<td width=20 background='".$pic_bg."'>;</td>;".$strnbsp;
                        }
                        echo "<tr>;<td>;&amp;</td>;<td>;<table border=0 cellspacing=0 cellpadding=0>;<tr>;".$strnbsp."<td >;<img src='".$thispic."' border='0'>;</td>;<td>;";
                        print $isAllow;
                        print $row[name]."</a>;($row[orderid])&amp;$is_comm_info</span>;";
                        echo "</td>;</tr>;</table>;</td>;</tr>;";
                }
        }#end while($row=mysql_fetch_array($result))
}

function set_result($fid)
{
        global $Table,$DB_web;
        $fid=$fid*1;/////////转为整数
        $sql="select * from column where  father=$fid order by  orderid asc,id desc ";
        $result = mysql_query($sql);
        return $result;
}

function get_maxid($fid)
{
        global $Table,$DB_web;
        $fid=$fid*1;
        $sql="select father from column where id=$fid  ";
        $res=mysql_query($sql);
        $info=mysql_fetch_array($res);

        $sql="select id from column where  father=".intval($info[father])." order by orderid desc,id desc limit 1";
        $res=mysql_query($sql);
        $info=mysql_fetch_array($res);
        return $info[id];
}

function father_islast($fid)
{
        global $Table,$DB_web;
        $fid=$fid*1;
        $sql="select father from column where id=$fid";
        $res=mysql_query($sql);
        $info=mysql_fetch_array($res);
        $fid = $info[father];
        $maxid = get_maxid($fid);
        if($fid==$maxid)
                return true;
        else
                return false;
}

function get_fatherid($fid)
{
        global $Table,$DB_web;
        $fid=$fid*1;
        $sql="select father from column where  id=$fid  ";
        $res=mysql_query($sql);
        $info=mysql_fetch_array($res);
        return $info[father];
}

function get_childid($curr_id)
{
        global         $DB_web,$Table;
        $sql="select * from column  where father=$curr_id order by  orderid asc,id desc";
        $result = mysql_query($sql);
        while($row=mysql_fetch_array($result))
        {
                $sql1="select * from column where father=$row[id] order by  orderid asc,id desc";
                $result1 = mysql_query($sql1);
                if(mysql_num_rows($result1)>;0)
                {
                        $get_all_id.=$row[id].",";
                        $get_all_id.=get_childid($row[id]);
                }
        }
        return $get_all_id;
}

function set_id2($fid,$str_id,$id)
{
        global $dbname,$table_name,$field_name;
        if($str_id!=""
        {
                $expand_id=explode(",",$str_id);
                $order=-1;
                for($j=0;$j<count($expand_id);$j++)
                {
                        if(($expand_id[$j]==$id)&&($expand_id[$j]<>;0))
                        {
                                $order=$j;
                        }
                }
                if($order<>;-1)
                {
                        if(count($expand_id)>;1)
                        {
                                for($i=$order;$i<count($expand_id)-1;$i++)
                                {
                                        $expand_id[$i]=$expand_id[$i+1];
                                }
                                $str_id=$expand_id[0];
                                for($k=1;$k<count($expand_id)-1;$k++)
                                {
                                        $str_id.=",".$expand_id[$k];
                                }
                                $get_child_id = ereg_replace(",$","",get_childid($id));
                                if($get_child_id<>;""
                                {
                                        $child_id=explode(",",$get_child_id);
                                        for($p=0;$p<count($child_id);$p++)
                                        {
                                                $str_id = ereg_replace($child_id[$p],"",$str_id);
                                        }
                                        $str_id = ereg_replace(",,",",",$str_id);
                                        $str_id = ereg_replace(",$","",$str_id);
                                }
                        }
                        else
                        {
                                $str_id="";
                        }
                }
                else
                {
                        if($id<>;0)
                        {
                                $expand_id[count($expand_id)]=$id;
                        }
                        $str_id=$expand_id[0];
                        for($k=1;$k<count($expand_id);$k++)
                        {
                                $str_id.=",".$expand_id[$k];
                        }
                }
        }
        else
        {
                if($id)
                {
                        $str_id=$id;
                }
        }
        showTree($fid,$str_id,0);
}
require "./templates/head.htm";
setbgcolor("#487BAE";
if(isallow(0,0,0,1,0))
{
        $sql="select id,login,is_advanceuser,is_valid from $Table[bx_user] where login='$loginstr'";
        $row = mysql_query_first($sql);
        $res_purview = $row[is_advanceuser];
        $pic_normal = "../../images/tree_branch.gif";
        $pic_end = "../../images/tree_end.gif";
       
        if($res_purview==0)
        {   
                $sqlcol="select funcid,userid,a.style as style,name from  $Table[bx_permission] as a,column as b  where a.userid='$row[id]' and a.style=2 and a.funcid=b.id";
                print "<table width=100% border=0 cellspacing=0 cellpadding=0>;<tr>;<td colspan='2'>;<br>;<br>;&amp;&amp;<img src='../../images/tree_home.gif' height=18>;<font color=white>;信息管理</font>;&amp;</TD>;</tr>;";
                $rescol=mysql_query($sqlcol);
                $numcol = mysql_num_rows($rescol);
                $i=0;
                while($rowcol = mysql_fetch_array($rescol))
                {
                        $i++;
                        if($i==$numcol)
              $thispic = $pic_end;
                          else
           $thispic = $pic_normal;
                        /*
                        $sqlc="select id from $Table[bx_fieldinfo] where columnid=$rowcol[funcid]";
                        $resc=mysql_query($sqlc);
                        $numc=mysql_num_rows($resc);
                        if($numc>;0)
                        {       
                                */
                    echo "<tr>;<td width=20>;</td>;<td>;<div align='left' >;<a href='memberinfo.htm1?colid=$rowcol[funcid]' target='mainname' class='white'>;                        <img src='".$thispic."' border='0'  alt='".classpath($rowcol[funcid])."'>;";
            echo "<span class='white'>;$rowcol[name]</a>;";
                        echo "</td>;</tr>;";
                        ///}
                }
                print "</table>;";
        }
        else
        {
                print "<table width=100% border=0 cellspacing=0 cellpadding=0>;";
                DisplayRoot();
                if($func=="set_id"
                {
                        set_id2($start_id,$str_id,$id);
                }
                else
                {
                        set_id2($start_id,"","";
                }
                print "</table>;";
        }
}
?>;

tree_add_end.gif (91 Bytes, 下载次数: 44)

tree_add_end.gif

tree_add.gif (95 Bytes, 下载次数: 33)

tree_add.gif

论坛徽章:
0
2 [报告]
发表于 2004-04-09 11:10 |只看该作者

实现像 WIN 文件栏的目录树程序

目录树图(续)

tree_line.gif (46 Bytes, 下载次数: 28)

tree_line.gif

tree_topadd.gif (83 Bytes, 下载次数: 30)

续

论坛徽章:
0
3 [报告]
发表于 2004-04-09 11:12 |只看该作者

实现像 WIN 文件栏的目录树程序

图(续)

tree_expand_1.gif (71 Bytes, 下载次数: 26)

tree_expand_1.gif

tree_home.gif (181 Bytes, 下载次数: 31)

tree_home.gif

论坛徽章:
0
4 [报告]
发表于 2004-04-09 11:16 |只看该作者

实现像 WIN 文件栏的目录树程序

图续

tree_end.gif (72 Bytes, 下载次数: 29)

tree_end.gif

tree_expand.gif (117 Bytes, 下载次数: 27)

tree_expand.gif

论坛徽章:
0
5 [报告]
发表于 2004-04-09 11:16 |只看该作者

实现像 WIN 文件栏的目录树程序

图续

tree_dec.gif (93 Bytes, 下载次数: 27)

tree_dec.gif

tree_dec_end.gif (90 Bytes, 下载次数: 29)

tree_dec_end.gif

论坛徽章:
0
6 [报告]
发表于 2004-04-09 11:17 |只看该作者

实现像 WIN 文件栏的目录树程序

图续

tree_collapse.gif (115 Bytes, 下载次数: 29)

tree_collapse.gif

tree_collapse_1.gif (70 Bytes, 下载次数: 23)

tree_collapse_1.gif

论坛徽章:
0
7 [报告]
发表于 2004-04-09 11:21 |只看该作者

实现像 WIN 文件栏的目录树程序

图(续)

tree_add_end.gif (91 Bytes, 下载次数: 31)

tree_add_end.gif

tree_branch.gif (76 Bytes, 下载次数: 29)

tree_branch.gif
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP