Скрипт предназначен отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл text.txt следующего формата.
Файл данных text.txt
1 2 3 4 5 6 7 8 9 10 |
1 Программирование 2 Программирование на PHP 3 Программирование на JavaScript 4 Программирование на ASP.NET 5 Программирование на Java 6 Программирование на Perl 7 Программирование на C++ 8 Программирование на Pascal 9 Программирование на Fortran 10 Программирование на Assembler |
Тогда скрипт, выводящий по три позиции на странице может выглядеть так, как это представлено ниже
Постраничная навигация
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
<?php // Имя файла $filename = "text.txt"; // Число позиций на странице $pnumber = 3; // Открываем файл для чтения $bufer = file_get_contents($filename); // Находим все строки при помощи регулярного выражения preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U", $bufer, $out, PREG_PATTERN_ORDER); // Формируем промежуточный массив for($i = 0; $i < count($out[1]); $i++) { $temp[] = trim($out[2][$i]); } // Проверяем передан ли номер текущей страницы if(isset($_GET['page'])) $page = $_GET['page']; else $page = 1; // Число страниц $total = count($temp); $number = (int)($total/$pnumber); if((float)($total/$pnumber) - $number != 0) $number++; $start = (($page - 1)*$pnumber + 1); $end = $page*$pnumber + 1; if($end > $total) $end = $total; // Выводим содержимое страниц for($i = $start; $i < $end; $i++) { echo $temp[$i]."<br>"; } // Постраничная навигация for($i = 1; $i <= $number; $i++) { // Если это произвольная страница if($i != $number) { if($page == $i) { echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] "; } else { echo "<a href='$_SERVER[PHP_SELF]?page=$i'>[". (($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> "; } } // Если это последняя страница заменяем последнюю цифру // максимальным числом позиций в массиве $temp else { if($page == $i) { echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] "; } else { echo "<a href='$_SERVER[PHP_SELF]?page=$i'>[". (($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> "; } } } ?> |