Answer the question
In order to leave comments, you need to log in
Sorted catalog: how to solve the problem with sorted output?
I create a catalog of computer equipment with filters. All filters are pre-parsed and everything you need is in the SQL database.
I decided to make the selection of goods using Ajax for faster loading of the site. for example, a person went to the site, the page loaded quickly, then a beautiful animation that the goods are loading, at this time a request to the Class, and it returns json of the product category, using the jQuery .append () method I add to the site.
Everything looks like this.
Next comes the checkbox.
When choosing values, let's say you clicked ASUS, the page sends an Ajax request to the server, in the same place these parameters are saved in
$_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(); // вот тут готовый Массив с товарами
}
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;
}
// и тут если это новое значение
}
}
Answer the question
In order to leave comments, you need to log in
if the attribute data is serialized in the base in the option table,
create a table with attributes:
attribute_id | product_id | attribute_name | attribute_value
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question