Как запихнуть массив в ячейку базы

defence

Деклассированный элемент
Как запихнуть массив в ячейку базы

Привет, народ! Столкнулся вот с какой штукой: есть мускульная база товаров (id, наименование, артикул, цвет, размер, цена). У одного товара может быть несколько цветов, типа, "рубашка такая-то, цвета: белый, синий, черный". В форме добавления товара в админке в графе цвет я сделал селект с множественным выбором типа <select name=color[]... и т.п.

Вопрос такой: посоветуйте, плз, как мне запихнуть этот массив в ячейку color для определенного товара, а потом вынуть его оттуда так, чтоб покупатель мог сам выбрать нужные ему цвета?

Надеюсь, понятно объяснил...

P.S. В поиске рылся, про select multiple до фига чего есть, а по своему вопросу ничего не нашел. :(
 

kvf77

Red Devil
$array = addslashes(serialize($array)) - это в базу
из базы - $array = stripslashes(unserialize($array));

В первом случае мы превратили массив в обычную текстовую строку, а во втором случае восстановили массив в том виде, в каком он был до отработки первой строки.
 

defence

Деклассированный элемент
ага... понятно. только вот что в базу загрузилось:

a:3:{i:0;s:5:"white";i:1;s:4:"rose";i:2;s:5:"green";}

что значат эти а:3:, i:2?
это так должно быть? или можно без них как-нить, а то у меня заказчик как это увидить - свихнется! :)
 

Tor

Новичок
kvf77
шел бы ты с такими совета лесом

defence
в базу писать отдельную строку на каждый цвет, т.е. на рубашку в трех цветах в базе будет 3 записи

еще правильнее иметь отдельную таблицу товаров и отдельную таблицу, где каждому товару будет сопоставляться один или более цветов (или других параметров)
 

SelenIT

IT-лунатик :)
А почему бы не вынести цвет и размер в отдельную таблицу со связью "много к одному"?
(эх, опять опередили...)
 

vafel

Новичок
вдруг это ему надо только для отображения( не используется при поиске и прочих фичах) тада это проще в одну ячейку сунуть
 

kvf77

Red Devil
defence
у тебя заказчик в базу смотрит что ли?
Я же тебе написал - второй строкой ты восстанавливаешь оригинальный массив и выводишь его как тебе надо

Tor
нормальный совет и ничем он не хуже твоего - вполне жизненный и работоспособный. Очень часто поле "цвет" не предназначено для поиска и просто информация о том, какие цвета бывают и заморачиваться на соотнесение один ко многим - это лишний гемор. Вообще последнее время в этом форуме начинают давать вумные советы, сложность реализации которых не соответствует уровню задачи.
 

defence

Деклассированный элемент
Tor
Да, это правильней. Только если б я сам с нуля писал бы магазин - другое дело, а так надо в существующий просто добавить такую хрень.
 

kvf77

Red Devil
Quidle
Здесь вообще нет неправых, если на то пошло - а спорить о эффективности методов не зная задачи в комплексе - глупо. Так что твой пост не в кассу. К тому же человеку именно описанный мною способ нужен был.
 

SiMM

Новичок
> человеку именно описанный мною способ нужен был.
Судить об этом он будет позже, когда заказчик попросит добавить определённую функциональность.
 

defence

Деклассированный элемент
kvf77
Из базы не достается... Пишет Array...
 

Tor

Новичок
так не достается или array?

сделай var_dump(переменная);
 

defence

Деклассированный элемент
попробую...

-~{}~ 05.07.05 11:04:

var_dump вывел

string(67) "a:4:{i:0;s:4:"grey";i:1;s:4:"rose";i:2;s:4:"blue";i:3;s:5:"black";}"

-~{}~ 05.07.05 11:06:

походу все правильно работает... только как оставить только названия цветов?
 

Tor

Новичок
хочешь делать все через ... задний проход - пожалуйста

но научись чиать то, что тебе пишут
unserialize
 
Сверху