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

Дублируются или пропадают товары


Recommended Posts

Доброго времени суток!

 

Есть интернет магазин, работает на OcStore 1.5.1. Ко мне обратились с проблемой в дублировании товаров при переходе на следующую страницу в категориях. То есть, зашли в категорию, прокрутили вниз, нажали страницу 2, а на следующей появляются те товары, которые были внизу на первой. Следовательно, те товары, которые должны были появиться вместо этих дубликатов, так и не появляются. В магазине стоит СеоПро. Я решил на тест сервере установить версию OcStore 1.5.5, и перенес базу.Отключил там же СеоПро. В ответ я конечно-же получил кучу ошибок типа Undefined index ean, но сайт запустился. Я зашел в категорию, перехожу на страницу 2 и получаю тот же результат. Но я заметил очень интересную вещь. Если быть на любой из страниц в категории и просто обновлять ее нажатием на F5 ну или просто мышкой, то товары постоянно меняются. Они будто перемешиваются и меняют свои позиции постоянно. В итоге, я установил OcStore 1.5.4.1, сделал перенос базы и увидел еще одни изменения. Теперь, при обновлении страницы, товары стояли на месте как надо, но если перейти на вторую страницу, пару товаров, которые были внизу на первой странице, все же повторялись. А если быть на первой странице и выбрать показ товаров на страницу допустим 25, то некоторые товары просто не показываются, они попадают.Если же показывать 75, то дубликаты появляются на странице 2. В чем может быть дело? Кто нибудь сталкивался с таким? 

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


31 минуту назад, nikifalex сказал:

в тестировщики вам надо а не в разработчики.

та да, такой отчет накатал тут... :-D

 

@alvinofori Может причина в том что в базе чтото наворотили? Создайте демо сайт для теста,в нем добавьте 20-30 товаров, и посмотрите есть ли проблема...

 

 

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

@Eldaeron Добавил на демо сайт 30 товаров, такой проблемы нет. Я решил только что сделать иначе. Сделал чистый демо сайт, и просто в таблицы, которые начинаются с product добавил все те товары с прошлой базы. Такое же действие произвел с категориями. Протестировал, все нормально, Но! Как только я выбрал фильтр показ страниц 25, все стало ужасно работать снова. Вернулся на показ 15 товаров и проблема осталась. Обновляешь страницу, товары мешаются, меняют свое положение. 

Змінено користувачем alvinofori
Надіслати
Поділитися на інших сайтах


10 минут назад, nikifalex сказал:

посмотрите какая сортировка в model/catalog/product.php

а не добавили ли случаем RAND в запрос?

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

Да причем здесь ранд

ORDER BY sort_order

И как оно отсортирует про одинаковых sort_oder - никому не известно, и..

Надо смотреть модель
версия-то 1.5.1

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

Всем огромное спасибо! Хочу выразить свою отдельную благодарность nikifalex.  Он нашел решение и помог с данной проблемой.

При запросе в базу, для показа товара на странице, query запрашивает ORDER BY p.sort_order

Следовательно

 $sql .= " ORDER BY p.sort_order"; 

Так как у меня или у движка sort_order везде 0, то MySql сортирует товары на рандом (в разброс).

Такая проблема решается таким способом. В файле model/catalog/product.php


перед 
  if (isset($data['start']) || isset($data['limit'])) {

 

добавляем 

$sql .= " , p.product_id";

 

Конечный результат:

 

  $sql .= " , p.product_id";

  if (isset($data['start']) || isset($data['limit'])) {

 

Сохраняем и радуемся. )

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


И да и нет
 

1. У вас все равно сортировка по  sort_order, затем по product_id

Т.е. - одна лишняя. Или вы убрали ORDER BY sort_order?
 

57 минут назад, chukcha сказал:

ORDER BY sort_order

И как оно отсортирует про одинаковых sort_oder - никому не известно, и..

И в ответ - я сразу задал этот вопрос.

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

А давайте я вам задам вопрос
SELECT * FROM `oc_product`
order by `sort_order`

Время?

SELECT * FROM `oc_product`
order by `sort_order`, `product_id`

Время?
Объясните разницу?


 

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

Причем здесь индексы?

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

А там... сначала сортировка по одному полю, а потом по другому
Так какой запрос будет выполняться быстрее? если все sort_order = 0


 

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

Печалько..
Я вам про пузрьковую сортировку, которая не используется про сортировке  SQL сервером.
А про алгоритмы быстрой сортировки, использующих "file_sorting"

А вы мне про два поля в конструкции ODER BY field1, field2

 

Я у вас про время выполнения запроса - а вы про бесполезность дискуссии. И и все туда же -

5 часов назад, nikifalex сказал:

Почитайте раздел mysql про сортировку по нескольким полям.

 

Причем здесь голый html - я вообще не понял. Я где-то об этом сказал?

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

Довольный, сейчас, а завтра - спасите, помогите тормозит..
Пешите еще..

Т.е. вы считает, что сортировка  никак на время запроса не влияет? Ню-ню..

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

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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