Скрипт предназначен для отображения определённого числа позиций из файла и генерации ссылок на следующие позиции. Пусть имеется файл 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)."] ";
}
else
{
echo "<a href='$_SERVER[PHP_SELF]?page=$i'>[".
(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
}
}
}
?>
Ещё один вариант постраничной навигации:
<?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);
?>
Комментарии:
Нет комментариев к этой статье.