Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Дублирование товаров при сортировке "по умолчанию"


nickname

Recommended Posts

Добрый день. Версия ocstore_v1.5.4.1. Когда товаров больше чем на 1 страницу, то со 2ой страницы они начинают повторяться. Подобная тема уже была. Но код сортировке приведенный там (якобы это решение) в 1.5.4.1 точно такой. У кого была подобная проблема? И ещё, при сортировке по цене этот глюк пропадает.

Надіслати
Поділитися на інших сайтах


поставил каждому товару разный порядок сортировки, проблема вроде бы исчезла. такое поведение опенкарт это нормально? порядок сортировки всегда надо ставить разный у товаров?

Надіслати
Поділитися на інших сайтах


  • 1 year later...

Такая же ерунда ( Пока решил заменой кода выюорки в catalog/model/catalog/product.php на 



if (isset($data['order']) && ($data['order'] == 'DESC')) {
  $sql .= " DESC, LCASE(pd.name) DESC";
} else {
  $sql .= " ASC, LCASE(pd.name) ASC";
}

Теперь сортируется также по именам, потом буду думать как поступать дальше. Версия опенкарта - 1.5.1.3

Надіслати
Поділитися на інших сайтах


  • 2 years later...

Приподниму тему

SELECT SQL_CALC_FOUND_ROWS DISTINCT (
p.product_id
), p.sort_order
FROM oc_product_to_category p2c
LEFT JOIN oc_product p ON ( p2c.product_id = p.product_id )
LEFT JOIN oc_product_to_store p2s ON ( p.product_id = p2s.product_id )
WHERE p.status = '1'
AND p.date_available <= '2016-12-26 20:40:00'
AND p2s.store_id = '0'
AND p2c.category_id
IN ( 10 )
ORDER BY p.sort_order ASC
LIMIT 0 , 15

и далее

limit 15, 15

 

Не гарантирует однозначный порядок

 

Причина - реляционная база данных не гарантирует последовательность выборки.

 

Причем на некоторых серверах с порядком выборки нет проблем, а на некотрых выборка становится неуправляемой, в результат выборки, при "пагинации" может попасть товар, который уже был на предыдущей странице

 

Для гарантирования выборки нужен однозначный  ключ

 

Например

SELECT SQL_CALC_FOUND_ROWS DISTINCT (
p.product_id
), p.sort_order
FROM oc_product_to_category p2c
LEFT JOIN oc_product p ON ( p2c.product_id = p.product_id )
LEFT JOIN oc_product_to_store p2s ON ( p.product_id = p2s.product_id )
WHERE p.status = '1'
AND p.date_available <= '2016-12-26 20:40:00'
AND p2s.store_id = '0'
AND p2c.category_id
IN ( 10 )
ORDER BY p.sort_order ASC, p.product_id
LIMIT 0 , 15
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.