Skip to content
This repository was archived by the owner on Feb 24, 2025. It is now read-only.

Commit

Permalink
Сделана полностью комбинация фильров, категорий, сортировок; сделан п…
Browse files Browse the repository at this point in the history
…росмотр постранично
  • Loading branch information
K1rsN7 committed Oct 29, 2024
1 parent 08ba108 commit d1b27a3
Show file tree
Hide file tree
Showing 5 changed files with 224 additions and 88 deletions.
90 changes: 79 additions & 11 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,9 @@ function divideWithRemainder($a, $b) {
return $result;
}


$sql_text=$_SESSION['sql_zap_product'];
$sql_product=$link->query($sql_text);
$sql_product_count=(int)$link->query("SELECT COUNT(*) FROM ($sql_text) AS subquery");
$sql_product_count=$link->query("SELECT COUNT(*) FROM ($sql_text) AS subquery")->fetch_row()[0];
$sql_brands=$link->query("SELECT subquery.id_brand, subquery.name_brand, subquery.image_brand, COUNT(subquery.id_product) as count FROM ($sql_text) AS subquery GROUP BY subquery.id_brand, subquery.name_brand, subquery.image_brand");
$sql_delivery=$link->query("SELECT subquery.delivery_days, COUNT(subquery.id_product) as count FROM ($sql_text) AS subquery GROUP BY subquery.delivery_days");
$sql_min_price=$link->query("SELECT MIN(subquery.price) FROM ($sql_text) AS subquery");
Expand All @@ -45,12 +44,47 @@ function divideWithRemainder($a, $b) {
require('./shop.php');
}
elseif ($page=='sort'){
if ($_GET['count_products_on_page']) $_SESSION["count_products_on_page"] = $_GET['count_products_on_page'];
$_SESSION['count_products_on_page'];
$id_sort = $_GET['id_sort'];
$id_cat = $_GET['id_cat'];
if (isset($_GET['count_products_on_page'])) {
$_SESSION["count_products_on_page"] = $_GET['count_products_on_page'];
}

$id_sort = $_GET['id_sort'] ?? null; // Используем оператор объединения с null для безопасного получения значения
$id_cat = $_GET['id_cat'] ?? null; // То же самое здесь
$request = $_SESSION['sql_zap_product'];
if ($id_cat) $request .= " WHERE c.id_category = '$id_cat'";

// Проверка на наличие категории
if (!empty($id_cat)) {
$request .= " WHERE c.id_category = '$id_cat'";
}
$sql_brands = $link->query("SELECT subquery.id_brand, subquery.name_brand, subquery.image_brand, COUNT(subquery.id_product) as count FROM ($request) AS subquery GROUP BY subquery.id_brand, subquery.name_brand, subquery.image_brand ORDER BY subquery.name_brand");
$sql_delivery=$link->query("SELECT subquery.delivery_days, COUNT(subquery.id_product) as count FROM ($request) AS subquery GROUP BY subquery.delivery_days ORDER BY subquery.delivery_days");

if (isset($_GET['d_c_d']) && is_array($_GET['d_c_d'])) {
$selected_delivery_days = $_GET['d_c_d'];
$values = implode(', ', array_map('intval', $selected_delivery_days)); // Приводим к целым числам

// Если уже есть условие WHERE, добавляем AND, иначе - WHERE
if (!empty($id_cat)) {
$request .= " AND p.delivery_days IN ($values)";
} else {
$request .= " WHERE p.delivery_days IN ($values)";
}
}
if (isset($_GET['b_ids']) && is_array($_GET['b_ids'])) {
$selected_brands = array_filter($_GET['b_ids'], 'is_numeric'); // Фильтруем только числовые значения

if (!empty($selected_brands)) {
$brand_values = implode(',', array_map('intval', $selected_brands)); // Приводим к целым числам

// Если уже есть условие WHERE, добавляем AND, иначе - WHERE
if (!empty($id_cat) || !empty($selected_delivery_days)) {
$request .= " AND p.id_brand IN ($brand_values)";
} else {
$request .= " WHERE p.id_brand IN ($brand_values)";
}
}
}
// Обработка выбранных дней доставки
switch ($id_sort){
case '1':
$request .= " ORDER BY p.name_product ASC";
Expand All @@ -65,11 +99,10 @@ function divideWithRemainder($a, $b) {
$request .= " ORDER BY p.price DESC";
break;
}

$sql_product=$link->query($request);
$sql_product_count=(int)$link->query("SELECT COUNT(*) FROM ($request) AS subquery");
$sql_brands = $link->query("SELECT subquery.id_brand, subquery.name_brand, subquery.image_brand, COUNT(subquery.id_product) as count FROM ($request) AS subquery GROUP BY subquery.id_brand, subquery.name_brand, subquery.image_brand");
$sql_delivery=$link->query("SELECT subquery.delivery_days, COUNT(subquery.id_product) as count FROM ($request) AS subquery GROUP BY subquery.delivery_days");
$total_pages = divideWithRemainder($sql_product_count, $_SESSION["count_products_on_page"]);
$sql_product_count=(int)$link->query("SELECT COUNT(*) FROM ($request) AS subquery")->fetch_row()[0];
$total_pages = (int)divideWithRemainder($sql_product_count, $_SESSION["count_products_on_page"]);
require('./shop.php');
}
if ($sql_product) {
Expand All @@ -78,4 +111,39 @@ function divideWithRemainder($a, $b) {

require('./footer.php');


function buildUrl() {
// Собираем параметры для URL
$params = [
'page' => 'sort', // Указываем страницу
'count_products_on_page' => $_SESSION["count_products_on_page"], // Количество продуктов на странице
];

if (isset($_GET['id_cat']) && $_GET['id_cat'] !== '') {
$params['id_cat'] = $_GET['id_cat'];
}

if (isset($_GET['id_sort']) && $_GET['id_sort'] !== '') {
$params['id_sort'] = $_GET['id_sort'];
}

if (isset($_GET['d_c_d'])) {
foreach ($_GET['d_c_d'] as $day) {
$params['d_c_d'][] = $day; // Добавляем массив значений
}
}

if (isset($_GET['b_ids'])) {
foreach ($_GET['b_ids'] as $brand) {
$params['b_ids'][] = $brand; // Добавляем массив значений
}
}

$query_string = http_build_query($params);
$href = "index.php?&" . $query_string;

// Формируем строку запроса
return $href;
}

?>
2 changes: 1 addition & 1 deletion js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ $(document).ready(function(){
$(".fullscreen").css("height", window_height)
$(".fitscreen").css("height", fitscreen);

//------- Active Nice Select --------//
//------- Active Nice .filter-barelect --------//

$('select').niceSelect();

Expand Down
3 changes: 1 addition & 2 deletions scss/theme/_common.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@


.load-product {
display: none;
}
Expand Down Expand Up @@ -1372,7 +1371,7 @@
.sidebar-categories {
.head {
line-height: 60px;
background: $primary-color3;;
background: $primary-color3;
padding: 0 30px;
font-size: 16px;
font-weight: 400;
Expand Down
2 changes: 1 addition & 1 deletion scss/theme/_variables.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ $title-font : 'Poppins', sans-serif;

$primary-color : #3f73f6;
$primary-color2 : #0329F0;
$primary-color3 : #828bb3;
$primary-color3 : #5368ac;
$title-color : #222222;
$text-color : #777777;
$baseColor: #c5322d;
Expand Down
Loading

0 comments on commit d1b27a3

Please sign in to comment.