[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Бесконечный цикл
DmitryOpalev
$table = "SELECT * FROM verbs";
while($row = mysql_fetch_assoc(mysql_query($table)))
{
echo "<tr>";
echo "<td>".$row['first']."</td>";
echo "<td>".$row['second']."</td>";
echo "<td>".$row['third']."</td>";
echo "<td>".$row['ing']."</td>";
echo "<td>".$row['translate']."</td>";
echo "</tr>";
}

Почему цикл бесконечный? Чего не хватает?



Спустя 1 минута, 36 секунд (27.12.2010 - 20:49) inpost написал(а):
Какое у тебя условие стоит в цикле? Объясни по полочкам =)

Спустя 3 минуты, 3 секунды (27.12.2010 - 20:53) Invis1ble написал(а):
DmitryOpalev
при каждой итерации у тебя выполняется запрос заново )
Вот к чему приводит желание сократить объём кода =)

Спустя 1 минута, 7 секунд (27.12.2010 - 20:54) sharki написал(а):
DmitryOpalev
Что у тебя за извращения такие О_о mysql_fetch_assoc(mysql_query($table)) мог бы нормально записать и всё норм было, но сначала ответь inpost

Спустя 9 секунд (27.12.2010 - 20:54) DmitryOpalev написал(а):
Ну блин...
написал:
$table = mysql_query("SELECT * FROM verbs");
while($row = mysql_fetch_assoc($table))
{
echo "<tr>";
echo "<td>".$row['first']."</td>";
echo "<td>".$row['second']."</td>";
echo "<td>".$row['third']."</td>";
echo "<td>".$row['ing']."</td>";
echo "<td>".$row['translate']."</td>";
echo "</tr>";
}

цикл пришел в норму... почему так?

Спустя 49 секунд (27.12.2010 - 20:55) sharki написал(а):
DmitryOpalev
У тебя в одном false в другом true =) хоть и в базе уже ничего не будет

Спустя 57 секунд (27.12.2010 - 20:56) inpost написал(а):
DmitryOpalev
Ты понимаешь, что происходило внутри условия цикла? Если нет, то в поиске почитай про цикл while. Если понимаешь, объясни, что ты там написал?

Спустя 38 секунд (27.12.2010 - 20:56) DmitryOpalev написал(а):
Господи... задавили smile.gif
Выполняется, пока условие true

Спустя 1 минута, 56 секунд (27.12.2010 - 20:58) inpost написал(а):
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);


В каком случае вернёт false? Вот запусти этот код 5 000 раз, когда вернётся false?

Спустя 47 секунд (27.12.2010 - 20:59) DmitryOpalev написал(а):
Насколько я понимаю... хотя может и нет...
Когда запись может вытащится из базы, и присваивается в массив $row условие правиотное (true) ?
P.S. это на прошлые ответы

Спустя 2 минуты, 11 секунд (27.12.2010 - 21:01) DmitryOpalev написал(а):
Цитата
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);


В каком случае вернёт false? Вот запусти этот код 5 000 раз, когда вернётся false?

После первого раза... ну я проверил biggrin.gif ... я запутался короче

Спустя 59 секунд (27.12.2010 - 21:02) inpost написал(а):
За такой ответ ты бы получил двойку на уроке, особенно когда 3 месяца посещаешь лекции.
Ответ должен был быть таким: Я делаю обращение к БАЗЕ ДАННЫХ, потом вынимаю первый элемент - выполняется тело цикла, возвращаюсь к условию и... ОБРАЩАЮСЬ К БД и ВЫТЯГИВАЮ ПЕРВЫЙ ЭЛЕМЕНТ, затем тело цикла, снова Обращаюсь к БД и вытягиваю ПЕРВЫЙ(!!!) Элемент.
Первый элемент будет существовать всегда, значит цикл бесконечный.

Спустя 1 минута, 8 секунд (27.12.2010 - 21:03) DmitryOpalev написал(а):
А, типа он всегда может вырвать первый элемент => всегда будет его вытягивать?

Спустя 2 минуты, 49 секунд (27.12.2010 - 21:06) DmitryOpalev написал(а):
А чем тогда отличаются запросы?

Спустя 21 секунда (27.12.2010 - 21:06) Invis1ble написал(а):
DmitryOpalev
я тебе уже написал, ты при каждой итерации делаешь новый запрос к БД, в итоге получаешь новый дескриптор и, как следствие, такую карусель =)

Спустя 2 минуты, 4 секунды (27.12.2010 - 21:08) DmitryOpalev написал(а):
Ммммм...
Так не работает:
$table = "SELECT * FROM verbs";
while($row = mysql_fetch_assoc(mysql_query($table)))
{
echo "<tr>";
echo "<td>".$row['first']."</td>";
echo "<td>".$row['second']."</td>";
echo "<td>".$row['third']."</td>";
echo "<td>".$row['ing']."</td>";
echo "<td>".$row['translate']."</td>";
echo "</tr>";
}

Так работает:
$table = mysql_query("SELECT * FROM verbs");
while($row = mysql_fetch_assoc($table))
{
echo "<tr>";
echo "<td>".$row['first']."</td>";
echo "<td>".$row['second']."</td>";
echo "<td>".$row['third']."</td>";
echo "<td>".$row['ing']."</td>";
echo "<td>".$row['translate']."</td>";
echo "</tr>";
}

или в этом и различие?

Спустя 1 минута, 30 секунд (27.12.2010 - 21:10) inpost написал(а):
mysql_fetch_assoc(mysql_query($table)) - связь какая? Запрос, взять первый элемент из запроса - return TRUE.
Снова запрос, взять первый элемент, return true.
Если ты из базы вытягиваешь 5 строк, то будет 5 элементов(строк), и перебор надо делать по ним, а не по обращению к Базе данных.

Код запусти:
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);
$res = mysql_query($table);
$row = mysql_fetch_assoc($res);


Всегда будет TRUE, потому что каждый раз ты берёшь первую строку, а не переходишь на вторую

Спустя 1 минута, 3 секунды (27.12.2010 - 21:11) inpost написал(а):
DmitryOpalev
$a = 5;
while($a == 5).

Когда цикл не пройдет (вернётся false), с 10 раза или с 20-ого?

Спустя 2 минуты, 31 секунда (27.12.2010 - 21:14) DmitryOpalev написал(а):
Никогда... если a не изменяется...

Спустя 1 минута, 23 секунды (27.12.2010 - 21:15) inpost написал(а):
DmitryOpalev
Именно, а что в твоём случае будет менять? Тоже ничего, так как каждый раз ты будешь вынимать первую строку, которая всегда существует.

Спустя 37 секунд (27.12.2010 - 21:16) DmitryOpalev написал(а):
А! Мы каждый раз берем первую запись, а так как я прописал mysql_fetch_assoc(mysql_query(...)) то он всегда будет обращатся к первой записи!!!
P.S. Я начала писать раньше =)

Спустя 1 минута, 10 секунд (27.12.2010 - 21:17) DmitryOpalev написал(а):
mysql_fetch_assoc($table) а так он обработает все записи! Да?

Спустя 3 минуты, 32 секунды (27.12.2010 - 21:20) inpost написал(а):
Он берёт первую запись не из общего (откуда-то созданного запроса), а из того, который прописал лично ты. Внутри цикла ты делаешь запрос к БД, и из него вынимаешь первую запись.
Само обращение надо отправить за тело цикла и присвоить ему реальное значение (переменную), тогда и обращаться к переменной, которая имеет вернувшийся результат запроса.

$res = mysql_query();
$res = 1. name-a, 2. name-b, 3.name-c
mysql_fetch_assoc;
echo name = a;
mysql_fetch_assoc;
echo name = b;
mysql_fetch_assoc;
echo name = c;
mysql_fetch_assoc;
echo name = FALSE (некуда дальше переходить, всего 3 записи взялись, поэтому возвращается false и цикл прерывается)


Спустя 6 минут (27.12.2010 - 21:26) DmitryOpalev написал(а):
smile.gif Спасибо smile.gif

Спустя 7 дней, 12 часов, 1 минута, 20 секунд (5.01.2011 - 09:28) Зарегестрирований написал(а):
$res = mysql_query($table);
$nums = Mysql_num_rows($res)

$associ = mysql_fetch_assoc($res)

id = o

while($id <= $nums)
{
echo "<tr>";
echo "<td>".$associ['first']."</td>";
echo "<td>".$associ['second']."</td>";
echo "<td>".$row['third']."</td>";
echo "<td>".$row['ing']."</td>";
echo "<td>".$row['translate']."</td>";
echo "</tr>";
}


И ТД


Спустя 7 часов, 1 минута, 29 секунд (5.01.2011 - 16:29) inpost написал(а):
Зарегестрирований
не-а =) Ты не прав. Да и твой скрипт работать не будет...


_____________
Курс валют
Быстрый ответ:

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