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

Stepler

Guest
Постраничный вывод сообщений

Пишу гостевую на РНР без mySQL (без базы данных). Пытаюсь с помощью этого освоить язык РНР. Только начал и вот проблема... Не могу придумать алгоритм для вывода сообщений в виде постраничного. Чтобы показывало последние 10 сообщений, а дальше были бы ссылки на другие страницы с другими сообщениями. Всё что нашёл по этому вопросу на Вашем форуме связано либо с БД, либо не могу разобрать алгоритм, который к тому же и не подходит к моему замыслу.
Структура книги такова:
1. есть две функции, которые показывают верхний и соответственно нижний колонтитулы (дизайн);
2. есть вывод сообщений (функция - основная проблема);
3. форма для отправки сообщения (функция);
4. ссылки работают благодаря оператору switch.
Данные формы склеиваю через символ и записываю в файл (каждое сообщение - отдельная строка). После файл с сообщениями представляю в виде двухмерного массива, где каждая строка есть тоже массив.
Если кто сможет помочь, откликнитесь. Сама гостевая работает - всё сделал, кроме вот этого...
 

Demiurg

Guest
1. подсчитываешь общее количество сообщений
2. выводишь нужное количество сообщений исходя из текущией страницы
3. делаешь ссылки на другие страницы (нужно немного подумать над математикой)
 

.des.

Поставил пиво кому надо ;-)
Да что же такое.. - этот вопрос становится хитом...
Stepler ты в каком классе учишься?
Тебе в любой момент известно номер страницы и количество страниц (кол-во сообщ./кол-во на страницу)
Что тебе не понятного?
проверяешь +n -n не выходят ли за границы и выводишь свои номера страниц. Я чего то вообще не врубаюсь это что такая сложная алгоритмическая задача?

1. есть две функции, которые показывают верхний и соответственно нижний колонтитулы (дизайн);
нужна одна функция


Вообще в поиск запрос постраничный вывод
Разница БД или не БД никакой ты все равно все сообщения считываешь в массив.

ух Demiurg :)
 

Stepler

Guest
Автор оригинала: Demiurg
3. делаешь ссылки на другие страницы (нужно немного подумать над математикой)
В том то и дело, что не могу коректно (правильно и вообще) организовать Ваш 3 пункт. (С математикой, а Вы имеете в виду арифметику, всё нормально - окончил физмат + аспирантура). Простите, но мне бы не арифметику , а логику организации ссылок, что конкретно писать в циклах и каких.

function messeges(){
global $limit;
$orders = file("msglist.dat");
$orders=array_reverse($orders);
$number_orders=count($orders);
if ($number_orders<=$limit)
{
for ($i=0; $i<$number_orders; $i++)
{
list( $name,$mail,$msg,$city,$http,$calendar,$ip ) = split( '\|', "$orders[$i]" );
$j=$number_orders-$i;

Далее простой HTML для показа значения переменных

}}}
 

Demiurg

Guest
Как уже сказал дес алгоритм ничем не отличается. Задачка для первого курса по информатике. Если не понятно как то или иное сделать на php, то это уже другой вопрос.
 

Stepler

Guest
Бывает так, что при наличии всего материала и всех составляющих не видишь даже собственного носа (это я о себе).
Вы рекомендуете создать отдельную функцию на отдельную страницу, я правильно понял?
 

.des.

Поставил пиво кому надо ;-)
Нет рекомендую создать функцию pages($active, $count, [$limit])
Которая бы рисовала ссылки на страницы начиная $active-N до $active+N (или в случае выхода за границы от начала или/и до конца)
 

Sleeper

Guest
Нет, Вам рекомендуют пойти в поиск по форуму и там найти ответ на свой вопрос.

Подсказка: в запросе sql есть такая штука как LIMIT x,y
 

.des.

Поставил пиво кому надо ;-)
Sleeper подсказка.. читать изначальный пост :)
про базу никто не говорил. И в данном случае не в LIMIT дело
 

Sleeper

Guest
Да. И вправду. Но не совсем не в LIMIT. Надо просто создать типа своего лимита для этого массива ;)

Выбирать из массива нужное количество строк для показа, начиная с определенной строки.
Количество страниц подсчитать не проблема
данные для лимита передаются в строке браузера
 

Stepler

Guest
Автор оригинала: .des.
Нет рекомендую создать функцию pages($active, $count, [$limit])
Которая бы рисовала ссылки на страницы начиная $active-N до $active+N (или в случае выхода за границы от начала или/и до конца)
Огромное Вам спасибо. Действительно просто. Ведь для чего-то в синтаксисе РНР используются фигурные скобки для создания функций как таковых!
 

Gray_PHP

Guest
for ($i = $с какой страницы; $i < $по какую страницу; $i++)
{
echo "$messages[$i]";
}

Скачай гостевую с [не надо здесь рекламировать ламерские сайты]
Там всё понятно !
 

RomikChef

Guest
Stepler
вообще-то, в твоей гостевой не нужно ни одной функции.
include 'файл верха';
выводишь безо всяких функций свою гостевую.
include 'файл низа';
 
Сверху