За последние 24 часа нас посетили 54025 программистов и 1797 роботов. Сейчас ищут 1155 программистов ...

Как реализовать характеристики как на яндекс маркете

Тема в разделе "Прочие вопросы по PHP", создана пользователем dobs, 1 янв 2010.

  1. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Всех с Новым Годом
    Интересуют варианты как можно реализовать подбор характеристик товара как на я.маркет, вот пример
    http://market.yandex.ua/guru.xml?CMD=-R ... hid=723087
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  3. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Ну ет само собой, я имею ввиду как бы мне хранить эти данные, чтоб потом можно было сдеть подбор характеристик для категории, и желательно чтоб это был универсальный метод (чтоб не точить БД под конкретную категорию)
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Что значит как хранить данные?
    Ничего нового не придумано. Точить БД таки придется.

    Все данные по которым нужен поиск должны быть в виде полей таблицы.
    Для описательных данных можешь сделать поля DESC1, DESC2, ...., DESCN
    Думаю, около 10-20 хватит на любой объект.

    Более расширенное атрибутирование можешь сделать при помощи EAV, но сам поиск и работа с этим будет зело неудобна в сравнении с обычными таблицами. Можешь сделать гибрид - основные свойства в полях, как я сказал, расширенные в таблицах EAV.
     
  5. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Чую что там 100% можно обойтись без заточки БД под каждую категорию, надо всего лишь найти способ как это все прописать и разделить.... ток вот хотелось бы заценить уже рабочий способ чтоб потом на камни не попасть...
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Верной дорогой идете товарищи (с) один человек с лысиной

    Продолжайте "чуять" и "заценивать", вместо того, чтобы читать то, что вам пишут.
    Вы обязательно попадете, туда куда не хотите.
     
  7. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Просто способ с
    Полный боян, все делается намного проще есть две таблички к примерку категория товара с текстовым полем и вторая табличка уже с самим товаром

    в категорию пишем примерно так
    Процессор::Оперативная память::Корпус
    Atom 330::2 Gb::2U

    Потом все спокойно парсим...
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    дибилизм.
     
  9. Да ну. Если у него там десять товаров в списке, почему б не сделать так?
    А если не десять, то значит те, кто заказал у него эту работу заплатят за свою жадность.

    Апофеоз справедливости, и спорить и доказывать никому ничего не надо ;)
     
  10. dobs

    dobs Активный пользователь

    С нами с:
    23 дек 2006
    Сообщения:
    145
    Симпатии:
    0
    Вай, да я не про товары а про характеристики товаров %)
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ну в принципе да - всегда выбираем все товары. А поиск производим уже средствами PHP.

    Уговорил.
     
  12. Ну, там можно будет подстроку искать ;)
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Есть у нас 3 свойства со статусом есть/нет.
    хранится это все как
    Код (Text):
    1. ...::есть::есть::нет
    2. ...::есть::нет::нет
    будем набирать полную строку поиска с учетом позиционности? вида:
    Код (Text):
    1. LIKE ...::%::есть::%
    2. LIKE ...::есть::%::нет
    Зело некошерно.
    А если добавится новое свойство для какого-то одного предмета? Будем апдейтить все записи, дабы сохранить структуру? Или будем переписывать все запросы поиска?

    Вариант с парсингом может пройти, для хранения нескольких id (которые, по-определению, уникальны) в строке. А это...
    Да, ну, нахрен. Пусть долбится об этот бред.
     
  14. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    если характеристик по поиску много и они все могут быть объектом поиска, я бы хранил данные в json-пакованном виде в innodb-таблицах для управления и в memory-таблицах для выборок. но, памяти понадобится порядочно)))
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    скажу боян, но в LegkoShop оно реализовано... Динамический каталог с любым кол-вом характеристик

    http://www.php.ru/forum/viewtopic.php?t=17288
     
  16. Ну так ты разве смайлик в моем сообщении не заметил? ;)
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    флоппик
    Да все нормально :)
     
  18. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    Гоните, товарищи.

    Делается таблица товаров, делается таблица фильтров, и делается таблица значений фильтров.

    К примеру, фильтр "Размер", значения фильтра - "большой", "маленький", "сердний" и т.п.

    И делается еще одна таблица связей товаров и значений фильтров. Таким образом к одному товару можно подключить безграничное количество значений фильтров.

    Для листинга товаров вытягиваете все связи, потом по полученным айдишкам вытягиваете все товары, значения фильтров и сами фильтры. Ну и там примененные фильтры, доступные товары по фильтрам и все такое.
     
  19. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Что-то ты навернул неудобоваримое для чтения-понимания.

    большой/маленький/средний - это фильтр для чего?

    Вот есть у меня два товара:
    автомобиль и фалоимитатор
    у автомобиля длина в метрах, у фалоимитатора в сантиметрах.

    Ну задал я искать "большой" и чего мне должно найти по твоему методу?

    Приколист однако.... Ты бы не выдумывал велосипеды...
    То что ты хочешь сделать с "значениями фильтров" - называется справочниками. Плюс EAV для хранения произвольного набора свойств у объекта.
    Обо всем этом ты можешь прочитать во 2м моем сообщении в данном топике.
     
  20. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    Simpliest
    Ты чутишь, или реально тупишь? Открой хотлайн и глянь на их фильтры, в яндексе тоже самое.
     
  21. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Из нас двоих тупит только один человек - тот кто апнул тему.

    Там показывается внутренняя структура БД? Где?

    Жгешь однако.
     
  22. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk