Разбиение сообщений в гостевой книге на страницы

Vehont

Guest
Разбиение сообщений в гостевой книге на страницы

передо мной встала проблема вывода определённого кол-ва сообщений на одной странице в гостевой книге. Тоеть сделать разбиение на страницы.Все сообщения хранятся в текстовом файле. Как это сделать даже не представляю. Хотелось бы без баз данных.
 

Фанат

oncle terrible
Команда форума
для начала надо научиться выводить одну страницу.
для этого выводить не весь файл, а его часть.
ты можешь это сделать?
 

Varg

Guest
Проблема с математикой или проблема с отображением интервала файлов/записей?
 

Vehont

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

Varg

Guest
Для разбиения нужно предусмотреть некий разделитель в текстовом файле, а затем file_get_contents(), explode(). А дальше одна математика.
 

Vehont

Guest
а поподробнее можно, если Вас не затруднит, то на примерах
 

Varg

Guest
1. Загрузить файл сообщений - $fc = file_get_contents('filename');
2. Разбить на сообщения - $mess = explode('разделитель', $fc);
3. Имеем массив $mess со всеми сообщениями.

А дальше выводишь от диапазона $mess[$from] -> $mess[$to]
 

Vehont

Guest
Спасибо большое, вроде с выводом сообщений разобрался, а как их выводит постранично?
 

Фанат

oncle terrible
Команда форума
текст вставляю тупым инклудом
я так понимаю, что текст уже оформлен в виде гостевой?
Это очень большая проблема.
я думаю, надо забросить старую гостевую, и сделать новую, в нормальном текстовом файле, где хранятся только данные и каждая запись занимает отдельную строку.

собственно, все советы, которые тебе даются, подразумевают именно такой формат
 

Vehont

Guest
тоесть должно быть что-то вроде такого
PHP:
 |::name::city::message::|
          |::name2::city2::message2::|
 

Фанат

oncle terrible
Команда форума
чтобы выводить постранично, надо сначала научиться вывродить одну страницу.
сначала - первую,
потом - произвольную.
Для этого надо выводить сообщения в цикле, задавая начальный и конечный номер

-~{}~ 27.01.05 21:57:

Vehont
а не
name::city::message
name::city::message
?
Зачем там все остальное?
 

Vehont

Guest
Я предусматриваю знак "|" как раделитель между сообщениями, разве это неправильно?
 

Vehont

Guest
мессы будут добавлятся каждая с новой строки, это я понимаю, но как с помощью file_get_contents() и explode()
выводить их так, как мне надо?
 

Фанат

oncle terrible
Команда форума
постой.
не ты ли только что объяснял, как это делается?
$mess = explode('разделитель', $fc);
тем более, что в случае с переводом строки вместо пары
file_get_contents+explode
можно использовать file

и потом, помощью file_get_contents() и explode() данные никуда не выводят. первая фунекция не выводит, а "вводит", а вторая - разбивает строку в массив.
а выводит echo элементов массива в цикле
 

Vehont

Guest
хорошо, сделаем небольшой пример
PHP:
<?
$mess='::name::city::message';
$m=explode('/n',$mess);
$m2=explode('::',$m);
echo"m2[0]->m2[2]";
?>
это для вывода одного сообщения. Вроде как я всё сделал неправильно
 

Фанат

oncle terrible
Команда форума
совершенно верно.
здесь мы подходим к понятию массива.
это такой специальный тип переменной, который содержит другие переменные.

в частности, функция file читает текстовый файл и помещает его содержисмое построчно.

Для примера сделаем такой пример:
(файл с данными уже должен у нас быть)

$array=file('gb.txt');
foreach ($array as $string) echo $string."<br>\n";

-~{}~ 27.01.05 22:21:

оператор foreach служит для работы с массивами, перебирая каждый по одному элементу.
в цикле.
если у нас в массиве 20 элементов, то оператор foreach 20 раз выполнит оператор echo $string."<br>\n";
причем в $string каждый раз будет новая строка из массива $array
понятно?
 

Vehont

Guest
и всё что естьв данном файле, как бы имеет формат переменных, всё что встретится в этом файле будет занесено в массив array после чего читаем весь массив, как бы присваивая каждому его элементу переменную string, после чего выводятся все string какие только были в данном массиве...
Так что-ли?
 

Фанат

oncle terrible
Команда форума
наоборот.
не "присваивая каждому его элементу переменную стринг", а присваивая переменной стринг по очереди значение каждого из элементов массива.

при этом, у каждого элемента массива всегда, обязательно должен быть индекс. идентификатор. по которому можно напрямую обратиться к элементу.

у массива, который возвращает функция file, такими идентификаторами являются числа - от нуля и дальше.
ты можешь в этом убедиться ,если напишешь такой код

echo $string."<pre>\n";
$array=file('gb.txt');
var_dump($array);

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

Vehont

Guest
Скрипт вывел вот это
PHP:
array(5) {
  [0]=>
  string(5) " 
"
  [4]=>
  string(2) "
"
}
что то я не понял, а что это значит?
 
Сверху