Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

Рекомендованные сообщения

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

 

Есть интернет магазин, работает на 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 - никому не известно, и..

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

:)

Ссылка на комментарий
Поделиться на других сайтах

А давайте я вам задам вопрос
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 - я вообще не понял. Я где-то об этом сказал?

Ссылка на комментарий
Поделиться на других сайтах

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

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

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.