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

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

      }

    }

  }

?>

Комментарии
Добавить новый Поиск
Оставить комментарий
Имя:
Email:
 
Веб-сайт:
Тема:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Пожалуйста, введите проверочный код, который Вы видите на картинке.
Powered by !JoomlaComment 3.26

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Кто онлайн

Сейчас 55 гостей онлайн