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

Автор: content Воскресенье, Апрель 8th, 2012 Нет комментариев

Рубрика: Язык PHP

Скрипт предназначен отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл 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;";
      }
    }
  }
?>  

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

Источник: http://www.php.su/articles/?cat=examples&page=057

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты