php对目录控制
php遍历目录
遍历文件夹下的所有文件和子文件夹
function my_scandir($dir) { $files = array(); if ( $handle = opendir($dir) ) { while ( ($file = readdir($handle)) !== false ) { if ( $file != ".." && $file != "." ) { if ( is_dir($dir . "/" . $file) ) { $files[$file] = scandir($dir . "/" . $file); }else { $files[] = $file; } } } closedir($handle); return $files; } }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script> function $mgo(id){return document.getElementById(id);} function $tag(ta){return document.getElementsByTagName(ta);} function unshow(id){$mgo(id).style.display="none";} function show(id){$mgo(id).style.display="block";}
function chshow(id){ if( $mgo(id).style.display=="none" || $mgo(id).style.display =="" ){ $mgo(id).style.display="block"; } else { $mgo(id).style.display="none"; } }
</script>
<script> function tagunshow(t){ var obj=$tag(t) for(i=0;i<obj.length;i++){ obj[i].style.display="none"; } } function tagshow(t){ var obj=$tag(t) for(i=0;i<obj.length;i++){ obj[i].style.display="block"; } } window.onload=function(){ //tagunshow("ul"); tagunshow("li"); } </script> <style> span {cursor: /* pointer*/ } </style> </head>
<body> <input name="" type="button" onclick="tagshow('ul'); tagshow('li');;" value="show all"/><br /><input name="" type="button" onclick=" tagunshow('li');;" value="unshow all"/><br /> <?php require_once('db_mysql_classB.php'); ?> 作者:heshengyu<br> Email:zfxwhc@163.com<br> data:2009-08-26 18:30<br> <?php
$dbobj=new Mydb();
function myreadfile($filename){ $file = fopen($filename,"r"); $ret; while(! feof($file)){ $ret=$ret.fgets($file)." "; } fclose($file); return $ret; } //$co=myreadfile("sql2.txt"); $co=" create database diana; use diana; DROP TABLE IF EXISTS `cdb_forums`; CREATE TABLE `cdb_forums` ( `fid` smallint(6) unsigned NOT NULL auto_increment, `fup` smallint(6) unsigned NOT NULL default '0', `type` enum('group','forum','sub') NOT NULL default 'forum', `name` char(50) NOT NULL default '', `status` tinyint(1) NOT NULL default '0', `displayorder` smallint(6) NOT NULL default '0', `styleid` smallint(6) unsigned NOT NULL default '0', `threads` mediumint(8) unsigned NOT NULL default '0', `posts` mediumint(8) unsigned NOT NULL default '0', `todayposts` mediumint(8) unsigned NOT NULL default '0', `lastpost` char(110) NOT NULL default '', `allowsmilies` tinyint(1) NOT NULL default '0', `allowhtml` tinyint(1) NOT NULL default '0', `allowbbcode` tinyint(1) NOT NULL default '0', `allowimgcode` tinyint(1) NOT NULL default '0', `allowmediacode` tinyint(1) NOT NULL default '0', `allowanonymous` tinyint(1) NOT NULL default '0', `allowshare` tinyint(1) NOT NULL default '0', `allowpostspecial` smallint(6) unsigned NOT NULL default '0', `allowspecialonly` tinyint(1) unsigned NOT NULL default '0', `alloweditrules` tinyint(1) NOT NULL default '0', `allowfeed` tinyint(1) NOT NULL default '1', `recyclebin` tinyint(1) NOT NULL default '0', `modnewposts` tinyint(1) NOT NULL default '0', `jammer` tinyint(1) NOT NULL default '0', `disablewatermark` tinyint(1) NOT NULL default '0', `inheritedmod` tinyint(1) NOT NULL default '0', `autoclose` smallint(6) NOT NULL default '0', `forumcolumns` tinyint(3) unsigned NOT NULL default '0', `threadcaches` tinyint(1) NOT NULL default '0', `alloweditpost` tinyint(1) unsigned NOT NULL default '1', `simple` tinyint(1) unsigned NOT NULL, `modworks` tinyint(1) unsigned NOT NULL, `allowtag` tinyint(1) NOT NULL default '1', `allowglobalstick` tinyint(1) NOT NULL default '1', PRIMARY KEY (`fid`), KEY `forum` (`status`,`type`,`displayorder`), KEY `fup` (`fup`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=gbk;
INSERT INTO `cdb_forums` (fup,name) VALUES ('0','j1_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('0','j1_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('0','j1_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('2','j1_2-j2_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('2','j1_2-j2_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('2','j1_2-j2_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('5','j3_1'); INSERT INTO `cdb_forums` (fup,name) VALUES ('5','j3_2'); INSERT INTO `cdb_forums` (fup,name) VALUES ('5','j3_3'); INSERT INTO `cdb_forums` (fup,name) VALUES ('5','j3_4'); INSERT INTO `cdb_forums` (fup,name) VALUES ('5','j3_5');
INSERT INTO `cdb_forums` (fup,name) VALUES ('6','j3_1'); INSERT INTO `cdb_forums` (fup,name) VALUES ('6','j3_2'); INSERT INTO `cdb_forums` (fup,name) VALUES ('6','j3_3'); INSERT INTO `cdb_forums` (fup,name) VALUES ('6','j3_4'); INSERT INTO `cdb_forums` (fup,name) VALUES ('6','j3_5');
INSERT INTO `cdb_forums` (fup,name) VALUES ('10','j4_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('10','j4_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('10','j4_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('10','j4_4');
INSERT INTO `cdb_forums` (fup,name) VALUES ('19','j4_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('19','j4_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('19','j4_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('19','j4_4');
INSERT INTO `cdb_forums` (fup,name) VALUES ('22','j4_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('22','j4_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('22','j4_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('22','j4_4');
INSERT INTO `cdb_forums` (fup,name) VALUES ('27','j4_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('27','j4_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('27','j4_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('27','j4_4');
INSERT INTO `cdb_forums` (fup,name) VALUES ('30','j4_1');
INSERT INTO `cdb_forums` (fup,name) VALUES ('30','j4_2');
INSERT INTO `cdb_forums` (fup,name) VALUES ('30','j4_3');
INSERT INTO `cdb_forums` (fup,name) VALUES ('30','j4_4');
";
$dbobj->batquery($co);
$co2=" use diana; "; $dbobj->batquery($co2);
$fup=0;
function eacharr($arr){ if(!is_array($arr)){return $arr;} $ret=""; foreach($arr as $key=>$p){ $ret.=$key."==>".$p.", "; } return $ret."<br>".dwonclick($arr); }
function getChildFid($fup){//传入版块的id 得到 子版块id组成的数组; //echo "<font color=red>【[「</font><br>getChildFid:\$fup的值为:".$fup."<br>"; //echo eacharr($fup)."<br><font color=red>」</font><br>"; $retarr=array(); $db=new Mydb(); $result=$db->batquery("use diana; select fid from cdb_forums where fup=$fup "); if( !empty($result) ){ while($row=mysql_fetch_array($result)){ $retarr[]=$row[0]; } }else{echo "没有子版块!<br>";} $db->close(); //if(count($retarr)==0){return false;} return $retarr; }
function dwonclick($arrid){ if(!is_array($arrid)){return "";} $ret=""; foreach($arrid as $key=>$p){ $ret.= ('chshow(\''.$p.'\')'.';'); } $retresult= '<span onclick="'.$ret.'"'.' onmouseover="this.style.cursor=\'help\'">[+]</span>'; return $retresult; }
$mysqlarr= getChildFid(0);
global $loop;
function myview2($arr){//参数为id 数成的数组,比如说数组里全是一级版块的id; if($loop>25){exit();echo "die";} echo "<font color=green >{".$loop."}</font>"; if(/*is_array($arr)&& isset($arr) && */ !empty($arr) ) { echo "<ul>"; echo eacharr($arr); foreach($arr as $p ){ echo "<li id=$p >"; eval('echo "\$p:{".$p."}<br>";'); if(isset($p) && !empty($p)) { echo "\$p有值!\$p:["; echo eacharr($p)."]<br>"; $getsqla=getChildFid($p); if($getsqla){ $loop++; echo "{<font color=blue>loop:".$loop."</font>}";//不知道为什么这里的$loop总是不加 上面用了$loop++; 可是这值总是不加的;不知道原因; //////echo "\$getsqla的值为:".eacharr($getsqla )."<br>"; myview2($getsqla ); } } echo "</li><br>"; } echo "</ul><br>"; }else{echo "没有子版块<br>";}
} myview2($mysqlarr);
echo "不知道为什么\$loop的值总是为1明明用了$loop++";
echo "不知道为什么我用递归老是死循环,这个类似print_r ,<br>但又不像,因为这不是从数组里面取值的 ,<br>我想用js写出一个树目录,来循环历遍 window 对象 window对象是数组里面套数组,<br> 以前写用递归总是死循环,也不知道哪里错了.估计用php写一个树目录估计比这个版块目录更难写,<br>估计又要死循环了.
js的变量特性好像与php不太一样.在php里行得通的在js里不一定行得通.<br> 因为很费精力所以不想去试了! ";
?> </body> </html>
附件:Tree AJAX 目录树 Cross Browser Tree Widget 1.17