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

Varg

Guest
Это значит, что у тебя первая и последняя (5я) строка пустые и содержат пробелы
 

Фанат

oncle terrible
Команда форума
это значит, что у тебя массив из 5 элементов - array(5)
первый элемент массива (с индексом ноль) имеет длину 5 символов и тип "строка" - string(5)
последний элемент имеет индекс 4, тип строка и длину два символа

-~{}~ 27.01.05 22:46:

Далее.
теперь будем перебирать массив не по очереди, как это делает foreach, а по индексам.

для начала обратимся к ним напрямую
$array=file('gb.txt');
echo $array[0]."<br>\n";
echo $array[2]."<br>\n";

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

Так же, вместо номера можно подставить в массив переменную.
например:

$i=2;
echo $array[$i]."<br>\n";

этот код выведет нам третий элемент массива.

теперь попробуем вывести весь массив, перебирая его опять в цикле
для этого воспользуемся оператором for

$array=file('gb.txt');
for ($i=0;$i < 2; $i++) echo $array[$i]."<br>\n";

Этот код должен у нас вывести первые две строки из массива (то есть - и из файла)

что он делает?
устанавливает начальное значение переменной $i, равно нулю.
дальше устанавливает условие окончания цикла, который будет выполняться до тех пор, пока выполняется условие $i < 2
следующий оператор увеличивает $i при каждом проходе на единицу.
 

Vehont

Guest
Так, у меня в файле gb всего 2 строки, и посл. скрипт выводит первую, это правильно? Что будет если $i будет равна 2?
 

Фанат

oncle terrible
Команда форума
пхп попытается обратиться к несуществующему элементу массива $array[2] и сообщит об ошибке

вообще, для того, чтобы делать постраничный вывод, я думаю, в файл надо бы добавить записей. хотя бы 10 строк, чтобы можно было сделать 2 страницы по 5 строк
 

Vehont

Guest
так добавил, всё что было написано ранее вроде понятно...
 

Фанат

oncle terrible
Команда форума
а всё :)
мы всё сделали :)

допустим, мы хотим вывести первые 5 записей.
тогда мы напишем
for ($i=0;$i < 5; $i++) echo $array[$i]."<br>\n";

допустим, теперь мы хотим вывести вторые 5 записей.
тогда мы напишем
for ($i=5;$i < 10; $i++) echo $array[$i]."<br>\n";

теперь нам осталось заменить цифры на переменные, чтобы не писать их вручную, и мы готовы вывести любую страницу!

for ($i=$start;$i < $end; $i++) echo $array[$i]."<br>\n";

теперь тебе надо всего лишь задать $start и $end и ты выводишь любой кусок своей гостевой!
 

Vehont

Guest
допустим, мы хотим вывести первые 5 записей.
тогда мы напишем
for ($i=0;$i < 5; $i++) echo $array[$i]."<br>\n";
выведется только 4 записи
Мы научились выводить определённое кол-во записей на страницу, а как сделать чтоб следущие 5 записей были на другой странице?
 

Фанат

oncle terrible
Команда форума
если у тебя в файле больше 4 записей, то выведется 5

-~{}~ 27.01.05 23:12:

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

Varg

Guest
Вводи переменную $number (номер страницы) и передавай её в скрипт дальше через ссылку. Если текущая страница 0, то ссылка д.б. myscript.php?number=1 и т.д.

А в скрипте уже определяй $from = $_GET['number'] * 5; $to = $from + 5;

В общем так.

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

Ну или как Фанат сказал $start передавать.
 

Vehont

Guest
в файле 10 записей, я написал так
PHP:
for ($i=0;$i < 5; $i++) echo $array[$i]."<br>\n";
скрипт вывел записи под номерами 1,2,3,4/ Ведь скрипт возвращает true только когда выполняется условие $i<5, и 5 элемент он не выведет, т.к это противоречит условию, разве не так?
 

Varg

Guest
А на нуле у него походу пустая строка (исходя из первых постов)

-~{}~ 27.01.05 23:21:

"скрипт возвращает true только когда выполняется условие $i<5"

"условие выполняется когда $i<5"

Разные вещи.
 

Vehont

Guest
gb.txt
PHP:
<? 
::name0::date0::message0::
::name1::date1::message1::
::name2::date2::message2::
::name3::date3::message3::
::name4::date4::message4::
::name5::date5::message5::
::name6::date6::message6::
::name7::date7::message7::
::name8::date8::message8::
::name9::date9::message9::
::name10::date10::message10::
?>
t.php
PHP:
<? 
$start='0';
$end='5';
$array=file('gb.txt');
for ($i=$start;$i < $end; $i++) echo $array[$i]."<br>\n";
?>
итог:
::name0::date0::message0::
::name1::date1::message1::
::name2::date2::message2::
::name3::date3::message3::

-~{}~ 27.01.05 23:23:

Блин, точно, в текстовом файле зачем-то теги пхп врезал, извиняюсь...

-~{}~ 27.01.05 23:26:

Вобщем спасибо большое вам всем за помощь.
 

Фанат

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

Vehont

Guest
Чё то помучался, но до меня так и не дошло как сделать сами страницы, а потом на них выводить части сообщения в том месте где мне надо...
 

Фанат

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

сама страница делается, как я уже говорил, а кто-то не заметил, с помозью переменной, указанной в адресе.

ты никогда не встречал в интернете такие вот адреса примерно?
script.php?id=2345

вот тебе нужна такая же.
вызываешь свою гостевую не просто так, а с параметром
gb.php?start=2

вот тебе вторая страница
Задание для самостоятельной работы - определить, как выглядит третья страница.

если вызвать скрипт таким образом, то в скрипте будет переменная
$_GET['start']
поэтому пишешь:
$start=$_GET['start'];
и все.
Задание для самостоятельной работы - определить $end самостоятельно
 

Vehont

Guest
Только у меня одна загвоздка, моя геста расположена по адресу index.php?guest
Тогда получается страницу мне нужно выбирать вот таким образом
PHP:
index.php?guest&page2
и выводить эту страницу когда к примеру...
PHP:
$page=2
if(QUERY_STRING==guest&$page)
{
//действие над страницой
}
 
Сверху