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

Дата публикации  Дата изменения08.11.21  КомментарииНет   Просмотры6132

Курсы

Скрипт предназначен для отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл 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."] ";
      }
      else
      {
        echo "[".
             (($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
      }
    }
    // Если это последняя страница заменяем последнюю цифру 
    // максимальным числом позиций в массиве $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
/*
 * Дата создания 18.07.2006 1:33:37
 * package_name
 * @author Alexandr Beshkenadze aka akira
 * (c) akira 2006
 * 
 */
 function textpart($text, $count=100) {
    $number = @ $_GET['number'];
    #
    if($count > 0) {
        $text = wordwrap($text,$count, "[page]");
    }
    $str = explode("[page]", $text);
    // Выясняем сколько страниц
    $count = count($str);
    //Выводим страницу
    empty ($number) ? $number = 0 : $number < 0 ? $number = 0 : "";
    echo $str[($number)];
    if ($number != ($count -1) and $number != 0) {
        echo " [<a href='?number=" . ($number +1) . "'>...</a>]";
    }
    echo "<br/>";
    echo " <a href='?number=0'>Вступление</a>";
    echo "<br/>";
    // Если текущая страница первая, то выводим продолжить
    if ($number  0 and count($str) > 1) {
        echo "
[Читать дальше...]
"; } else { // Проверяем текущая ли это страница for ($i = 1; $i < $count; $i++) { if ($i $number) { if ($i ($count -1) and $count > 2) { echo " [$i]"; echo " в начало"; } elseif ($i ($count - ($count -1)) and $count > 2) { echo " <a href='?number=" . ($count -1) . "'>в конец </a>"; echo " <b>[$i]</b>"; } elseif ($i == $number) { echo " <b>[$i]</b>"; } } else { echo " <a href='?number=$i'>[$i]</a>"; } } } } $str = file_get_contents("text.txt"); textpart($str,0); ?>


Источник

*UPD
+ Постраничная навигация через ООП для текстового файла (+ поиск), для файлов в директории и для СУБД MySQL

Бесплатные курсы

Категории

Теги: , , , ,

Оцените материал:

Рейтинг: 10.0/10 (1)


КомментарииКомментарии:

Нет комментариев к этой статье.


 

Старые →← Новые