Здравствуйте. Задача следующая: Реализовать создание Групп, в каждой Группе реализовать возможность создания полей(характеристик). После реализовать добавление товара, при добавлении товара выбираем ему ранее созданные характеристики из Групп, и задаем им значения.
Вопрос: Каким образом реализовать это, если учесть что для всего этого нужен будет фильтр, который должен будет отбирать товары по заданным параметрам, по созданным характеристикам.
Пример фильтра:
На мой взгляд вся сложность в том что заранее не определено сколько будет полей характеристик, так как они создаются через админку, поэтому не могу заранее построить запрос к базе.
Можно начать примерно с такой модели. В админке при добавлении новой группы товаров задаем им требуемые виды характеристик. Поле "тип" может принимать значения, например, "строка", "число","перечислимый". Его можно сделать например типа ENUM или числом и добавить еще таблицу с названиями этих типов. Или использовать некие кодовые обозначения, удобные программе. Для перечислимых типов в одноименной таблице заводим возможные значения параметра, на основе них будут формироваться выпадающие списки вроде "тип двигателя".
При добавлении товара выбираем и предлагаем задать все виды характеристик, определенные для данной группы товаров. С тем как хранить возможные значения есть варианты: можно в виде строки в единственное поле "Значение" (таблицы "Значения характеристик"), можно завести несколько колонок в зависимости от типа: строка, число или ссылка на ID перечислимого типа. Смотрите как вам удобнее.
Ссылочную целостность правда поддерживать на уровне БД можно только триггерами, могут потребоваться проверки, что бы к товару было невозможно добавить характеристики не его группы. И в случае единственного поля под значение контролировать для перечислимых типов, что в поле id существующей записи из таблицы перечислимых типов. А так же обеспечить невозможность удаления записи перечислимого типа, если она используется в каких то товарах.
Модель может дополнительно усложняться, появляться связующие таблицы, если например вы захотите возможность относить товар сразу к нескольким группам или, например, есть некие общие характеристики для нескольких групп и их хотелось бы оставить именно общими, что бы например была возможность выбрать все товары весом более тонны из всех групп.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеКак написать PHP-скрипт, который будет "заходить" в панель, переходить в Network, брать ссылку и парсить ее?