Создаю каталог компьютерной техники с фильтрами. Все фильтры заранее спарсены и все что необходимо есть в базе SQL.
Решил для более быстрой загрузки сайта, выборку товара делать по Ajax. например, человек зашел на сайт, страница быстренько загрузилась, потом красивая анимация что загружаются товары, в это время запрос к Классу, и он возврашает json категории товаров, с помошью jQuery метода .append() добавляю на сайт.
Все выглядит следуюшим образом.
Далее идут 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 условий нужно создавать?
Вот с такой проблемой столкнулся я и ночью не спал.
Кто чем поможет?