Задать вопрос

Каталог с сортировкой: как решить проблему при выводе с сортировкой?

Создаю каталог компьютерной техники с фильтрами. Все фильтры заранее спарсены и все что необходимо есть в базе SQL.
Решил для более быстрой загрузки сайта, выборку товара делать по Ajax. например, человек зашел на сайт, страница быстренько загрузилась, потом красивая анимация что загружаются товары, в это время запрос к Классу, и он возврашает json категории товаров, с помошью jQuery метода .append() добавляю на сайт.
Все выглядит следуюшим образом.
ea41fb35a267.png

Далее идут checkbox.
При выборе значений, допустим нажали ASUS, страница отправляет Ajax запрос к серверу, там же эти параметры сохраняются в
$_SESSION['sorted_string'] = array(
    'Производитель' => array('ASUS','ZOTAC')
);

и с этими параметрами класс этот для выборки товаров

protected function sql (){
        self::$sql->where('*','catalog'); // составляем запрос типа SELECT * FROM catalog
        self::$sql->join('options','catalog.art','options.art'); // объеденяем таблицы в одно
        self::$sql->add('catalog_3',self::$catalog); // условие WHERE catalog_3 = Видеокарты
        self::$sql->add('price','0','!='); // фильтруем без ценника
        self::$sql->add('avail','0','!='); // фильтруем отсутствующие
        self::sql_sort();  // ОБРАТИТЕ ВНИМАНИЕ на этот метод
        self::$sql->query();  
        self::sorted_data(); // ASC или DESC
        self::$sql->limit(self::$start,self::$num);  // организовать пагинатор
        self::$sql->query();  
        self::$res = self::$sql->arr(); // вот тут готовый Массив с товарами 

    }


собственно вопрос, имея полученные значения типа name=>value как сортировать запрос если данные атрибутов находятся сериализованные в базе в таблице option, при выборке и унсериализации массив выглядит следуюшим образом
array (
  'Цена' => '26.7',
  'Производитель' => 'PALIT',
  'Графический процессор' => 'nVidia GeForce 210',
  'Частота графического процессора' => 589,
  'Объем видеопамяти' => 512,
  'Тип видеопамяти' => 'DDR3',
  'Частота видеопамяти' => 625,
  'Разрядность шины видеопамяти' => 32,
  'Интерфейс' => 'PCI-E 2.0',
  'Система охлаждения' => 'активное',
  'Особенности' => 
  array (
    0 => 'Разъем DVI',
    1 => 'Разъем VGA',
    2 => 'Разъем HDMI',
  ),
)


и сам метод для сортировки
protected function sql_sort (){
        if (self::$ajax_start){
            if(empty(self::$ajax_name) and empty(self::$ajax_value)){return;}
            if (isset($_SESSION['sorted_string'])){
                if (!in_array(self::$ajax_value,$_SESSION['sorted_string'])){
                    $_SESSION['sorted_string'][] = self::$ajax_value;
                }
                foreach ($_SESSION['sorted_string'] as $el){
                     // вот тут нужно сортировать 
                }
            }else{
                $_SESSION['sorted_string'][] = self::$ajax_value;
            }
            // и тут если это новое значение
        }
    }


Т.е проблема в том что есть массив параметров в $_SESSION , по которым нужно сортировать все это, но перед сортировку нужно запрос совершить для ПОЛУЧЕНИЯ МАССИВА ПАРАМЕТРОВ с option, это раз запрос, потом обрабатывать каждый товар из категории и смотреть есть ли в его массиве значение соответствуюшее.
И допустим у нас есть 100 товаро подходяшие. Но как их в SQL ввести то, это 100 условий нужно создавать?

Вот с такой проблемой столкнулся я и ночью не спал.

Кто чем поможет?
  • Вопрос задан
  • 3126 просмотров
Подписаться 3 Комментировать
Подписчики вопроса 3 К ответам на вопрос (3)