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
Форумы портала PHP.SU :: Версия для печати :: Организовать цикл while
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Организовать цикл while

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

1. DiMaN-VRN - 16 Октября, 2009 - 19:27:20 - перейти к сообщению
Есть скрипт:

PHP:
скопировать код в буфер обмена
  1. function lgsl_text($server)
  2. {
  3.   global $lgsl_config;
  4.  
  5.   $mysql_query  = "SELECT `text` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `id`='{$server['o']['id']}'";
  6.   $mysql_result = mysql_query($mysql_query) or die(mysql_error());
  7.   $mysql_row    = mysql_fetch_array($mysql_result, MYSQL_ASSOC);
  8.  
  9.   return $mysql_row['text'];
  10. }


вот он выводит 1 запись для определенного id, мне нужно чтоб выводил все записи с такимде id, помогите организовать цикл while
2. Мелкий - 16 Октября, 2009 - 20:27:16 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function lgsl_text($server)
  2. {
  3.   global $lgsl_config;
  4.  
  5.   $mysql_query  = "SELECT `text` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `id`='{$server['o']['id']}'";
  6.   $mysql_result = mysql_query($mysql_query) or die(mysql_error());
  7. while ($mysql_row    = mysql_fetch_array($mysql_result, MYSQL_ASSOC)) {
  8.   $antword[]=$mysql_row['text'];
  9. }
  10.  return $antword;
  11. }

Ответ возвращает массивом
3. DiMaN-VRN - 16 Октября, 2009 - 22:06:07 - перейти к сообщению
я раньше выводил вот так: ".lgsl_text($server)."
а сейчас он выводит слово Array и все Недовольство, огорчение

помогите плз, заплачу семизнаком...
4. Мелкий - 16 Октября, 2009 - 22:30:36 - перейти к сообщению
Это потому, что теперь и ответ массивом приходит.
т.е. используется так:
PHP:
скопировать код в буфер обмена
  1. lgsl_text_arr = lgsl_text($server);
  2. echo lgsl_text_arr[0]; //вывод первого значения


Или вам надо, чтобы просто в одну строку выводил всё, что в таблице есть с таким id? Тогда такая функця:
PHP:
скопировать код в буфер обмена
  1. function lgsl_text($server)
  2. {
  3.   global $lgsl_config;
  4.   $str = '';
  5.   $mysql_query  = "SELECT `text` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `id`='{$server['o']['id']}'";
  6.   $mysql_result = mysql_query($mysql_query) or die(mysql_error());
  7.   while ($mysql_row    = mysql_fetch_array($mysql_result, MYSQL_ASSOC)) {
  8.   $str .= $mysql_row['text']; //тут, если надо, можно поставить разделитель между записями
  9.   }
  10.   return $str;
  11. }
5. Champion - 17 Октября, 2009 - 08:25:07 - перейти к сообщению
DiMaN-VRN пишет:
а сейчас он выводит слово Array и все
Открою секрет: массивы не выводятся оператором echo. Они выводятся с помощью var_dump() или поэлементно.
6. DiMaN-VRN - 17 Октября, 2009 - 14:23:53 - перейти к сообщению
То что предложил Мелкий не работает вообще, Champion подскажите пжл как быть... Улыбка
7. Мелкий - 17 Октября, 2009 - 14:32:23 - перейти к сообщению
Которая из 2-х мной предложенных не работает и как к ней обращаетесь при этом?

сделайте var_dump(lgsl_text($server)); и посмотрите, что возвращает функция.

 

Powered by ExBB FM 1.0 RC1