[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите, как разложить хитрый массив? :)
dj_7up
Привет жителям форума.
Прошу помощи, этак подсказать как решить мою задачку. Точнее понять само логику действий, как верно делается такое.

Делаю выборку из базы одной таблицы, получаю массив. В нем имеются значения таблицы вида(для примера):
TYPE | COLOR | SIZE
qwe | white | 10
qwe | black | 10
qwe | green | 20
asd | white | 15
asd |black | 15

и т.д.

Пытаюсь понять логику, как сделать так, что бы получить уникальные значение связав их между собой, например для кнопки(или вкладки) с значениями первого столбика т.е. qwe и asd, которая открываю вторую с значениями второго с связью от первого и также для третьего.
при клике по каждой из них, получаю список цветов для каждого заначение, для qwe: white,black,green. Для asd: white,black.
После клика по цвету, получаю размеры для выбранных type и colors.

Пытаюсь делать так: Например мой массив $mass

foreach($mass as $typ) { $type[] = $typ['type']; }
$type=array_unique(array_unique); //получаю значение для вкладок

дальше заполняю блоки с цветами для каждой вкладки:

foreach($type as $t) {
foreach($mass as $col) { if($t==$col['type']) { $colors[]=$col; } }
$colors=array_unique($colors);

// получаю значение цветов для каждого значения type, при каждом обороте цикла заполняю этими цветами блок с цветами для каждого type который отображаю в зависимости от клика по списку type. Запихиваю это все в функцию на JS которая генерит блоки цветов и размеров в зависимости от выбора.
}

и т.д. для размеров. Вот как-то так.

Прошу подсказать, верно ли решение, может есть более правильное? Может в базе можно как-то иначе хранить для удобства.

Заранее спасибо.
Invis1ble
Смешались в кучу кони, люди php, БД, javascript
Я так понял, что тебе нужна группировка по TYPE ? Для этого не нужно городить циклы, достаточно сделать запрос с группировкой:
select `type`, group_concat(distinct `color` separator ',') `color`
from `table`
group by `type`


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

dj_7up
Цитата (Invis1ble @ 26.10.2013 - 11:15)
Смешались в кучу кони, люди php, БД, javascript
Я так понял, что тебе нужна группировка по TYPE ? Для этого не нужно городить циклы, достаточно сделать запрос с группировкой:
select `type`, group_concat(distinct `color` separator ',') `color`
from `table`
group by `type`

Нет, почему же, я не писал кода JS и запроса БД, я упомянул их лишь для общего представления.
Нужна не сортировка.

Простыми словами нужно получить строку на подобии: "qwe-white:10,black:10,green:20"

В итоге я получаю при клике на qwe блок цветов только для типа qwe, при клике по цвету white, блок размеров только для qwe и white. Так понятнее? :) Пардон если не совсем корректно описываю задачу, затрудняюсь изложить профессиональными терминами.
Invis1ble
Я примерно понял задачу, и скорее всего лучше ее решать с помощью отдельных ajax-запросов с выборкой из БД по условию (обычный WHERE).

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.