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

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

1. ketovpavel - 31 Января, 2015 - 15:25:47 - перейти к сообщению
Есть таблица 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
2. DelphinPRO - 31 Января, 2015 - 18:38:10 - перейти к сообщению
ketovpavel пишет:
записи чисел через запятую например: 1,2,3

Категорически неправильно построена база. Вот и не получается у вас нифига.
Сделайте нормальную связующую таблицу.
3. ketovpavel - 31 Января, 2015 - 19:00:23 - перейти к сообщению
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 не так давно и не могу ещё полностью разобраться как реализовать цыкл в цыкле и по этому такой переплёт получается с выводом
4. ketovpavel - 01 Февраля, 2015 - 01:54:48 - перейти к сообщению
Всё тему закрываю, вопрос решил следующим решением:

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.  

 

Powered by ExBB FM 1.0 RC1