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 :: Цикл уходит в бесконечность

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Crate
Отправлено: 02 Мая, 2012 - 19:30:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Всем привет! Почему-то цикл while уходит в бесконечность при выборке из бд, хотя запрос тестировался в пхпМайАдмин и там было все нормально.

Код цикла:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     global $menu;
  3.     while ($row = mysql_fetch_assoc ($menu->returnMenu())) :
  4. ?>
  5. <a href="{PATH}/<?=$row['link'];?>"><?=$row['announce'];?></a>
  6. <?PHP endwhile; ?>


returnMenu ()
PHP:
скопировать код в буфер обмена
  1. function returnMenu () {
  2.         $query = "SELECT link, announce FROM pages WHERE status = '1' AND parent = '0' ORDER BY position";
  3.         return $this->sql($query);
  4. }
 
 Top
Panoptik
Отправлено: 02 Мая, 2012 - 19:32:45
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




не делайте так:
Crate пишет:
$row = mysql_fetch_assoc ($menu->returnMenu())

у вас в каждой итерации происходит новая выборка из базы
присвойте переменной значение выборки, а после прогоняйте циклом то что получится
PHP:
скопировать код в буфер обмена
  1.     <?PHP
  2.         global $menu;
  3.         $result = $menu->returnMenu();
  4.         while ($row = mysql_fetch_assoc ($result)) :
  5.     ?>
  6.     <a href="{PATH}/<?=$row['link'];?>"><?=$row['announce'];?></a>
  7.     <?PHP endwhile; ?>


-----
Just do it
 
 Top
Crate
Отправлено: 02 Мая, 2012 - 19:35:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Panoptik пишет:
не делайте так
Разве от этого что-то поменяется?
 
 Top
Panoptik
Отправлено: 02 Мая, 2012 - 19:37:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




конечно поменяется
смотрите:
1. вы делаете выборку.
2. в цикле тут же вы выбираете первый результат из выборки
3. цикл - получает тру и возвращается еще раз смотреть условие
4. вы снова делаете выборку
5. снова получаете первый результат из выборки...
6... зацыкливание

а в моем случае вы получаете результат выборки и просматриваете последовательно все записи полученные из базы, и больше запросы в базу не происходят


-----
Just do it
 
 Top
Crate
Отправлено: 02 Мая, 2012 - 19:39:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Panoptik спасибо, оказывается все было просто (:
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB