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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание сложной формы для создания ассортимента

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
3d_killer
Отправлено: 13 Апреля, 2016 - 10:36:39
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Добрый день, при написании интернет магазина, застопорился на добавлении ассортимента товара, необходимо что бы ассортимент создался автоматически по выставленным параметрам
то есть например цвет красный и синий, размер 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 месяцев, и оно должно вписано быть в разновидность для правильности работы фильтра
Прикреплено изображение (Нажмите для увеличения)
1.jpg

(Отредактировано автором: 13 Апреля, 2016 - 10:38:21)

 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 10:53:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Прямое или декартово произведение множеств (Cartesian product).

(Отредактировано автором: 13 Апреля, 2016 - 10:57:30)

 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 10:57:01
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




ага, но как сие представить на форме
(Добавление)
все это войдет в состав отсылаемых данных
то есть если мне просто добавлять
сет 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"
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 11:02:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Там же есть свойства товара: цвет, размер.
Объедините в группу с возможностью добавления дополнительных групп.

-------------------------+ [+]
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------|
{ цвет[] | размер[] } |
-------------------------+

(Отредактировано автором: 13 Апреля, 2016 - 11:06:12)

 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 11:06:08
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




я не пойму как это написать на форме, все действие происходит в форме, при нажатии кнопки добавить происходит serialize() формы и она отправляется на сервер
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 11:08:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Я вам всё на пальцах расписал.
Не знаю, как ещё объяснить.
То, что я нарисовал - это типа та часть формы, где эти свойства сгруппированы в строки и рядом кнопка "+" (добавить ещё).
При клике добавляется дополнительная группа с аналогичными полями.
 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 11:10:43
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Не могли бы показать пример HTML кода
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 11:12:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




3d_killer пишет:
Не могли бы показать пример HTML кода

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

Возьмите пощупайте готовое решение, прежде чем велосипедить.
OpenCart например.
Там модуль такой был, не помню как назывался.
Переписывал обработку/вывод,
т.к. тот быдлокодер повтыкал 20-25 вложенных итераций (наперед), не зная как сделать правильно.

(Отредактировано автором: 13 Апреля, 2016 - 11:14:32)

 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 11:16:38
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




просто может у вас ссылка например была что за группировка такая, ни разу не видел, писать за меня не надо естественно.
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 11:20:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Не тот, но похож:
http://www[dot]opencart[dot]com/index[dot]ph[dot][dot][dot]rch=combinations
(Добавление)
И ещё куча разных:
http://www[dot]opencart[dot]com/index[dot]ph[dot][dot][dot]rch=combinations

(Отредактировано автором: 13 Апреля, 2016 - 11:23:15)

 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 11:29:34
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




вобщем попробовал так:
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

(Отредактировано автором: 13 Апреля, 2016 - 11:30:34)

 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 11:29:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




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 Апреля, 2016 - 11:35:09)

 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 11:32:31
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




armancho7777777 спасибо, далее разберусь
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 13 Апреля, 2016 - 11:33:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Не за что.
(Добавление)
Ладно, сейчас блок этот накидаю. Минуту...
(Добавление)
https://jsfiddle[dot]net/2at87sm9/6/
(Добавление)
Значения цветов и размеров - идентификаторы свойств из базы.

(Отредактировано автором: 13 Апреля, 2016 - 12:17:56)

 
 Top
3d_killer
Отправлено: 13 Апреля, 2016 - 12:20:53
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Я уже понял как сделать, спасибо конечно, у меня все сложнее так как я же говорил, одного параметра в сете может быть несколько.
то есть как вы сделали размер можно выставить несколько значений, например
красный -> 3мес 6мес 9мес - это один товар
красный -> 6мес
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB