Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Не могу понять выражение в цикле do-while
После очередной итерации проверяется, истинно ли логическое_выражение, и, если это так, управление передается вновь на начало цикла, в противном случае цикл обрывается.
$array возвращает массив с поле=значение. в echo возвращает "Array", как и mysql_fetch_array($resultat). Я неправильно понимаю что получается выражение: Array=Array, было бы так, цикл просто напросто зациклился бы.
Вопрос, как это понимать? разжуйте.
Fetis
Отправлено: 07 Августа, 2013 - 17:41:51
Частый гость
Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012 Откуда: Киров, Россия
Помог: 0 раз(а)
Дак ты разбил массив который пришел из запроса, и тебе надо выводить НЕ echo $zapros, а echo $array['id'] например. и тоже использовать ассоциативный массив
Второй случай, попробуй заместо mysql_fetch_array, использовать mysql_fetch_assoc.
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Popov detected
А если чесно выбросите урокы попова. Причина
Triton682
Отправлено: 07 Августа, 2013 - 17:59:24
Новичок
Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013
Помог: 0 раз(а)
Fetis пишет:
Дак ты разбил массив который пришел из запроса, и тебе надо выводить НЕ echo $zapros, а echo $array['id'] например. и тоже использовать ассоциативный массив
Второй случай, попробуй заместо mysql_fetch_array, использовать mysql_fetch_assoc.
что? зачем мне выводить $array['id']?
echo $zapros.'<br />'; - это у меня проверка, что находится в $limit
я это не понимаю: while($array=mysql_fetch_array($resultat));
Fetis
Отправлено: 07 Августа, 2013 - 18:01:59
Частый гость
Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012 Откуда: Киров, Россия
Помог: 0 раз(а)
где веревка?)
НО в переменной $zapros, у тебя в данный момент просто текст, а не результат выполнения запроса
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
mysql_fetch_array возвращает true пока есть строки в результате, когда строки заканчиваются mysql_fetch_array возвратит false и цикл while вернет управление.
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
Triton682
Отправлено: 07 Августа, 2013 - 18:08:13
Новичок
Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013
Помог: 0 раз(а)
Fetis пишет:
где веревка?)
НО в переменной $zapros, у тебя в данный момент просто текст, а не результат выполнения запроса
не смотри на эту строку! это проверка $limit (Добавление)
esterio пишет:
Popov detected
А если чесно выбросите урокы попова. Причина
не вижу ни одного попова, даже не видел его творений.
честно говоря, минусонул бы вас (Добавление)
snikers987 пишет:
mysql_fetch_array возвращает true пока есть строки в результате, когда строки заканчиваются mysql_fetch_array возвратит false и цикл while вернет управление.
спасибо, закрыто.
esterio
Отправлено: 07 Августа, 2013 - 18:27:58
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
snikers987 пишет:
mysql_fetch_array возвращает true пока есть строки в результате, когда строки заканчиваются mysql_fetch_array возвратит false и цикл while вернет управление.
И Вы бредите сегодня. Да что такое. Неужели никто не в силах зайти вот сюда
Цитата:
Возвращает массив, соответствующий обработанному ряду результата запроса и сдвигает внутренний указатель данных вперед.
Неужели так сложно?
Triton682 пишет:
честно говоря, минусонул бы вас
Да на здоровя
DelphinPRO
Отправлено: 07 Августа, 2013 - 18:53:27
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Triton682 пишет:
честно говоря, минусонул бы вас
вы лучше возьмите пример использования mysql_fetch_array из манула (php.net)/
Ваш код в корне не верен. Сначала нужно проверять что вернула функция, а потом уже использовать возвращенное значение. У вас же на первой итерации проверка не производится и данные сразу отдаются на обработку. А если вдруг запрос ничего не вернул? Опа! косяк. посыплются ошибки.
----- Чем больше узнаю, тем больше я не знаю.
IllusionMH
Отправлено: 07 Августа, 2013 - 19:02:47
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Triton682 пишет:
честно говоря, минусонул бы вас
Triton682, в ветке по ссылке указаны косяки и почему так делать не стоит. За такие ссылки нужно говорить спасибо, а не обижаться(учитывая код в первом посте).
Конструкция while работает по простейшему принципу, нужно знать 2 элементарные вещи: приведение типов и как узнать что возвращает функция(воспользоваться поиском на php.net). И не зная эти две элементарные вещи собрались "минусовать"?
Unit221
Отправлено: 07 Августа, 2013 - 19:37:29
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Авг. 2013
Помог: 0 раз(а)
Принцип цыкла
Делай чтото пока соблюдается условие .
Пример
<?php
$i=1;
do {
echo $i;
$i++
}while ($i<10)
?>
Тоесть
$i = 1
делай {
покажи $i
прибавь к $i еденицу
} пока действует условие ($i меньше 0)
}
Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013
Помог: 0 раз(а)
если я правильно понял(а если не правильно то скажите что у меня ужасного такого) то вы отсылаете меня читать про ужасный код из-за цикла do-while. Хотя do-while мне нужен для того чтобы исполнить 1 итерацию независимо от условия (истинности выражения). т.е.
сделав так:
(один раз он в любом случае исполнит тело цикла) то получу записи с 1 по 11 - как и нужно мне.
Само выражение $array=mysql_fetch_array($resultat) непонятно. Т.е. я понимаю так:
Пока $array равно mysql_fetch_array($resulatat) выполнять тело цикла. в переменной $array хранится массив данных $resultat обработанный mysql_fetch_array, так же mysql_fetch_array($resultat) возвратит обработанный массив данных полученный из $resultat.
т.е. я вижу это как 1=1, что должно зациклится.
поэтому я немогу понять выражение while($array=mysql_fetch_array($resultat)).
Покажите мне тогда как правильно выводить SELECT * FROM table LIMIT 0,11, когда значения лимита меняются.
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Triton682 пишет:
я получу записи с 2 по 11.
вы бредите
прочитайте внимательно мой пост. я там написал чем чревато использование цикла do..while в данном контексте
----- Чем больше узнаю, тем больше я не знаю.
esterio
Отправлено: 08 Августа, 2013 - 11:56:16
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Triton682 пишет:
я получу записи с 2 по 11.
если do-while то получу записи с 1 по 11 - как и нужно мне.
Если Вы бы перейшли по ссилке которую я привел, или внимательно прочли то, что написал DelphinPRO, или прочли документацию, или знали хотя бы один ЯП, то Вы б такое не написали и не получили ураган критики от жителей форума. А почему критика? Да потому что Вам лень было прочесть
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.