proview.ruКонструирование сайтовPHP → Постраничный вывод

Постраничный вывод

Теперь поговорим о постраничном выводе информации из файла (подчеркиваю из файла) а не из базы данных :-)
Что меня натолкнуло написать эту статью? Вчера в аське мой друг Oles.pwl попросил объяснить ему, как организовать постарничный вывод из файла, вот я и держу свое обещание,
тока не для одного Oles.pwl, а для всех Вас товарисщи :-)
Сразу хочу сказать, код написан Manlix'ом я пишу только пояснения к нему, ну т.е. объясняю как его организовать, для непонятливых :-)

Допустим есть у Вас файл содержащий информацию такого вида 

заголовок||статья
заголовок2||статья2
заголовок3||статья3

и так далее...

Тепрь сделаем это с выводом информации скажем по 5 на страничку, ну т.е. будем выводить по 5 строк инфы из файла
Скажем так

------------------------------------------------------

Заголовок статьи --- Тря ля ля ля ля лял 
Сама статья --- Статетываывоаылвоал

------------------------------------------------------

Теперь приступим к самому приятному, кодингу :-)

Главный файл test.php

<?php
$base="base_file.txt"; // Файл где находиться инфа

$general=file($base); //Заносим весь наш файл в массив

$lines_file=file($base); //Еще разочек занесем наш файли в массив :-)

$lines=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.

$pmessages = file("$base");

$onlyg=2; //Сколько записей выводить на страницу

/*

Тут начинаеться самая главная часть нашего файла
Просчитываем странички :-)

*/

if (@$page == "" or $page < 0) //Если переменная $page равна пустоте, или она меньше 0
{
$page = "1"; //Тогда переменнная $page=1
}

$first = count($pmessages) - ($onlyg * ($page - 1));
$second = count($pmessages) - ($onlyg * $page) + 1;

if ($second < 1)
{
$second = 1;
}

$pages = (int) ((count($pmessages) + $onlyg) / $onlyg); //Считаем общее количество страниц

for ($onlyg = 1; $onlyg <= $pages; $onlyg++) //Загоняем все в цикл, т.е. присваемваем переменно $onlyg значение
//1 и пока она меньше или равна $pages увеличиваем ее на единичку.
{
if ($onlyg != $page) //Если $olyg не равняется $page
{
//То наши ссылки имеют такой вид
$line .= "[ <a href="test.php?page=$onlyg">$onlyg</a> ]";
}
if ($onlyg == $page) //А если равняеться
{
//То такой
$line .= "[ $onlyg ]"; //Ну т.е. в выводим не в виде ссылки ту страницу где сейчас находиться пользователь
}
}


/*

Теперь выводим саму информацию

*/

for ( $i = $first-1; $i >= $second-1; $i--)
{
list($zag,$sama)=explode("||", $general[$i]); //Считываем все из файла и разделяем данные при помощи explode а разделитель как вы помните у нас ||
$id = $i;
$id++;
echo "Заголовок статьи --- $zag<br> Сама статья --- $sama<br><hr>";
}

echo "$line<br>"; //Выводим ссылки

echo "Всего статей - <font color=red>$lines</font>."; //Выведем информацию пользователю о общем количестве записей
?>

Ну вот в принципе и все.

Автор статьи: Александр Лысенко [ http://www.Ekibastuz.de ]

Популярное