使用分页查看目录中的文件-php

使用分页查看目录中的文件-php,php,pagination,Php,Pagination,我想在浏览器中显示我的目录中的文件。我知道这可以通过使用@opendir和readdir实现。。但是我想要的是将列表中的文件数量限制为特定的数量,然后使用分页显示。取决于您希望如何执行此操作。有很多javascript/jquery分页库。。只需谷歌“Javascript分页” 如果javascript不是一个选项,或者您更喜欢只使用php,那么它应该相对简单 使用opendir/readdir获取所有文件的列表。设置要显示的数量。将余数除以该数字即可得到页数。然后从(第1页)*(要列出的编号)

我想在浏览器中显示我的目录中的文件。我知道这可以通过使用
@opendir
readdir
实现。。但是我想要的是将列表中的文件数量限制为特定的数量,然后使用分页显示。

取决于您希望如何执行此操作。有很多javascript/jquery分页库。。只需谷歌“Javascript分页”

如果javascript不是一个选项,或者您更喜欢只使用php,那么它应该相对简单


使用opendir/readdir获取所有文件的列表。设置要显示的数量。将余数除以该数字即可得到页数。然后从(第1页)*(要列出的编号)到(要列出的编号)的数组中取一个切片。这些是您将显示的文件。通过get/post传递页码。如果太高,则使用最后一页,太低或非数字,使用第一页。

对于分页,可以使用。
一旦您获得目录中的文件列表,您只需配置分页器,它将处理其余部分。

您可以使用它将目录中的所有内容读取到一个数组中。然后根据分页值输出数组的内容

$offset = 10; //get this as input from the user, probably as a GET from a link
$quantity = 10; //number of items to display
$filelist = scandir('/mydir');

//get subset of file array
$selectedFiles = array_slice($filelist, $offset-1, $quantity);

//output appropriate items
foreach($selectedFiles as $file)
{
    echo '<div class="file">'.$file.'</div>'; 
}
$offset=10//将其作为用户的输入获取,可能是从链接获取
$quantity=10//要显示的项目数
$filelist=scandir('/mydir');
//获取文件数组的子集
$selectedFiles=array\u slice($filelist、$offset-1、$quantity);
//输出适当的项目
foreach($selectedFiles作为$file)
{
回显“.$file.”;
}

也许是这样的

$page = 1;
$resultsPerPage = 10;

$files = array();

while(($obj = readdir($dir))) {
    $files[] = $obj;
}

$limit = $page * $resultsPerPage;
($limit > count($files)) ? $limit = count($files) : $limit = $limit;
for($i = ($limit - $resultsPerPage); $i < $limit; $i++) {
   echo($files[$i];
}
$page=1;
$resultsPerPage=10;
$files=array();
而($obj=readdir($dir))){
$files[]=$obj;
}
$limit=$page*$resultsPerPage;
($limit>计数($files))$limit=计数($files):$limit=$limit;
对于($i=($limit-$resultsPerPage);$i<$limit;$i++){
echo($files[$i];
}

然后让导航按钮修改页码。

您应该尝试YUI 2分页,如果您想在表中显示文件,请使用datatable,yahoo用户界面中有一个非常有用的组件

问候语--

和是我的新好朋友,虽然
glob
似乎更容易进行预过滤。你也可以编写一个自定义的。我认为需要PHP>5.1

无预过滤器:

$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
$dir_glob = $dir . '/*.{jpg,gif,png}';

$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
foreach ($paginated as $file) { ... }
全局预过滤器:

$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
$dir_glob = $dir . '/*.{jpg,gif,png}';

$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
foreach ($paginated as $file) { ... }
那么,做你该做的事:

$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
$dir_glob = $dir . '/*.{jpg,gif,png}';

$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
foreach ($paginated as $file) { ... }

请注意,在
DirectoryIterator
示例中,
$file
将是的一个实例,而
glob
示例只是磁盘路径。

我想要一个纯php解决方案..不是Java,否则我不在这里..:)我尝试了。。但是不行,我很高兴能帮上忙。我搞砸了什么?:)如果你觉得这个问题有用,请投票:)尝试此代码时,my$paginated为空。在$dir\u iteraor上运行打印返回。。。。ArrayIterator对象([storage:ArrayIterator:private]=>ArrayObject对象([storage:ArrayObject:private]=>ArrayObject(此处应为项目列表)。分页时的变量转储会发回对象(LimitIterator)#3(0){},打印时会产生LimitIterator对象().My$page和$perpage变量在边界内。不确定如果$dir_迭代器充满文件,为什么LimitIterator将不返回任何内容。使用php 5.3