php文件管理,能够点击依照时间,大小,名称排序
php文件管理。能够点击依照时间。大小,名称排序
本例没实用到jquery
- <?php
- $rootdir="./";
- $spacenum=0;
- $filenum=0;
- $allfilesize=0;
- echo "<h1>文件管理freejs.net測试</h1>";
- echo "<a href=''>重置</a>";
- readLogDir($rootdir);
- echo "<hr>";
- echo "Total files count: $filenum.<br>";
- echo "Total disk space used: $allfilesize<br>";
- $freespace=diskfreespace("/");
- echo "residue disk space: $freespace<br>";
- function readLogDir($subdir){
- global $rootdir,$spacenum,$filenum,$allfilesize;
- @chdir($subdir) or die ("error:could not change to this directory!");
- $dirobject=dir($subdir);
- echo "<table width=600 border=0 align='center' id='clearStart'><tr id='ignore' ><td width=40% onclick='JM_PowerList(0)'><b>文件名称</b></a></td><td width=20% onclick='JM_PowerList(1)'><b>文件大小</b></td><td width=40% onclick='JM_PowerList(2)'><b>创建时间</b></td></tr>";
- $i=0;
- while ($file=$dirobject->read()){
- if($file=="." || $file==".."){
- continue;
- }
- $i=$i+1;
- echo "<tr bgcolor='#e0e0e0'><td>".$i."<a href=.php?file_dir=".$rootdir."&file_name=".$file." target=_blank>";
- echo $file."</a></td><td>". number_format((filesize($file)/1024),2,'.','')."KB</td><td>". date("Y-m-d H:i:s", filemtime($file)). "</td></tr>";
- $allfilesize+=filesize($file);
- $filenum++;
- }
- echo "</table>";
- return;
- }
- ?
>
- <script src="table_sort.js"></script>
- /**
- * table排序
- * anthor liueh
- */
- function JM_PowerList(colNum)
- {
- headEventObject=event.srcElement;//取得引发事件的对象
- while(headEventObject.tagName!="TR") //不是tr行,则从底下的td冒泡上来寻找到对应行
- {
- headEventObject=headEventObject.parentElement;
- }
- for (i=0;i<headEventObject.children.length;i++)
- {
- if (headEventObject.children[i]!=event.srcElement)//找到事件发生的td单元格
- {
- headEventObject.children[i].className='listTableHead';//把点击的列的className属性设为listTableHead
- }
- }
- var tableRows=0;
- trObject=clearStart.children[0].children; //取得表格中行对象, 原来这里叫DataTable, 可能是你写错了吧??
- for (i=0;i<trObject.length;i++)
- {
- Object=clearStart.children[0].children[i];//取得每行的对象
- tableRows=(trObject[i].id=='ignore')?
tableRows:tableRows+1;//假设不是忽略行,则行数加一
- }
- var trinnerHTML=new Array(tableRows);
- var tdinnerHTML=new Array(tableRows);
- var tdNumber=new Array(tableRows)
- var i0=0
- var i1=0
- for (i=0;i<trObject.length;i++)
- {
- if (trObject[i].id!='ignore')
- {
- trinnerHTML[i0]=trObject[i].innerHTML;//把行放在数组里
- tdinnerHTML[i0]=trObject[i].children[colNum].innerHTML;//把要排序的行中td的内容放数组里
- tdNumber[i0]=i;//行号
- i0++;//加一,下个循环用
- }
- }
- sourceHTML=clearStart.children[0].outerHTML;//取得表格中全部tr的html代码
- //对全部td中的字符串进行排序, 算不算冒泡排序?
?
?
- for (bi=0;bi<tableRows;bi++)
- {
- for (i=0;i<tableRows;i++)
- {
- if(tdinnerHTML[i]>tdinnerHTML[i+1])
- {
- t_s=tdNumber[i+1];
- t_b=tdNumber[i];
- tdNumber[i+1]=t_b;
- tdNumber[i]=t_s;
- temp_small=tdinnerHTML[i+1];
- temp_big=tdinnerHTML[i];
- tdinnerHTML[i+1]=temp_big;
- tdinnerHTML[i]=temp_small;
- }
- }
- }
- var showshow='';
- var numshow='';
- for (i=0;i<tableRows;i++)
- {
- showshow=showshow+tdinnerHTML[i]+'\n';//把排序好的td的内容存在showshow字串里
- numshow=numshow+tdNumber[i]+'|'; //把排序好的对应的行号也存在numshow中
- }
- sourceHTML_head=sourceHTML.split("<TBODY>");//从<TBODY>截断,我试了,前头串为空
- numshow=numshow.split("|");
- var trRebuildHTML='';
- if (event.srcElement.className=='listHeadClicked')
- {//已点击的列, 则逆排
- for (i=0;i<tableRows;i++)
- {
- trRebuildHTML=trRebuildHTML+trObject[numshow[tableRows-1-i]].outerHTML;//取出排序好的tr的内容连接起来
- }
- event.srcElement.className='listHeadClicked0';
- }
- else
- {//默认顺排,新点击顺排
- for (i=0;i<tableRows;i++)
- {
- trRebuildHTML=trRebuildHTML+trObject[numshow[i]].outerHTML;
- }
- event.srcElement.className='listHeadClicked';
- }
- //取得排序后的tr集合结果字符串
- var DataRebuildTable='';
- //把旧的表格头和新的tr排序好的元素连接起来, (改动了一下)
- DataRebuildTable = "<table border=0 width=600 id='clearStart' align='center'><TBODY>" + trObject[0].outerHTML + trRebuildHTML + "</TBODY>" +
- "</table>";
- clearStart.outerHTML=DataRebuildTable;//表格用新串又一次写一次
- }
php文件管理,能够点击依照时间,大小,名称排序的更多相关文章
- C#文件和文件文件夹按时间、名称排序-顺序与倒序
对于文件和文件夹有多种排序方式,常用的就是按创建或修改时间.按文件名排序.在 C# 中,按时间和文件名排序都十分简单,用数组提供的排序方法 Array.Sort() 一行代码就可以搞定,当然也可以用常 ...
- C#比较时间大小 1、比较时间大小的实验
1.比较时间大小的实验 string st1="12:13"; string st2="14:14"; DateTime dt1=Convert.ToDa ...
- SQL 比较时间大小
比较字符串类型的时间大小 数据库中的时间是varchar类型的,MySql使用CURDATE()来获取当前日期,SqlServer通过GETDATE()来获取当前日期 1. 直接使用字符串来比较 注意 ...
- js前端验证时间大小
replace(/\-/g, "\/")是根据验证表达式把日期转化成长日期格式 function checkStartTimeAndEndTime(startTime, endTi ...
- C#里面比较时间大小三种方法
1.比较时间大小的实验 string st1="12:13";string st2="14:14";DateTime dt1=Convert.ToDateTim ...
- WPF判断两个时间大小避免误差
进行查询操作的时候,经常用到判断开始时间和结束时间大小的条件,由于从控件上获取的时间除了年月日时分秒,还包括毫秒.微秒等,导致直接判断时间大小的时候会产生一些误差,如下: 结果分析:年月日时分秒一致的 ...
- java计算时间差及比较时间大小(转)
比如:现在是2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒 方法一: DateFo ...
- js 日期时间大小比较
<body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...
- Android JAVA中的时间大小比较
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
随机推荐
- [日常] MySQL数据库持久连接
2018年5月18日 记录: 数据库持久连接: 1.持久的数据库连接是指在脚本结束运行时不关闭的连接.当收到一个持久连接的请求时.PHP 将检查是否已经存在一个(前面已经开启的)相同的持久连接.如果存 ...
- [android] 采用layoutInflater打气筒创建一个view对象
上一节知道了ListView的工作原理,数据也展示出来了,但是TextView显示的非常难看,如果想美化一下,就先创建好一个布局出来,这个布局采用了两层LinearLayout嵌套,外层的水平方向,内 ...
- 慢查询日志工具mysqlsla的使用
安装mysqlsla源码路径:https://github.com/daniel-nichter/hackmysql.com源码存放路径:/usr/local/src1.获取源码如果没有git命令,请 ...
- 23.QT记事本
描述 主要功能有: 新建,打开,保存,另存为,打印, 编辑,撤销,,拖放,xml配置文件读写,字体更改,查找替换 菜单栏,工具栏,状态栏的实现 如下图所示: 效果如下所示: 源码下载地址: htt ...
- C#设计模式之五原型模式(Prototype Pattern)【创建型】
一.引言 在开始今天的文章之前先说明一点,欢迎大家来指正.很多人说原型设计模式会节省机器内存,他们说是拷贝出来的对象,这些对象其实都是原型的复制,不会使用内存.我认为这是不对的,因为拷贝出来的每一个对 ...
- canvas-6shadow.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jQuery 简单案例
案例一:全选.反选.取消实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- C# 实现FTP客户端
本文是利用C# 实现FTP客户端的小例子,主要实现上传,下载,删除等功能,以供学习分享使用. 思路: 通过读取FTP站点的目录信息,列出对应的文件及文件夹. 双击目录,则显示子目录,如果是文件,则点击 ...
- Android沉浸式状态栏的简单实现
随着卡片式设计在Android系统的上越来越流行,比如现在早已经烂大街的沉浸式状态栏,几乎所有的主流的APP都支持沉浸式状态栏,如QQ.UC浏览器等等.所以觉得有必要学习一下,找了点资料,总结了一下, ...
- spark RDD,reduceByKey vs groupByKey
Spark中有两个类似的api,分别是reduceByKey和groupByKey.这两个的功能类似,但底层实现却有些不同,那么为什么要这样设计呢?我们来从源码的角度分析一下. 先看两者的调用顺序(都 ...