Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с построением массива (sql,php,smarty)
|
|||
|---|---|---|---|
|
#18+
День добрый! Вот застрял сегодня, буду рад если поможете! Начну с бд: Таблица: product id, name, shop_product_id, brand_id, category_id, subcategory_id, unit_value .... Таблица: shop_product id name //поясню: есть продукты с одинаковыми названиями, но разными размерами: product: id, name, shop_product_id 11, c4 (10l), 1 12, c4 (12l), 1 В таблице shop_product id, name 1 c4 Если в таблице shop_product имеется запись, то берем ее. Вот сам запрос: Код: plsql 1. 2. 3. 4. 5. 6. id brand_name nameshop_product_idunit_valueunitcategory_idubcategory_id1933 CELL A Performance 1095 339 grams 13 01521 CELL C4 914 180 grams 8 01522 CELL C4 914 360 grams 8 03923 CELL CLK (90) 0 90 capsules 20 02637 CELL Cor Performance (2lbs) 0 908 grams 1 1152638 CELL Cor Performance Whey (4lbs) 0 1800 grams 1 1151931 CELL Creatine Cor 1094 410 grams 4 45 Обрабатываю в php и отправляю в smarty. В html с помощью smarty нужно отобразить все уникальные по имени продукты, а с продуктами которые повторяються засунуть <select> Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ну вот как то так. Зарание благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2014, 21:20 |
|
||
|
Помогите с построением массива (sql,php,smarty)
|
|||
|---|---|---|---|
|
#18+
cossack, Рад бы помочь. Да вот метод решения задачи не помог понять саму задачу. Поясни пожалуйста, что в каждой таблице лежит (то есть что за данные в shop_product и в product, и в чём их смысловое отличие). А потом ещё что требуется в итоге получить (например, получить выборку всех продуктов, которые купили на сайте...). Тогда с удовольствием помозгую над задачей ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 01:14 |
|
||
|
Помогите с построением массива (sql,php,smarty)
|
|||
|---|---|---|---|
|
#18+
Програмёр, В таблице product лежит вся инфо о продукте. id,name, shop_product_id, category_id_subcategory_id, price_brutto, price_netto, image, unit .... Есть таблица shop_product. В ней обрезанное имя продукта, если такова имеется. К примеру продукты с именем; с4 (10литров),с4 (15 литров) ---разные продукты с разными id и ценами. У них, если есть shop_product_id, будет в таблице shop_product такой вариант имени: c4 product: idnameshop_product_idunit_valueunit1с4 (10литров)2180грамм2с4 (15 литров)2360грамм shop_product: idname2с4 У каждого продукта есть своя марка (brand_id),категория (category_id), возможно и подкатегория (subcategory_id) Есть еще и таблица со вкусами продукта (я ее не описывал) flavour; idnameproduct_idstock1banan1232ananas1155 В итоге нужно вывести: список продуктов (к примеру марки с номером 51) с image и ценой. Если есть одинаковый shop_product_id выводим один, а остальные в <select> в виде unit_value,unit; если есть разные вкусы к непоредственно данному продукту, то предлагаем выбрать их также с помощью <select> После sql запроса(смотри выше) мы видем, что продукты с id 1521,1522 имеют одинаковый shop_product_id => мы вывод один из них, к примеру первый продукт (180 грамм), но при этом предлагаем на выбор и 360 грамм: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Я в php обрабатываю так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. в html Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. вариант с перезаписыванием меня не устраевает. Если будут еще вопросы, постораюсь подробно ответить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 03:45 |
|
||
|
Помогите с построением массива (sql,php,smarty)
|
|||
|---|---|---|---|
|
#18+
cossack, В идеале, это не товар с категориями и подкатегориями... А товар с котегориями, под-категориями и группами. Группы - ну это под-под-категории :). Всё кроме непосредственно товаров хранится в одной таблице, а товары - в другой (это идеально в моём видении, но возможно есть что-то чего я не знаю или не учёл) Учитывая, что система уже как я понимаю построена, рассмотрим "не идеальные" варианты: то есть у нас есть таблица групп (shop_product) и таблица товаров (product). Нам надо вывести товары по группам, при чём не каждый из товаров принадлежит к некой группе. Запрос будет выглядеть так: Код: sql 1. 2. 3. 4. 5. 6. 7. Как я понял по задумке, продукты одной группы (из shop_product) не могут принадлежать к нескольким брэндам... А потому, мы имеем чёткую сортировку продуктов по их группам... теперь соберём из этого массив: Код: php 1. 2. 3. 4. 5. 6. Если нигде не ошибся, на выходе получим массив, разделённый по группам товаров. Вот теперь в смарти проверяем, если в массиве больше одного элемента - толкаем его в селект... если 1 - то просто показываем (он уникальный в пределах своей группы). имя группы и имя товара есть для каждого из них, потому так же по условию смотрим что нам надо вывести и выводим... P.S. только вот как оригинальный вариант должен был решать задачу я не понял. Во-первых, нету блока в смарти для вывода уникальных товаров (ну это ладно.. будем считать что это альфа версия скрипта :) ). Во-вторых, то, что в скрипте названо array (массив), реально таковым не является, так как всегда содержит в себе данные о последнем товаре!!! И ТОЛЬКО О НЁМ! В общем идею подал. Если что-то будет не понятно - пиши... всегда рад помочь ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 18:17 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=91&tid=1462978]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 367ms |

| 0 / 0 |
