Имеется код вывода содержимого папки с сортировкой файлов по времени добавления. Нужна к нему постраничная навигация. Пробовал и так и сяк, не получается. Код (Text): <?php $files = array(); $list = glob('*.*'); foreach($list as $file) $files[$file] = filemtime($file); arsort($files); foreach($files as $file => $date) echo $file . ' -> ' . date('H:i:s d-m-Y', $date) . '<br/>'; ?> Помогите пожалуйста рещить проблему
Выше топик есть уже с Постраничной навигацией, возьмите от туда и переделайте как вам нужно. viewtopic.php?f=13&t=7193&start=210
Вам нужно узнать сколько файлов в папке это размер этого массива $list.. Задать переменную сколко на странице будет, получать активную страницу и при получении а активной читать из массива смещаясь от нулевого элемента на нужное кол-во
Нашёл постраничный вывод Код (Text): <?php /* *постраничная навигация в скриптах на файлах *автор: nc_soft *18.09.07 */ /*сгенерируем массив (для гостевой этот массив может быть получен как file('gb.dat') ) в данном случаи проэмулируем его массивом 1,2,3...100 */ $arr=range(1,100); //всего сообщений $all=count($arr); //число сообщений на странице $pnumber=5; echo '<p>всего элементов: '.$all.'</p>'; //номер страницы $page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1; //число страниц $num_pages=ceil($all/$pnumber); //начальная позиция $start=$page*$pnumber-$pnumber; //проверка номера страницы if ($page > $num_pages || $page < 1) { $page=1; $start=0; } if ($all) { //элементы выводятся в обратном порядке!! for ($i=$all-$start-1; $i>=$all-$start-$pnumber; $i--) { if (!isset($arr[$i])) break; echo '<p>'; echo $arr[$i]; echo '</p>'; } //навигация echo '<p>'; for($pr = '', $i =1; $i <= $num_pages; $i++) { echo $pr=(($i == 1 || $i == $num_pages || abs($i-$page) < 2) ? ($i == $page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... ')); } echo '</p>'; } else { echo '<p>элементов нет</p>'; } ?> Сверху этого кода код который выводит содержимое. Вписываю $arr= $list выводит содержимое постранично. А когда вписываю уже $arr= $file который сортирует файлы и ничего не получается.
Как перенести содержимое переменной $file в цикле foreach в другую переменную например $ttt но уже не в цикле foreach? Нужно получить содержимое переменной $file но уже не в цикле foreach. Хвост foreach мешает. Но а без этого цикла тоже нельзя.
Код (PHP): <?php // Сколько записей выводить на странице $perPage = 25; // Путь к папке, которую просматриваем $dir = 'C:\WINDOWS'; // Переменная, в которую будем складывать html-код $html = ''; // Получаем список файлов и папок $files = scandir($dir); // Оставляем только файлы и определяем время их создания foreach($files as $num => $file) { // Полный путь к проверяемому файлу $full = $dir . DIRECTORY_SEPARATOR . $file; // Проверяемый файл является файлов (не папкой)? if(is_file($full)) { // Тогда определим его дату создания и добавим в массив $files[$file] = filemtime($full); } // Уберём более не нужную информацию unset($files[$num]); } // Отсортируем список по дате asort($files); // Определим кол-во файлов в папке $total = count($files); // Рассчитаем кол-во страниц $pages = (int) ceil($total / $perPage); // Если в папке есть хотя бы один файл, то работаем if($total > 0) { // Получим номер запрошенной страницы $page = isset($_GET['page']) ? (int) $_GET['page'] : 1; // Проверим, что запрошенная страница существует if($page > $pages or $page < 1) exit('Нет такой страницы'); // Посчитаем, с какого файла начинать вывод $start = ($page - 1) * $perPage; // Выберем файлы, которые должны быть отображены на этой странице $out = array_slice($files, $start, $perPage); // Подготовим html-код для выводимых файлов foreach($out as $file => $date) $html .= '<div>' . $file . ' [' . date('d.m.Y H:i', ((int) $date)) . ']</div>'; } else $html .= 'Нет файлов для отображения на этой странице'; // Если страниц больше, чем 1 if($pages > 1) { // То выведем ссылки на них $html .= '<div>Страницы: '; for($i = 1; $i <= $pages; ++$i) $html .= ' [url="?page=' . $i . '"]' . $i . '[/url]'; $html .= '</div>'; } // Отобразим подготовленный html echo($html); ?>
Заменить asort на arsort. Вообще у PHP есть мануал, в котором можно найти нужную функцию: http://www.php.ru/manual/index.html