Просмотр файлов в каталоге с нумерацией страниц - php - PullRequest
4 голосов
/ 24 февраля 2011

Я хочу отображать файлы в моем каталоге в браузере.Я знаю, что это возможно, используя @opendir и readdir .. Но я хочу ограничить количество файлов в списке до определенного числа и отобразить следующее с помощью нумерации страниц.

Ответы [ 6 ]

4 голосов
/ 24 февраля 2011

Вы можете использовать scandir , чтобы прочитать все содержимое каталога в массив. Затем выведите содержимое массива на основе значения нумерации страниц.

$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>'; 
}
2 голосов
/ 31 января 2013

Перекрестная публикация примера (также в этом вопросе ) -

DirectoryIterator и LimitIterator - мои новые лучшие друзья, хотя glob, кажется, легче фильтрует.Вы также можете написать пользовательский FilterIterator.Требуется PHP> 5.1, я думаю.

Без предварительного фильтра:

$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);

Предварительный фильтр Glob:

$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 будет экземпляром SplFileInfoтогда как glob пример - это просто путь к диску.

0 голосов
/ 26 февраля 2011

вы должны попробовать YUI 2 нумерацию страниц и, возможно, если вы хотите отобразить файл в таблице, используйте данные, есть очень полезные компоненты из пользовательского интерфейса Yahoo

привет

0 голосов
/ 24 февраля 2011

Может как то так?

$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];
}

А затем ваши навигационные кнопки изменяют номер страницы.

0 голосов
/ 24 февраля 2011

Для нумерации страниц можно использовать Zend_Paginator .
Как только вы получите список файлов в каталоге, вы только настраиваете paginator, и он позаботится обо всем остальном.

0 голосов
/ 24 февраля 2011

Зависит от того, как вы хотите это сделать. Существует множество библиотек разбивки на страницы javascript / jquery .. просто Google "Разбиение на страницы Javascript".

Если javascript недоступен или вы предпочитаете просто использовать php, тогда он должен быть относительно простым.

Используйте opendir / readdir, чтобы получить список всех файлов. Установите столько, сколько вы хотите для отображения. Разделите остаток на это число, чтобы получить количество страниц. Затем возьмите фрагмент из массива (страница - 1) * (номер в список) до (номер в список). Это файлы, которые вы покажете. Передайте номер страницы через get / post. Если оно слишком высокое, используйте последнюю страницу, слишком низкое или нечисловое, используйте первую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...