Все ленты — последние статьи

Постраничная навигация на файлах

Автор: IT-студия SoftTime (softtime.ru)

Скрипт предназначен отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл text.txt следующего формата.

Файл данных text.txt

1 Программирование

2 Программирование на PHP

3 Программирование на JavaScript

4 Программирование на ASP.NET

5 Программирование на Java

6 Программирование на Perl

7 Программирование на C++

8 Программирование на Pascal

9 Программирование на Fortran

10 Программирование на Assembler

Тогда скрипт, выводящий по три позиции на странице может выглядеть так, как это представлено ниже

Постраничная навигация

 


<?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."]&nbsp;";

}

else

{

echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".

(($i — 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";

}

}

// Если это последняя страница заменяем последнюю цифру

// максимальным числом позиций в массиве $temp

else

{

if($page == $i)

{

echo "[".(($i — 1)*$pnumber + 1)."-".($total — 1)."]&nbsp;";

}

else

{

echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".

(($i — 1)*$pnumber + 1)."-".($total — 1)."]</a>&nbsp;";

}

}

}

?>