[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не срабатывает цикл for
ultimatum
Всем привет! Объясните пожалуйста почему так происходит, есть таблица в БД:
a b
1 | apple
1 | banans
2 | bear
2 | vodka
и код:
 
for($a=1;$a<=2;$a++) {
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."'");
while($tpl[]=mysql_fetch_assoc($tour)) {}
echo $tpl[0]['b'];
}

думал, что будет "apple bear", а получается "apple apple"
почему?



Спустя 1 минута, 15 секунд (24.07.2011 - 17:31) ADiel написал(а):
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."'");
вне цикла должно быть

Спустя 1 минута, 35 секунд (24.07.2011 - 17:33) ADiel написал(а):
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."'");
for($a=1;$a<=2;$a++) {
$tpl=mysql_fetch_assoc($tour);
echo $tpl['b'];
}

Спустя 1 минута, 56 секунд (24.07.2011 - 17:35) ADiel написал(а):
а лучше всего вместо for($a=1;$a<=2;$a++) сделать LIMIT 1,2 в запросе и зменить for($a=1;$a<=2;$a++) на while($tpl=mysql_fetch_assoc($tour))

Спустя 5 минут, 49 секунд (24.07.2011 - 17:41) ultimatum написал(а):
Цитата (ADiel @ 24.07.2011 - 14:33)
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."'");
for($a=1;$a<=2;$a++) {
$tpl=mysql_fetch_assoc($tour);
echo $tpl['b'];
}

Зачем здесь тогда вообще цикл???
Мне нужен именно запрос в цикле...
Может непонятно объяснил?

Спустя 4 минуты, 58 секунд (24.07.2011 - 17:46) ADiel написал(а):
Да, я $a не заметил

Спустя 2 минуты, 23 секунды (24.07.2011 - 17:48) ADiel написал(а):
for($a=1;$a<=2;$a++) {
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."' LIMIT 1");
$tpl[]=mysql_fetch_assoc($tour);
}
var_dump($tpl);

Спустя 11 минут, 2 секунды (24.07.2011 - 17:59) ultimatum написал(а):
Цитата (ADiel @ 24.07.2011 - 14:48)
for($a=1;$a<=2;$a++) {
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."' LIMIT 1");
$tpl[]=mysql_fetch_assoc($tour);
}
var_dump($tpl);

Возможно не правильно объяснил...
В первой итерации цикла мне нужно выбрать все `b` где `a` =1
Выполнить с ними определённые действия...
Во второй - все `b` где `a`=2 и Выполнить с ними определённые действия...
и т.д.

Спустя 7 минут, 10 секунд (24.07.2011 - 18:06) ADiel написал(а):
for($a=1;$a<=2;$a++) {
$tour=mysql_query("SELECT `b` FROM `table` WHERE `a`='".intval($a)."'");
while($tpl[]=mysql_fetch_assoc($tour)){};
}
var_dump($tpl);


Остальное извольте сами, сударь

Спустя 11 минут, 51 секунда (24.07.2011 - 18:18) ultimatum написал(а):
Спасибо, теперь всё понял

Спустя 16 минут, 8 секунд (24.07.2011 - 18:34) Invis1ble написал(а):
ADiel
Цитата
while($tpl[]=mysql_fetch_assoc($tour)){};

последний элемент $tpl будет false

Спустя 4 часа, 44 минуты, 31 секунда (24.07.2011 - 23:19) ADiel написал(а):
Спасибо, не знал, т.к. раньше не делал таких костылей =)

Кстати, а foreach (mysql_fetch_assoc($tour) as $key=>$val) {}
будет работать?

Спустя 8 часов, 48 минут, 51 секунда (25.07.2011 - 08:07) Invis1ble написал(а):
ADiel
возможно, но на последней итерации будет warning скорее всего


_____________
Срби и Руси браћа заувек!!!
Косово je Србиjа!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.