Главная страница О Web-студии Разработка сайтов Интернет-реклама CD-презентации 3D-графика Программное обеспечение
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создание сайтов. Авторы: Кузнецов М.В., Симдянов И.В. Головоломки на PHP для хакера (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры . Авторы: Кузнецов М.В., Симдянов И.В. PHP. Народные советы. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование: ступени карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Security & Cracking Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
Консультации от известных специалистов и авторов многих книг

Информационный портал
«SoftTime-INFO»


Примеры скриптов на 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;";
      }
    }
  }
?>

Ещё один вариант постраничной навигации на файлах можно найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=20976

Если данные хранятся в формате MySQL, необходимо обратиться к статье Постраничная навигация или к одной из следующих тем на форуме
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=721
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3044
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=302

 
  Rambler's Top100 Яндекс.Метрика Яндекс цитирования