
С недавних пор решил учиться пхп , и столкнулся с проблемой , что FOR в нужный момент не выключается и продолжает тикать до посинения...
Вот часть когда:
$page = ($_REQUEST['page']);
if (!$page){$page = 1;}
elseif ($page > $maxpages){$page = $maxpages;}
$max = ($num_news+10)-($page*10);
$min = $num_news-($page*10);
for ($i = $num_news ; ; )
{
$row = mysql_fetch_array($table);
echo "ID - $row[ID] $max - MAX $min - MIN<br>";
if ($i <= $max && $i >= $min)
{
echo "Сработало"
$i -=1;
if ($i < $min)
{
break 1;
}
}
}
Не срабатывает как я понимаю вот эта часть:
if ($i < $min)
{
break 1;
}
Для проверки кто заметил , я приписал такую строку
echo "ID - $row[ID] MAX - $max MIN - $min<br>";
Так вот , на 1 странице всё срабатывает как надо... И в результате эта строка выдает след.
ID - 25 MAX - 25 MIN - 15
ID - 24 MAX - 25 MIN - 15
ID - 23 MAX - 25 MIN - 15
ID - 22 MAX - 25 MIN - 15
ID - 21 MAX - 25 MIN - 15
ID - 20 MAX - 25 MIN - 15
ID - 19 MAX - 25 MIN - 15
ID - 18 MAX - 25 MIN - 15
ID - 17 MAX - 25 MIN - 15
ID - 16 MAX - 25 MIN - 15
ID - 15 MAX - 25 MIN - 15</span>
На это и останавливается... (так и надо)
На 2 странице , эта строка выдает след:
ID - 25 MAX - 15 MIN - 5
ID - 24 MAX - 15 MIN - 5
ID - 23 MAX - 15 MIN - 5
ID - 22 MAX - 15 MIN - 5
ID - 21 MAX - 15 MIN - 5
ID - 20 MAX - 15 MIN - 5
ID - 19 MAX - 15 MIN - 5
ID - 18 MAX - 15 MIN - 5
ID - 17 MAX - 15 MIN - 5
ID - 16 MAX - 15 MIN - 5
ID - 15 MAX - 15 MIN - 5
ID - 14 MAX - 15 MIN - 5
ID - 13 MAX - 15 MIN - 5
ID - 12 MAX - 15 MIN - 5
ID - 11 MAX - 15 MIN - 5
ID - 10 MAX - 15 MIN - 5
ID - 9 MAX - 15 MIN - 5
ID - 8 MAX - 15 MIN - 5
ID - 7 MAX - 15 MIN - 5
ID - 6 MAX - 15 MIN - 5
ID - 5 MAX - 15 MIN - 5
ID - 4 MAX - 15 MIN - 5
ID - 3 MAX - 15 MIN - 5
ID - 2 MAX - 15 MIN - 5
ID - 1 MAX - 15 MIN - 5</span>
Как видите цикл не заканчивается вообще...
Как побороть?

Надеюсь описал понятно...
Заранее благодарю!
Спустя 54 минуты, 38 секунд (7.03.2010 - 21:44) Adil написал(а):
а значение $i как изменяется?
Спустя 9 минут, 23 секунды (7.03.2010 - 21:54) Eugene написал(а):
В случае если всё срабатывает уменьшается на 1ед.
if ($i <= $max && $i >= $min)
{
echo "Сработало"
$i -=1; <<<
Спустя 55 минут, 21 секунда (7.03.2010 - 22:49) qpayct написал(а):
$i -=1;

$i--;
Спустя 19 минут, 3 секунды (7.03.2010 - 23:08) Eugene написал(а):
Насколько мне известно , разницы между
нет
!
$i -=1 и $i--
нет

Спустя 10 минут, 37 секунд (7.03.2010 - 23:19) krasilich написал(а):
$i = num_news;
while($i <= $max && $i >= $min && $row = mysql_fetch_array($table))
{
echo "ID - $row[ID] $max - MAX $min - MIN<br>";
--$i;
}
Спустя 4 минуты, 8 секунд (7.03.2010 - 23:23) dr_Lev написал(а):
Я так понял, $num_news у тебя на 1-й и на 2-й странице = 25... т.е. на второй стр. $=25, а $max=15... что значит, что условие if ($i <= $max && $i >= $min) для второй стр. не выполнится никогда...
Данную ситуацию можно легко исправить, например $i-=1 (или $i--, что равноценно) вынести до проверки, и изменить условие на if ($i < $max && $i >= $min-1)... но советую пересмотреть логику, и вытаскивать нужные записи из таблицы еще в запросе, например используя LIMIT
Данную ситуацию можно легко исправить, например $i-=1 (или $i--, что равноценно) вынести до проверки, и изменить условие на if ($i < $max && $i >= $min-1)... но советую пересмотреть логику, и вытаскивать нужные записи из таблицы еще в запросе, например используя LIMIT
Спустя 33 минуты, 52 секунды (7.03.2010 - 23:57) Eugene написал(а):
see_man
Премного благодарен , за ответ!
dr_Lev
Спасибо что указали на ошибку!
Написать написал , а что и как - не подумал!
Премного благодарен , за ответ!
dr_Lev
Спасибо что указали на ошибку!

Написать написал , а что и как - не подумал!

Спустя 10 часов, 6 минут, 21 секунда (8.03.2010 - 10:03) qpayct написал(а):
Цитата (Eugene @ 7.03.2010 - 22:08) |
Насколько мне известно , разницы между$i -=1 и $i-- нет ![]() |
ошибаешься. разница есть.
Спустя 6 часов, 27 минут, 26 секунд (8.03.2010 - 16:31) Eugene написал(а):
Цитата (qpayct @ 8.03.2010 - 07:03) | ||
ошибаешься. разница есть. |
Прошу просветить , какая же
