Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

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

Автор: 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;";
      }
    }
  }
?>
 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS