ForumOK (www.forumok.eu/index.php)
- Сайтостроение (www.forumok.eu/board.php?boardid=6)
-- Серверные скрипты (PHP, Perl, ASP и др.) (www.forumok.eu/board.php?boardid=11)
--- Постраничная навигации в рhр (www.forumok.eu/thread.php?threadid=1197)


Сообщение от yaprinc на 19.09.2006 в01:20:

Умный Постраничная навигации в рhр

Ребята, я бы хотел узнать как делаеться самая простенькая постраничная навигация.
Только. очень прошу с подробным описанием кода,
или фрагментов, ЦЕЛЫЙ СКРИПТ ПИСАТЬ НЕ НАДО, ТОЛЬКО ЕГО СМЫСЛ.



Сообщение от Gruzchic на 19.09.2006 в08:55:

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

Постраничная навигация на файлах:
Скрипт предназначен отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл 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:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
<?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


© 2002-2011 ForumOK | Движок WBB | Поддержка GruzSoft®