Intereting Posts
Заголовки кодировки JSON с использованием Sendgrid PHP – получение записей массивов по диапазону индексов Как правильно обрабатывать международный характер в PHP / MySQL / Apache PHP: как использовать сеанс на одной странице, пока загружается другая страница с sesson Как преобразовать строку в алфавитно-цифровое и преобразовать пробелы в тире? Использование хэша для проверки того, обновлена ​​ли страница с значениями $ _POST Какая функция в php проверяет правильность строки? Как вы создаете строку на PHP с обратной косой чертой? Запускать PHP-скрипт каждую секунду с использованием CLI Минималистичный механизм шаблонов PHP с кешированием, но не Smarty? Ошибка приоритета PHP-оператора? Как остановить ботов от наращивания счетчика загрузки файлов в PHP? Поместите URL-адреса из строки в массив с помощью regex (проблема с периодом ожидания) PHP – правильная проверка, если отправлен $ _POST Удалить цитаты из начала и конца строки в PHP

VIEW файлы в каталоге с pagination – php

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

Вы можете использовать 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>'; } 

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

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

Нет предварительной фильтрации:

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

Glob prefilter:

 $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 – это только путь к диску.

Зависит от того, как вы хотите это сделать. Там есть тонна javascript / jquery pagination library .. просто google "Javascript pagination."

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

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

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

Может, что-то вроде этого?

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

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

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

Привет