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 :: 2 цикла с mysql_fetch_object

 PHP.SU

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


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

> Без описания
welcometo
Отправлено: 02 Июля, 2011 - 23:27:32
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


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




Здравствуйте, возникла следующая проблема при такой ситуации: делаю 2 запроса в базу

Затем хочу сравнить объект из первого запроса, с объектом из второго запроса
PHP:
скопировать код в буфер обмена
  1. while ( $smb1 = mysql_fetch_object( $Result ) )
  2.     {
  3.         while ( $smb2 = mysql_fetch_object($Result2))
  4.         {
  5.           if ($smb1->id == $smb2->id){
  6.              \\что-то делаем
  7.           }
  8.         }
  9.     }

Но вложенный цикл работает только 1 раз. Такое ощущение, что ф-ия mysql_fetch_object уничтожает содержимое результата запроса $Result2. Помогите, пожалуйста.
 
 Top
OrmaJever Модератор
Отправлено: 02 Июля, 2011 - 23:33:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Почему нельзя сравнить это в запросе к бд?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
welcometo
Отправлено: 02 Июля, 2011 - 23:44:41
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


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




этот код я привел для примера. там все иначе на самом деле. Объяснять много, врядли кто захочет во все это вникать, поэтому нужна реализация хотя бы вот этого.
 
 Top
OrmaJever Модератор
Отправлено: 02 Июля, 2011 - 23:47:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




ну во-первых вы уверены что $Result2 возвращает больше 1 строки?
во-вторых это зависит и от кода в условии, может там есть что-то прерываещее цыкл, например break?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Slavenin
Отправлено: 02 Июля, 2011 - 23:57:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


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




PHP:
скопировать код в буфер обмена
  1. while ( $smb1 = mysql_fetch_object( $Result ) )
  2.     {
  3. print_r($smb1);  
  4. //не забываем сбрасывать указатель для  $Result2
  5. mysql_data_seek($Result2, 0);
  6. while ( $smb2 = mysql_fetch_object($Result2))
  7.         {
  8. print_r($smb2);  
  9.           if ($smb1->id == $smb2->id){
  10.              \\что-то делаем
  11.           }
  12.         }
  13.     }

смотрим, что показывает

(Отредактировано автором: 03 Июля, 2011 - 00:00:43)

 
 Top
welcometo
Отправлено: 02 Июля, 2011 - 23:57:29
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


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




Да, уверен.
Нет, там ничего подобного нету.
вот код
PHP:
скопировать код в буфер обмена
  1. while ( $oques = mysql_fetch_object( $Result ) )
  2.     {
  3.  
  4.         while ( $answers = mysql_fetch_object($Resultnew))
  5.         {
  6.           if ($oques->ID == $answers->variant_id){
  7.            $isTrueAnswer = 1;
  8.           }
  9.           else {
  10.            $isTrueAnswer = 0;
  11.           }
  12.         //echo $answers->variant_id;
  13.  
  14.         }
  15.         $Return .= "<option><id>".$oques->id."</id><true>".$isTrueAnswer."</true><questionid>".$oques->question_id."</questionid><text>".$oques->options."</text></option>";
  16.     }

(Добавление)
Slavenin ,все также. Влоденный цикл выполняется 1 раз ( не итерация, а весь цикл).
 
 Top
Slavenin
Отправлено: 03 Июля, 2011 - 00:08:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


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




я первый раз ошибся, должно быть как сейчас, указатель нужно смещать не у $smb2 а у $Result2

(Отредактировано автором: 03 Июля, 2011 - 00:12:10)

 
 Top
welcometo
Отправлено: 03 Июля, 2011 - 00:13:09
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


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




Спасибо всем кто принимал участие, и Вам, Slavenin, отдельно) Заработало после добавления команды mysql_data_seek($Result2, 0); Спасибо!)
обязательно почитаю про эту функцию.
 
 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