Главная » 2015 » Сентябрь » 14 » простой алгоритм разбивки содержания на страницы при помощи PHP
10:27
простой алгоритм разбивки содержания на страницы при помощи PHP
Проблема с которой часто сталкивается начинающий php-программист - разбивка большого количества содержимого (анекдотов, файлов представленных для скачки, картинок, продуктов в e-магазине, и т.д.) на странички. Сегодня мы разберём по косточкам простой алгоритм для её решения. Итак, для простоты примера выведем список файлов в директории, по 10 файлов на страничку. <?php $source_directory = "zip"; $display = 10; $offset = (!empty($HTTP_GET_VARS['offset'])) ? $HTTP_GET_VARS['offset'] : 0; $handle = opendir($source_directory); while ($file = readdir($handle)) {      if(($file != '.') && ($file != '..')) {         $files[] = $file;      } } closedir($handle); $pages = ceil(count($files)/$display); if($offset < $pages) {     echo '<a href="'.$PHP_SELF.'?offset='.($offset+1).'">следующие '.$display.'</a>'; } if($offset > 0) {     echo '<a href="'.$PHP_SELF.'?offset='.($offset-1).'">предыдущие '.$display.'</a>'; } echo '<hr>'; for($i = ($offset * $display); $i zip"; $display = 10; Здесь мы определяем директорию для считки и количество файлов на страничке для того чтобы это было можно легко поменять позже. Переменные этого рода всегда хорошо определять заранее, это делает код гораздо более универсальным и облегчает его использование позднее в других проектах. $offset = (!empty($HTTP_GET_VARS['offset'])) ? $HTTP_GET_VARS['offset'] : 0; Здесь мы используем ternary statement для того чтобы определить значение переменной offset (если она пуста, ей присваивается нулевое значение, иначе её значение остаётся тем же что и было). Эта переменная держит номер листа в списке на котором находимся. $handle = opendir($source_directory); while ($file = readdir($handle)) {      if(($file != '.') && ($file != '..')) {         $files[] = $file;      } } closedir($handle);Открываем директорию для чтения и считываем все файлы в матрицу files для вычисления количества листов и для последующего показа имён файлов. $pages = ceil(count($files)/$display); Вычисляем количество страниц для показа линков на предыдущие и следующие страницы. if($offset < $pages) {     echo '<a href="'.$PHP_SELF.'?offset='.($offset+1).'">следующие '.$display.'</a>'; }Если мы не на последней странице, нужно показать линк на следующую страницу. if($offset > 0) {     echo '<a href="'.$PHP_SELF.'?offset='.($offset-1).'">предыдущие '.$display.'</a>'; } Соответственно, если мы не на первой странице, нужно показать линк на предыдущую страницу. echo '<hr>'; Для красоты, отделим навигацию от списка горизонтальной линией. for($i = ($offset * $display); $i
Просмотров: 333 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar