Нужно посчитать сколько слушателей на форме и на кнопке submit. Обычно двоится, троится, и т.д. событие, когда элементы создаются динамически вместе со слушателями, а прежние слушатели не уничтожаются.
Посмотри в заголовках что отправляешь. Тип данных должен соответствовать тому что получаешь. Ты хочешь получить данные формы, а отправляешь url encoded. Либо в заголовках укажи что отправляешь, либо сделай FormData и сериализуй поля в неё.
Если у модели поле color = enum, то можно в одной таблице, если set - тут без второй таблицы не обойтись.
А вообще пох. Это соцопрос, что ли? Блаженных подсчитываете?
А нужно ли?
Если что, вся конструкция на локальном сервере не должна отличаться от того же что и на удалённом. Исключения составляют локальные конфиги для настроек почты и БД, они потому что разные для разных серверов, и потому в гите сразу в гитигнор записаны.
Роман, Таким образом простых проектов не получится, только голова зас... захламится, и всякое желание пропадёт. Лучше взять нормальный фреймворк, и на нём MVC приложение делать, сосредоточившись на разработке, а не на мыслях "как мне понять то что я не понимаю".