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 » » Объектно-ориентированное программирование » Создание сложной формы для создания ассортимента

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

1. 3d_killer - 13 Апреля, 2016 - 10:36:39 - перейти к сообщению
Добрый день, при написании интернет магазина, застопорился на добавлении ассортимента товара, необходимо что бы ассортимент создался автоматически по выставленным параметрам
то есть например цвет красный и синий, размер 43 и 44 создастся должны
красный 43
красный 44
синий 43
синий 44
(это самый самый примитивный пример как это сделать я знаю), проблема в том что одно свойство у товара может принимать несколько значений, то есть мне необходимо добавить типо сетов которые будут участвовать в товарах (сами свойства имеют уникальное имя на английском для добавления на форму)
то есть
CODE (html):
скопировать код в буфер обмена
  1. name="prop_size[]" value=""

это пример добавления сета в таком виде легко принять и разобрать такую форму, но если я добавляю еще один то свойства придут уже кучей которую не разобрать.
свойства и сеты добавляются JS
Вот на скрине не хватает только сейчас кнопки добавить сет, кнопка 1 добавляет еще вариант размера, кнопка 2 добавляет размер если в списке его не существует.
Добавление происходит простым клонирование элемента.
Вопрос в том как добавить еще одну или 2 строки размера чтобы их реально было принять массивом типа
размер = array(
0=>array(размер 1, размер 2.....),
1=>array(размер 1, размер 2.....),
2=>array(размер 1, размер 2.....)

)
(Добавление)
чтобы не возникло вопроса зачем в товаре несколько размеров в одну разновидность добавлять, сразу объясню
Свойство размер я привел для примера в управлении можно создавать любые свойства, конкретно про размеру то для малышей один товар может подходить для 3,6,9 месяцев, и оно должно вписано быть в разновидность для правильности работы фильтра
2. armancho7777777 - 13 Апреля, 2016 - 10:53:22 - перейти к сообщению
3. 3d_killer - 13 Апреля, 2016 - 10:57:01 - перейти к сообщению
ага, но как сие представить на форме
(Добавление)
все это войдет в состав отсылаемых данных
то есть если мне просто добавлять
сет 1
name="prop_size[]" value="1"
name="prop_size[]" value="2"
name="prop_size[]" value="3"
сет 2
name="prop_size[]" value="2"
name="prop_size[]" value="3"

то мне прилетит то что правильно не разберешь
(Добавление)
не пробовал конечно, но может быть нужно что то типо:
сет 1
name="prop_size[1][]" value="1"
name="prop_size[1][]" value="2"
name="prop_size[1][]" value="3"
сет 2
name="prop_size[2][]" value="2"
name="prop_size[2][]" value="3"
4. armancho7777777 - 13 Апреля, 2016 - 11:02:07 - перейти к сообщению
Там же есть свойства товара: цвет, размер.
Объедините в группу с возможностью добавления дополнительных групп.

-------------------------+ [+]
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------+
5. 3d_killer - 13 Апреля, 2016 - 11:06:08 - перейти к сообщению
я не пойму как это написать на форме, все действие происходит в форме, при нажатии кнопки добавить происходит serialize() формы и она отправляется на сервер
6. armancho7777777 - 13 Апреля, 2016 - 11:08:33 - перейти к сообщению
Я вам всё на пальцах расписал.
Не знаю, как ещё объяснить.
То, что я нарисовал - это типа та часть формы, где эти свойства сгруппированы в строки и рядом кнопка "+" (добавить ещё).
При клике добавляется дополнительная группа с аналогичными полями.
7. 3d_killer - 13 Апреля, 2016 - 11:10:43 - перейти к сообщению
Не могли бы показать пример HTML кода
8. armancho7777777 - 13 Апреля, 2016 - 11:12:57 - перейти к сообщению
3d_killer пишет:
Не могли бы показать пример HTML кода

Ну вот мне делать нечего, верстать вам форму и JS писать.

Возьмите пощупайте готовое решение, прежде чем велосипедить.
OpenCart например.
Там модуль такой был, не помню как назывался.
Переписывал обработку/вывод,
т.к. тот быдлокодер повтыкал 20-25 вложенных итераций (наперед), не зная как сделать правильно.
9. 3d_killer - 13 Апреля, 2016 - 11:16:38 - перейти к сообщению
просто может у вас ссылка например была что за группировка такая, ни разу не видел, писать за меня не надо естественно.
10. armancho7777777 - 13 Апреля, 2016 - 11:20:53 - перейти к сообщению
11. 3d_killer - 13 Апреля, 2016 - 11:29:34 - перейти к сообщению
вобщем попробовал так:
CODE (html):
скопировать код в буфер обмена
  1. <input name='asdfsdfd[1][]' value=''>
  2. <input name='asdfsdfd[1][]' value=''>
  3. <input name='asdfsdfd[2][]' value=''>
  4. <input name='asdfsdfd[2][]' value=''>
  5. <input name='asdfsdfd[2][]' value=''>

приходят данные которые можно разбирать, так что осталось написать JS
12. armancho7777777 - 13 Апреля, 2016 - 11:29:52 - перейти к сообщению
3d_killer пишет:
то мне прилетит то что правильно не разберешь
(Добавление)
не пробовал конечно, но может быть нужно что то типо:
сет 1
name="prop_size[1][]" value="1"


product[size][] product[color][] product[price][]
product[size][] product[color][] product[price][]
product[size][] product[color][] product[price][]
product[size][] product[color][] product[price][]
product[size][] product[color][] product[price][]

Получите массив:

CODE (text):
скопировать код в буфер обмена
  1. product => [
  2.      size => [0 => 20, 1 => 25, 2 => 34],
  3.      color => [0 => 'red', 1 => 'green', 2 => 'blur'],
  4.      price => [0 => 100, 1 => 200, 2 => 300],
  5. ]
13. 3d_killer - 13 Апреля, 2016 - 11:32:31 - перейти к сообщению
armancho7777777 спасибо, далее разберусь
14. armancho7777777 - 13 Апреля, 2016 - 11:33:13 - перейти к сообщению
Не за что.
(Добавление)
Ладно, сейчас блок этот накидаю. Минуту...
(Добавление)
https://jsfiddle[dot]net/2at87sm9/6/
(Добавление)
Значения цветов и размеров - идентификаторы свойств из базы.
15. 3d_killer - 13 Апреля, 2016 - 12:20:53 - перейти к сообщению
Я уже понял как сделать, спасибо конечно, у меня все сложнее так как я же говорил, одного параметра в сете может быть несколько.
то есть как вы сделали размер можно выставить несколько значений, например
красный -> 3мес 6мес 9мес - это один товар
красный -> 6мес

 

Powered by ExBB FM 1.0 RC1