|
|
|
| Всем привет. Не пойму в чем дело когда перехожу на следующую страничку. На первой выводит 2 записи, как я поставил в ограничении $num, когда перехожу на вторую страничку, там пусто :( Привожу начало кода...Прошу помощи.
В файле 3 записи!
<?php $arr = file("ver.txt");
$num = 2;
if(isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;
$posts = count($arr);
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
for($i=$start;$i<$num;$i++)
{
list($name,$ver,$path,$text) = explode(";",$arr[$i]);
$for .= '<form action="" method="post">
<tr>
<td align="center" width="50" style="border-right:solid 1px blue">'.($i+1).'</td>
<td align="center" width="150" style="border-right:solid 1px blue"><input name="id" type="hidden" value='.($i+1).' /><input id="name_'.($i+1).'" size="20" name="name" type="text" value='.$name.' /></td>
<td align="center" width="50" style="border-right:solid 1px blue"><input size="4" name="ver" type="text" value='.$ver.' /></td>
<td align="center" width="300" style="border-right:solid 1px blue"><input size="45" name="path" type="text" value='.$path.' /></td>
<td align="center" style="border-right:solid 1px blue"><textarea name="text" cols="42" rows="1">'.$text.'</textarea></td>
<td align="center" width="30"><input src="images/ok.png" name="ok" type="image" onclick="submit()" title="Редактировать '.($i+1).'-ю запись" /></td>
</tr></form>';
} ?>
|
Ув. Модераторы, поправте тему, я допустил ошибку :) | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 21:46)
| | for($i=2;$i<2;$i++) | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2009 в 21:54)
| | не совсем понял...попробовал, везде пусто и на первой и на второй. | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 22:05)
| | Что Вы попробовали?
Прочтите и поймите, что я написал. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2009 в 22:06)
| | это
for($i=$start;$i<$num;$i++)
|
заменил на
в итоге пусто
чтение файла идет с нуля, если поставить 0 - выведутся 2 записи, если 1 - одна...вот почему неверно подсчет ведет? :(
предполагаю дело в этом подсчете
$start = $page * $num - $num;
|
если страница = 1, а $num=2, то при первом круге будет 0,
а если страница = 2, при все том же $num=2, то будет 2....тобишь пусто выведет
Помогите запутался в край :( | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 22:11)
| | >это for($i=$start;$i<$num;$i++)
>заменил на for($i=2;$i<2;$i++)
>в итоге пусто
Зачем заменили?
Я подставил $start и $num - показал, как Вас работает цикл при обращении ко второй странице.
Вы полагаете, что for($i=2;$i<2;$i++) должен хоть раз выполниться? | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2009 в 22:27)
| | >Вы полагаете, что for ($i=2;$i<2;$i++) должен хоть раз выполниться?
нет, не полагаю.
выводит 2 записи
выводит одну запись
ничего не должно выводить
вопрос собственно таков - где ошибка в расчете, что так некорректно подставляет...не могу никак найти | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 22:39)
| | Ошибка в расчете в операторе for($i=$start;$i<$num;$i++)
Более точно в условии повтора этого оператора.
Откуда Вы взяли подстановку с единицей ($i=1;$i<2;$i++) я не понял вообще.
Оператор for() | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2009 в 22:49)
| |
$end = $page * $num;
for($i=$start;$i<$end;$i++)
{
|
почти верно, но в цикле создает лишнее поле, т.е.
на первой странице 2 записи
на второй тоже 2 записи: 1-я заполненная, 2-я пустая
хотя всего 3 записи в файле | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 23:19)
| | Выходит $end посчитано неверно? | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2009 в 23:21)
| | скорее, что да...
если извратиться
if($page == 1)
$end = $page * $num;
else
$end = $page * $num - 1;
|
то при 3-х записях нормально отработает, а далее фигня :( | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 23:27)
| |
<?php
$sum = 2;
$page = (int) $_POST['page'];
if (empty ($page) || $page <= 0) $page = 1;
$start = ($page - 1) * $sum;
|
| |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2009 в 23:34)
| | хмм..у меня вроде бы так и написано | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 23:52)
| | Вы не отвлекайтесь, думайте.
В частности думайте над тем, почему у Вас не показывается вторая строка на второй странице. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2009 в 23:55)
| |
$start = $page * $num - $num;
$end = $page * $num;
for($i=$start;$i<$end;$i++)
{
|
при таком раскладе на первой 2 записи - все ок
на второй тоже 2 записи - но одна (первая) - правильно, а вторая лишняя (пустая)
когда в файле 4 записи - все ок, когда 5, то
первая страница - 2
вторая страница - 2
третья тоже 2, но вторая пустая и ее не должно быть | |
|
|
|
|
|
|
|
для: TetRiska
(14.12.2009 в 00:56)
| | >когда 5, то первая страница - 2 вторая страница - 2
>третья тоже 2, но вторая пустая и ее не должно быть
>если извратиться if($page == 1)
так значит не первая страница отличается от остальных, а третья? | |
|
|
|
|
|
|
|
для: Trianon
(14.12.2009 в 01:01)
| | когда в файле 4 записи - все ок, когда 5, то
первая страница - 2 записи
вторая страница - 2 записи
третья страница 2, но вторая запись пустая и ее не должно быть...должна быть лишь 1 запись
>так значит не первая страница отличается от остальных, а третья?
либо я Вас ввожу в заблуждения, либо хотите помучать...но ни черта не могу сообразить. | |
|
|
|
|
|
|
|
для: TetRiska
(14.12.2009 в 01:09)
| | Посмотрите на код - вы же ему говорите интерпретатору "выводи на странице по 2 записи", он и выводит, и ему плевать, что записи то кончились, он выводит пустой шаблон. | |
|
|
|
|
|
|
|
для: TetRiska
(14.12.2009 в 01:09)
| | Почему на третьей странице долж>когда в файле 4 записи - все ок, когда 5, то
>первая страница - 2 записи
>вторая страница - 2 записи
>третья страница 2, но вторая запись пустая и ее не должно быть...должна быть лишь 1 запись
>>так значит не первая страница отличается от остальных, а третья?
>либо я Вас ввожу в заблуждения,
да нет... все описываемое покамест достаточно правдиво.
>либо хотите помучать...
отнюдь, скорее Вы меня хотите помучить :)
>но ни черта не могу сообразить.
Что здесь соображать?
Я простейший вопрос задал. Какая страница отличается от остальных и почему? | |
|
|
|
|
|
|
|
для: Trianon
(14.12.2009 в 01:19)
| | вроде бы решил :) сейчас протестирую основательно!
if($page == 1)
$end = $page*$num;
else
$end = $start + (count($arr) - $start);
|
П.СЫ. Блин.....сейчас в файле 25 записей...вывожу по 10...
первая 10 - с 0-10
вторая 15 - с 11-25
третья 5 - с 21-25
ппц..........
ну его в баню...вроде бы все!!! нука посмотрите..
$end = $page * $num;
if($page == $total)
$end = count($arr);
|
вроде бы работает при любом кол. записей в файле и при любом значении $num | |
|
|
|
|
|
|
|
для: TetRiska
(13.12.2009 в 23:52)
| | > так и написано
В каком месте?
$start = $page * $num - $num; (1)
$start = ($page - 1) * $num; (2)
Пусть $page = 3, а $num = 2.
$start = 3 * 2 - 2 = 4; (1)
$start = (3 - 2) * 2 = 2; (2) | |
|
|
|