переменная не передается во вложенный цикл

nkly

Новичок
переменная не передается во вложенный цикл

Есть код:
PHP:
print ("<TABLE  border=\"1\" width=\"100%\">");
for ($k=1;$k<=10;$k++)
{
print ("<TR align=\"center\"><TD width=\"8%\" bgcolor=\"Green\">$k</TD>");
	while ($Row= pg_fetch_array($result_tp_prav_bereg))
	{
			$w="select kolvort from rffiders where nomertp=$Row[nomertp] and nomfidtp=$k";
			$res=pg_query($Link,$w);
			$nnn= pg_fetch_array($res);
			print ("<TD> $k и $nnn[kolvort]</TD>");
	}
	print ("</TR>");
}
pg_close ($Link);
print("</TABLE>");
Во внутреннем цикле while переменная $k почему то не увеличивается, выводит значения только для $k=1.
Если подставляю вручную k=1,2,3 .... то для каждого к результат вычисляется верно, а в цикле не работает.
Во внешнем цикле (for) К увеличивается.
В чем ошибка?
 

nkly

Новичок
ну если я вместо $k во внутреннем цикле подставляю nomfidtp=2,3, и так далее то выводится результат для k=2,3, и так далее (то есть выводится только одна строка а их должно быть 10 )
 

Фанат

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

nkly

Новичок
Приведенный код должен формировать таблицу состоящую из 10 строк ($k<=10), количество столбцов определяется количеством значений в $Row[nomertp].
Таблица в браузере отображается следующим образом.
Крайний левый столбец зеленого цвета со значением $k по середине отображается верно (отображаются все десять ячеек по вертикали с номерами) в таблице отображаются значения только в строке $k=1
Все остальные строки (исключая крайний левый столбец зеленого цвета) - пусты.

-~{}~ 10.07.06 11:48:

Если я вместо nomfidtp=$k напишу nomfidtp=2 или nomfidtp=3 и так далее, то все равно выводится только одна верхняя строка в таблице, хотя столбец зеленого цвета который формируется сразу после оператора for выводится полностью и правильно
 

Фанат

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

напиши два вложенных друг в друга цикла for, и ты увидишь, что ничего из внешнего во внутренний, ТАК КАК ТЫ ЭТО ПОЛАГАЕШЬ, не передаётся.
а просто внутренний исполняется столько раз, сколько циклов во внешнем.
 

nkly

Новичок
Так я вижу что не передается, а почему?
Если рассмотреть алгоритм то я представляю его себе так:
в цикле for для каждого прохода мы "фиксируем" переменную к и для каждого фиксированного к должны выполнять первый оператор print, затем цикл while, затем второй оператор print, затем к увеличивается на единицу и так 10 раз. Но почему при первом проходе внутри цикла while k=1, а как бы следующих проходов цикла while нет?
 

Messie

Guest
потому что у тебя цикл
while ($Row= pg_fetch_array($result_tp_prav_bereg))
при первом проходе выбирает ВСЕ строки из запроса

когда k становится равным 2, строк уже не остается и pg_fetch_array возвращает false, соответственно цикл не выполняется при k>=2
 

Фанат

oncle terrible
Команда форума
потому, что while ($Row= pg_fetch_array($result_tp_prav_bereg))
и потому, что ты смотришь как юзер неграмотный, НА ЭКРАН, а не в полученный HTML код
 
Сверху