а кстати больше, меньше у меня будет только для цены =), и цена хранится отдельно ибо на моей платформе планируется гипермаркет и там будут торгавать всевозможными товарами
какую "эту инструкцию", покажи "эту инструкцию" )), если эту [property:[Вес]]100кг[/property], то конечно надо через PHP
Denis Т.е. выбирать все товары из "гипермаркета", и каждый средствами PHP парсить и проверять? Низачот. У тебя сервер опухнет.
На момент сравнивания ты будешь знать с каким товаром ты будешь сравнивать, то есть надо будет найти товар с такими же именами свойств
Denis А, ну если у вас так принято исправлять ошибки проектирования... Точно, даешь гипермаркет на 1000 товаров и 10 серверов. Каждому по 100 товаров, а то устанет
а почему это ошибка проектирования? только потому что тебе не понравилось =))) и всё. Ты же понимаешь что всё относительно
Denis Потому, что базы данных были созданы не только для хранения данных, но и для их поиска. Быстрого и экономного поиска. У тебя же поиск осуществляется исключительно средствами PHP, а перед этим нужна полная выборка всей таблицы, что не каждый сервер потянет. И как ты уже сам заметил, твой алгоритм способен только искать по точным значениям, а на практике чаще требуется поиск по диапазону, например, "объем чего-то там - от 2 до 5 л".
Denis http://php.ru/forum/viewtopic.php?p=125276#125276 Для вышеприведенных примеров запросы будут выглядеть примерно так: [sql]SELECT * FROM shop WHERE size<=100 AND smell=1 SELECT * FROM shop WHERE volume>=2 AND volume<=5[/sql]
[sql]SELECT _поля_какие_нужны_ FROM ( SELECT prop.itemID, prop.ord FROM (SELECT v.itemID, (@i:=if(@i is null,@i:=0, 1)+@i) AS ord, COUNT(DISTINCT v.fieldID) AS cnt FROM values AS v JOIN items AS i ON v.itemID=i.itemID WHERE ((v.fieldID=1 AND v.value=5) OR (v.fieldID=2 AND v.value=10)) AND i.date_add > '2008-01-01' GROUP BY v.itemID HAVING cnt=2 ) AS prop JOIN values AS v2 ON prop.itemID=v2.itemID WHERE v2.fieldID=3 ORDER BY v2.value DESC LIMIT 10 ) AS t JOIN items ON items.itemID=t.itemID JOIN values ON ... LEFT JOIN fields ON ... [/sql] Даже спецом нашёл, какие "красивые" запросы получаются http://phpclub.ru/talk/showthread.php?s ... hlight=EAV
Раз уж тут слинковали похапэклаб, позволю себе процитировать одну фразу оттуда, ибо все равно пригодится: И ссылочка на оригинал: http://www.sql.ru/articles/mssql/2006/0 ... uage.shtml P.S. Кстати, к этому +100500
И снова я. Есть разделы/подразделы/.../подразделы Как их выводить? Пока вижу 2 варианта: 1) у нас есть просто что-то типа ?m=category&id=1 - модуль категорий, идентификатор категории. Я могу задать свой выборочный шаблон на эту категорию, и у категории с id=2 вывод товаров будет не такой, как у категории с id=4. Например таблицы будут по-другому выглядеть. Ну и ессно page title, meta description, mete keywords будут свои для каждой категории. А что, если я хочу, что бы в категории с id=2 сверху, перед списком товаров выводился какой-то текст, а под этим списком я хочу добавить фотку своего кота? Да, можно создать выборочный шаблон, в котором ввести текст. Но наверно это не лучшее решение, особенно если сайт многоязычный. На выручку приходит второй вариант. 2) У нас есть что-то типа cms-ки. Мы создаем в ней структуру сайта: Код (Text): root |-о нас |-гарантии |-каталог товаров --|-Холодильники ----|-с 2 дверями ----|-с 4 ушами (*) --|-фритюрницы --|-Микроволновки ----|-гриль ----|-соло ----|-конвенкция --|-Бутербродницы Теперь я могу не только назначить выборочный шаблон/meta-теги/page title, но и полностью настроить вид страницы. Особое внимание стоит уделить следующему моменту: Посмотрим на категорию, отмеченную звездочкой - (*). Предположим, что мы хотим получить следующий вид страницы: Код (Text): блок-авторизация| какой-то текст |что-то еще |вывод этой категории| | фотка моего кота | Как нам сделать так, что бы выводились товары именно этой категории и именно в этом месте страницы? Можно сделать что-то типа HTML: <div id="aa"> <TPL_OBJECT:CAT> <TPL_SETTINGS:id('5')> <TPL_SETTINGS:viewType('какой-то параметр')> </TPL_OBJECT:CAT> </div> вышеуказанный кусок - это то, что хранится в базе для страницы под (*). TPL_OBJECT:CAT - вызывает объект категории, TPL_SETTINGS:id('5') - выводить только категорию с Id=5. Получается, что это те же самые шаблоны, только теперь они хранятся не на диске а в базе. И у нас будет некоторая избыточность: есть категория, у которой свои настройки мета-тегов, а есть страница, у которой они совсем другие. Мы создаем категорию, и попутно должны создать страницу на сайте - то есть по сути одно и то же делаем 2 раза. Оправдано ли это? Какой вариант выбрать: 1 или 2? Вообще нормально е ли явление, когда я из шаблоны вызываю какой-то объект, передаю ему какие-либо параметры? Имхо это очень удобно.
Хех, Denis, это не вы случайно PHPShop пишите? А то как раз сегодня читал «при запуске скрипта все товары из базы помещаются в глобальный массив, а затем, когда нужен определенный товар, он брался из этого массива»