仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2040|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之用PHP完成windows资本办理器作风的树型...

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:29:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚开始因为习惯于ASP格式的写法,总是在这些方面出现问题,自己还总是找不到问题所在,这就提醒了自己,在写代码的时候一定要认真,不能粗心地老是少个“;”或者字母大小写不分,要不然很可能找半天都找不到错误。window|菜单   以下是一个作风相似windows资本办理器的树型菜单
将上面的剧本包括到你的页面中
别的需求从资本办理器中截取一些gif图片,祥见剧本中的正文
菜单布局文件的格局为:
tree level|item text|item link|link target|last item in subtree
例如
.<b>Demo menu</b>|javascript: alert('This is the demo menu for TreeMenu 1.0');
..<b>目次1</b>
...<b>子目次 1.1</b>
....item 1.1.1|javascript: alert('Item 1.1.1');
....item 1.1.2|javascript: alert('Item 1.1.1');
...item 1.2|javascript: alert('Item 1.2');
...item 1.3|javascript: alert('Item 1.3');
..<b>子目次 2</b>
...item 2.1|javascript: alert('Item 2.1');
...item 2.2|javascript: alert('Item 2.2');
...<b>子目次 2.3</b>
....item 2.3.1|javascript: alert('Item 2.3.1');
....item 2.3.2|javascript: alert('Item 2.3.2');
<?php
// file:tremenu.inc
// PHP TreeMenu
/////////////////
// 初始化 //
/////////////////

$treefile = "demomenu.txt";//设置有菜单布局的文件

if(isset($PATH_INFO))
$script = $PATH_INFO;
else
$script = $SCRIPT_NAME;

//以下图片可截取windows资本办理器中的响应地位的图

$img_expand = "tree_expand.gif";//形如资本办理器中可扩大节点+
$img_collapse = "tree_collapse.gif";//形如资本办理器中已扩大节点-
$img_line = "tree_vertline.gif";//形如|
$img_split = "tree_split.gif";//形如|-
$img_end = "tree_end.gif";//形如L
$img_leaf = "tree_leaf.gif";//形如o
$img_spc = "tree_space.gif";//空白图

//以下是菜单处置剧本

$maxlevel=0;
$cnt=0;

$fd = fopen($treefile, "r");
if ($fd==0) die("treemenu.inc : Unable to open file ".$treefile);
while ($buffer = fgets($fd, 4096))
{
$tree[$cnt][0]=strspn($buffer,".");
$tmp=rtrim(substr($buffer,$tree[$cnt][0]));
$node=explode("|",$tmp);
$tree[$cnt][1]=$node[0];
$tree[$cnt][2]=$node[1];
$tree[$cnt][3]=$node[2];
$tree[$cnt][4]=0;
if ($tree[$cnt][0] > $maxlevel) $maxlevel=$tree[$cnt][0];
$cnt++;
}
fclose($fd);

for ($i=0; $i<count($tree); $i++)
{
$expand[$i]=0;
$visible[$i]=0;
$levels[$i]=0;
}

if ($p!="")
$explevels = explode("|",$p);
$i=0;
while($i<count($explevels))
{
$expand[$explevels[$i]]=1;
$i++;
}

$lastlevel=$maxlevel;
for ($i=count($tree)-1; $i>=0; $i--)
{
if ( $tree[$i][0] < $lastlevel )
for ($j=$tree[$i][0]+1; $j <= $maxlevel; $j++)
$levels[$j]=0;
if ( $levels[$tree[$i][0]]==0 )
{
$levels[$tree[$i][0]]=1;
$tree[$i][4]=1;
}
else
$tree[$i][4]=0;
$lastlevel=$tree[$i][0];
}

for ($i=0; $i < count($tree); $i++)
if ($tree[$i][0]==1)
$visible[$i]=1;
for ($i=0; $i < count($explevels); $i++)
{
$n=$explevels[$i];
if ( ($visible[$n]==1) && ($expand[$n]==1) )
{
$j=$n+1;
while ( $tree[$j][0] > $tree[$n][0] )
{
if ($tree[$j][0]==$tree[$n][0]+1) $visible[$j]=1;
$j++;
}
}
}

for ($i=0; $i<$maxlevel; $i++)
$levels[$i]=1;

$maxlevel++;

echo "<table cellspacing=0 cellpadding=0 border=0 cols=".($maxlevel+3).">\n";
echo "<tr>";
for ($i=0; $i<$maxlevel; $i++)
echo "<td width=16></td>";
echo "<td width=100%> </td></tr>\n";
$cnt=0;
while ($cnt<count($tree))
{
if ($visible[$cnt])
{
echo "<tr>";
$i=0;
while ($i<$tree[$cnt][0]-1)
{
if ($levels[$i]==1)
echo "<td><a name='$cnt'></a><img src=\"".$img_line."\"></td>";
else
echo "<td><a name='$cnt'></a><img src=\"".$img_spc."\"></td>";
$i++;
}
if ($tree[$cnt][4]==1)
{
echo "<td><img src=\"".$img_end."\"></td>";
$levels[$tree[$cnt][0]-1]=0;
}
else
{
echo "<td><img src=\"".$img_split."\"></td>";
$levels[$tree[$cnt][0]-1]=1;
}

if ($tree[$cnt+1][0]>$tree[$cnt][0])
{

$i=0; $params="?p=";
while($i<count($expand))
{
if ( ($expand[$i]==1) && ($cnt!=$i) || ($expand[$i]==0 && $cnt==$i))
{
$params=$params.$i;
$params=$params."|";
}
$i++;
}

if ($expand[$cnt]==0)
echo "<td><a href=\"".$script.$params."#$cnt\"><img src=\"".$img_expand."\" border=no></a></td>";
else
echo "<td><a href=\"".$script.$params."#$cnt\"><img src=\"".$img_collapse."\" border=no></a></td>";
}
else
echo "<td><img src=\"".$img_leaf."\"></td>";

if ($tree[$cnt][2]=="")
echo "<td colspan=".($maxlevel-$tree[$cnt][0]).">".$tree[$cnt][1]."</td>";
else
echo "<td colspan=".($maxlevel-$tree[$cnt][0])."><a href=\"".$tree[$cnt][2]."\" target=\"".$tree[$cnt][3]."\">".$tree[$cnt][1]."</a></td>";
echo "</tr>\n";
}
$cnt++;
}
echo "</table>\n";
?>   会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!
乐观 该用户已被删除
沙发
发表于 2015-2-4 13:13:40 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-2-7 23:55:04 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
地板
发表于 2015-2-23 17:25:16 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
爱飞 该用户已被删除
5#
发表于 2015-2-27 16:47:16 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
深爱那片海 该用户已被删除
6#
发表于 2015-3-5 03:41:54 | 只看该作者
爱上php,他也会爱上你。
谁可相欹 该用户已被删除
7#
发表于 2015-3-10 12:08:22 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
再现理想 该用户已被删除
8#
发表于 2015-3-11 13:23:49 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-11 16:32:52 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
小妖女 该用户已被删除
10#
发表于 2015-3-19 01:20:45 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
因胸联盟 该用户已被删除
11#
发表于 2015-3-19 16:10:17 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
金色的骷髅 该用户已被删除
12#
发表于 2015-3-22 05:10:10 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
莫相离 该用户已被删除
13#
发表于 2015-3-29 15:09:41 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
不帅 该用户已被删除
14#
发表于 2015-4-1 20:11:25 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
小女巫 该用户已被删除
15#
发表于 2015-4-6 20:08:50 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
若相依 该用户已被删除
16#
发表于 2015-4-7 14:38:00 | 只看该作者
做为1门年轻的语言,php一直很努力。
简单生活 该用户已被删除
17#
发表于 2015-4-21 18:21:30 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
再见西城 该用户已被删除
18#
发表于 2015-4-25 09:14:37 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
兰色精灵 该用户已被删除
19#
发表于 2015-4-27 19:32:05 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
分手快乐 该用户已被删除
20#
发表于 2015-5-1 18:11:38 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表