Файл: upload/core/ajax/sort_section_handler.php
Строк: 27
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');
$id = intval($_POST['id']);
$sortType = $_POST['sort'] ?? 'default';
$orderParts = [];
// --- ТИП (как сортировка, НЕ фильтр) ---
if (str_contains($sortType, 'sale')) {
$orderParts[] = "CASE WHEN w.person_work = 1 THEN 0 ELSE 1 END DESC";
}
if (str_contains($sortType, 'order')) {
$orderParts[] = "CASE WHEN w.person_work = 2 THEN 0 ELSE 1 END DESC";
}
// --- РЕЙТИНГ ---
if (str_contains($sortType, 'rating_desc')) {
$orderParts[] = "avg_rating DESC";
}
if (str_contains($sortType, 'rating_asc')) {
$orderParts[] = "avg_rating ASC";
}
// --- ЦЕНА (исправлено, без alias!) ---
if (str_contains($sortType, 'price_asc')) {
$orderParts[] = "CAST(REPLACE(w.cena_work, ' ', '') AS DECIMAL) ASC";
}
if (str_contains($sortType, 'price_desc')) {
$orderParts[] = "CAST(REPLACE(w.cena_work, ' ', '') AS DECIMAL) DESC";
}
// если ничего не выбрано
if (empty($orderParts)) {
$orderParts[] = "w.id DESC";
}
$order = implode(", ", $orderParts);
$q = dbquery("
SELECT
w.id,
CAST(REPLACE(w.cena_work, ' ', '') AS DECIMAL) AS price,
COALESCE(AVG(r.rating), 0) AS avg_rating
FROM works w
LEFT JOIN rating r ON r.k_work = w.id
WHERE w.subcategory = ?
GROUP BY w.id
ORDER BY $order
", [$id]);
$ids = [];
while ($row = FetchAssoc($q)) {
$ids[] = $row['id'];
}
echo implode(',', $ids);
?>