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]   

> Без описания
ketovpavel
Отправлено: 31 Января, 2015 - 15:25:47
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Нояб. 2014  


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




Есть таблица goods в которой есть столбец с именем cat_id типом varchar значение которого является записи чисел через запятую например: 1,2,3 или 15,48,50 и т.д. и т.п. Каждое число является id конкретной категории из другой таблицы category для вывода на экран.

Вопрос как мне прочесть данную запись конкретной ячейки допустим мне нужно вывести 15,48,50 соответственно вместо чисел нужно сравнить с таблицей category и вывести на экран title конкретной записи?

Делаю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $sql_goods = mysql_query("SELECT * FROM goods");
  3.         while($ref = mysql_fetch_array($sql_goods)){
  4.                 $id = trim($ref['id']);
  5.                 $s_goods[$id]['id'] = trim($ref['id']);
  6.  
  7.                 $arr_goods = explode(',',trim($ref['cat_id']));
  8.  
  9.                 foreach($arr_goods as $i_goods)
  10.                        
  11.                 $s_goods[$id]['title_goods'] = mysql_result(mysql_query("SELECT title FROM category WHERE id = $i_goods"),0);
  12.         }
  13.  


Почему выводит только по последнему числу, а не все числа например если значение 1,2,3 то выводит только 3 или если 15,48,50 то выводит только 50
 
 Top
DelphinPRO
Отправлено: 31 Января, 2015 - 18:38:10
Post Id



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


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


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




ketovpavel пишет:
записи чисел через запятую например: 1,2,3

Категорически неправильно построена база. Вот и не получается у вас нифига.
Сделайте нормальную связующую таблицу.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ketovpavel
Отправлено: 31 Января, 2015 - 19:00:23
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Нояб. 2014  


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




DelphinPRO пишет:
ketovpavel пишет:
записи чисел через запятую например: 1,2,3

Категорически неправильно построена база. Вот и не получается у вас нифига.
Сделайте нормальную связующую таблицу.


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

А так все работает и сортирует правильно, если вывести:

PHP:
скопировать код в буфер обмена
  1.  
  2. echo $s_goods[$id]['title_goods'] = mysql_result(mysql_query("SELECT title FROM category WHERE id = $i_goods"),0);
  3.  


Дело в том, что работаю с php не так давно и не могу ещё полностью разобраться как реализовать цыкл в цыкле и по этому такой переплёт получается с выводом

(Отредактировано автором: 31 Января, 2015 - 19:01:50)

 
 Top
ketovpavel
Отправлено: 01 Февраля, 2015 - 01:54:48
Post Id



Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Нояб. 2014  


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




Всё тему закрываю, вопрос решил следующим решением:

PHP:
скопировать код в буфер обмена
  1.  
  2. $sql_goods = mysql_query("SELECT * FROM goods");
  3.         while($ref = mysql_fetch_array($sql_goods)){
  4.                 $id = trim($ref['id']);
  5.                 $s_goods[$id]['id'] = trim($ref['id']);
  6.  
  7.                 $arr_goods = explode(',',trim($ref['cat_id']));
  8.  
  9.                 foreach($arr_goods as $i_goods)
  10.                        
  11.                 $s_goods[$id]['title_id'][$i_goods]['title_goods'] = mysql_result(mysql_query("SELECT title FROM category WHERE id = $i_goods"),0);
  12.         }
  13.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB