Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 27.01.2021, 07:54   #1
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию Проблемы с сортировкой товаров в каталоге товаров

Доброго времени суток. Помогите решить проблему такого рода. Каталог товаров размещен не на главной странице сайта. Она подключена с помощью следующего кода:
<?php
$route = $_GET['route'];
require 'templates/header.php';
switch ($route) {
case '':
require 'templates/main.php';
break;
case 'main.php':
require 'templates/main.php';
break;
case 'catalog.php':
require 'templates/catalog.php';
break;
?>
На данной странице реализую сортировку товаров в блоке сортировки:
<div class="option-list-sorting">
<div class="inner-option-list-sorting">
<ul id="main-sorting-list">
<li>Сортировать:</li>
<li><a id="select-sort"><?php echo $sort_name;?></a>
<ul id="sorting-list">
<li><a href="catalog.php?sort=index.php?pr ice-asc">От дешевых к дорогим</a></li>
<li><a href="catalog.php?sort=index.php?pr ice-desc">От дорогих к дешевым</a></li>
<li><a href="catalog.php?sort=index.php?po pular">Популярное</a></li>
<li><a href="catalog.php?sort=index.php?ne ws">Новинки</a></li>
<li><a href="catalog.php?sort=index.php?br and">От А до Я</a></li>
</ul>
</li>
</ul>
</div>
</div>
Данный скрипт с сортировкой подключен к индексной странице:<?php
include 'include/db_connect.php';

$sorting = $_GET["sort"];

switch ($sorting)
{
case 'price-asc';
$sorting = 'price ASC';
$sort_name = 'От дешевых к дорогим';
break;
case 'price-desc';
$sorting = 'price DESC';
$sort_name = 'От дорогих к дешевым';
break;

case 'popular';
$sorting = 'count DESC';
$sort_name = 'Популярное';
break;

case 'news';
$sorting = 'datetime DESC';
$sort_name = 'Новинки';
break;

case 'brand';
$sorting = 'brand';
$sort_name = 'От А до Я';
break;

default:
$sorting = 'products_id DESC';
$sort_name = 'Нет сортировки';
break;
}
?>
Сам блок с товарами подключен к БД корректно. <?php
$result = @mysql_query("SELECT * FROM table_products WHERE visible='1' ORDER BY $sorting",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
if ($row["image"] != "" && file_exists("./img/goods/".$row["image"]))//при переносе в интернет точку из пути к файлу изображения убрать
{
$img_path = './img/goods/'.$row["image"];//тоже самое с точкой в пути
$max_width = 148;
$max_height = 148;
list($width, $height) = getimagesize($img_path);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh,$ratiow);
$width = intval($ratio*$width);
$height = intval($ratio*$height);
} else
{
$img_path = "img/no-image.png";
$width = 148;
$height = 148;
}

echo '
<div class="items">
<div class="inner-items">
<div class="block-images-grid">
<img class="imagegoods" src="'.$img_path.'"" minwidth="'.$width.'" minheight="'.$height.'">
</div>
<div class="reviews-and-count-grid">
<div class="inner-reviews-and-count-grid">
<div class="img-eye">
<div class="inner-img-eye">
<img src="./img/eye-icon.png">
<p>0</p>
</div>
</div>
<div class="img-comment">
<div class="inner-img-comment">
<img src="img/comment-icon.png"><p>0</p>
</div>
</div>
</div>
</div>
<p class="name"><a href="">'.$row["title"].'</a></p>
<p class="mini-features"><a href="">'.$row["mini_features"].'</a></p>
<p class="price">Цена:'.$row["price"].'<span>руб.</span></p>
<button class="add-to-cart">В корзину</button>
</div>
</div>
';
}
while ($row = mysql_fetch_array($result));
}
?>
Вопрос: при подключении блока с товарами на индексной станице все корректно сортируется. Как только переношу на другую страницу - Судя по всему, скрипт как-то обрабатывается, но товары не сортируются. Все скрипты вроде подключены корректно. Думаю, что проблема в пути вот в этом месте блока сортировки: <li><a href="catalog.php?sort=index.php?pr ice-asc">От дешевых к дорогим</a></li> Может, надо указать другой путь, если страница подключена с помощью $route = $_GET['route'];? Помогите разобраться по-возможности, пожалуйста.
artsyman вне форума Ответить с цитированием
Старый 27.01.2021, 09:18   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,099
По умолчанию

смотрели что в GET
Код:
var_dump($_GET);
Цитата:
Сообщение от artsyman Посмотреть сообщение
$_GET["sort"];
может нет там условий для работы switch'a $sorting?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.01.2021, 11:20   #3
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию

Когда делаю страницу каталог главной-все работает. И выдает

array(1) { ["sort"]=> string(10) "price-desc" и товары сортирует.
Когда каталог с товарами не на главной странице - выдает array(1) { ["route"]=> string(12) "catalog.php" } и сортировки нет. Так вот а каким образом надо прописать условия для работы switch'a $sorting?
artsyman вне форума Ответить с цитированием
Старый 27.01.2021, 11:44   #4
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию

Я же вроде написал:
<?php
$sorting = $_GET["sort"];

switch($sorting)
{
case ' price-asc';
$sorting = 'price ASC';
$sort_name = 'От дешевых к дорогим';
break;

case 'price-desc';
$sorting = 'price DESC';
$sort_name = 'От дорогих к дешевым';
break;

case 'popular';
$sorting = 'count DESC';
$sort_name = 'Популярное';
break;

case 'news';
$sorting = 'datetime DESC';
$sort_name = 'Новинки';
break;

case 'brand';
$sorting = 'brand';
$sort_name = 'От А до Я';
break;

default:
$sorting = 'products_id DESC';
$sort_name = 'Нет сортировки';
break;
}
?>
artsyman вне форума Ответить с цитированием
Старый 27.01.2021, 11:45   #5
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию

Но работает это, почему-то, только на главной странице
artsyman вне форума Ответить с цитированием
Старый 27.01.2021, 12:26   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,099
По умолчанию

1) на главной странице, рабочей, какой путь в href в ?
Код:
<ul id="sorting-list">
<li><a href="catalog.php?sort=index.php?pr ice-asc">От дешевых к дорогим</a></li>


2) пробовали заменить
Код:
<a href="catalog.php?sort=index.php?pr ice-asc">
на
Код:
<a href="catalog.php/sort=price-asc">
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 27.01.2021, 16:09   #7
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию

Пробовал. В таком случае открывает страницу array(1) { ["route"]=> string(28) "catalog.php/sort=price-desc" } как отдельную. Соответственно слетают все стили, а каталог вообще не выводится

Последний раз редактировалось artsyman; 28.01.2021 в 12:37.
artsyman вне форума Ответить с цитированием
Старый 28.01.2021, 12:34   #8
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию

<ul id="main-sorting-list">
<li>Сортировать:</li>
<li><a id="select-sort"><?php echo $sort_name;?></a>
<ul id="sorting-list">
<li><a href="catalog.php?sort=price-asc">От дешевых к дорогим</a></li>
<li><a href="catalog.php?sort=price-desc">От дорогих к дешевым</a></li>
<li><a href="catalog.php?sort=popular">Поп улярное</a></li>
<li><a href="catalog.php?sort=news">Новинк и</a></li>
<li><a href="catalog.php?sort=brand">От А до Я</a></li>
</ul>
</li>
</ul>
artsyman вне форума Ответить с цитированием
Старый 28.01.2021, 16:07   #9
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 3,759
По умолчанию

Код:
<li><a href="/catalog.php?sort=brand">От А до Я</a></li>
ADSoft вне форума Ответить с цитированием
Старый 28.01.2021, 21:11   #10
artsyman
Пользователь
 
Регистрация: 27.01.2021
Сообщений: 13
По умолчанию

Да пробовал я уже и так и так - не получается. И не могу понять в чем косяк. Выдает array(1) { ["route"]=> string(12) "catalog.php" } Эту страницу с каталогом я подключил с помощью
<?php
//print_r($_GET);
$route = $_GET['route'];
//require 'templates/header.php';
switch ($route) {
case '':
require 'templates/main.php';
break;
case 'main.php':
require 'templates/main.php';
break;
case 'catalog':
require 'templates/catalog.php';
break;
?>
Вот array и выдает мне до catalog.php А сортировка не работает. Хоть и ее я тоже подключил тоже тут в catalog.php Кто знает, в чем может быть дело? Может дополнительно надо еще что прописать?
artsyman вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сканер штрих-кодов: поиск актуальной базы данных со штрихкодами товаров; проблемы с cv2.cv.CV_32F и параметром --image VolodyaBuzin Python 2 08.02.2020 13:36
Калькулятор товаров ник17 Общие вопросы по Java, Java SE, Kotlin 1 24.03.2015 16:40


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS