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

Можно ли оптимизировать такой код/запрос


Recommended Posts

Запрос отвечает за групировку на сайте . Пока нашел метод оптимизации только путем кеширования всей сраницы Кешировщиком по времени.

Создает по запросу на товар и так при каждой загрузке страницы :(

Был бы признателен за помощь.
 

    public function getChangeStatusGroup(){

        $query_group_name = $this->db->query("SELECT DISTINCT group_stage FROM " . DB_PREFIX . "product_description");


         foreach ($query_group_name -> rows as $group_st) {

            $query0 = $this->db->query("SELECT p.product_id, p.quantity, pd.group_stage, p.status FROM  `" . DB_PREFIX . "product` AS p,  `" . DB_PREFIX . "product_description` AS pd WHERE pd.group_stage =  '" . $group_st['group_stage'] . "' && p.`product_id` = pd.`product_id` ORDER BY  `p`.`quantity` DESC ");

            $i = 1;

            foreach ($query0->rows as $query_row) {


                if ($i == 1 && $query_row['status'] != 0) {

                    $this->db->query("UPDATE  `" . DB_PREFIX . "product` SET  `selected` =  '1' WHERE  `product_id` = ' " . $query_row['product_id'] . "'");
                } else {
                    $this->db->query("UPDATE  `" . DB_PREFIX . "product` SET  `selected` =  '0' WHERE  `product_id` = ' " . $query_row['product_id'] . "'");
                    if ($i == 1) {
                        $i--;
                    }
                }
                $i++;
            }


        }
        return 'hren_vam';  

    }

 

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


Спасибо за коментарий.

 

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

Смысл групировки в следующем:

В категории в блоке товара Ставится главная картинка (товар) и миниатюры. Миниатюры и главный товар создаются на основании количества и статуса вкл (Розетка такое использует)

.

 

Тоесть если я его снесу то при добавлении товаров новых на сайт и внесения в поле групировки начало названия товара . В БД не произойдет изменений и не выберется главный и второстепенный товар (миниатюра)

 

:(

 

Может есть решение которое это все оптимизирует?

 

Пока додумался только "закоментировать" до того времени пока не понадобится обновить данные групировки ...

 

А есть ли вариант автозапуска этого кода раз в 2 дня?

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


Т.е. это по сути - серия товаров

 

1. Зачем признак группировки в product_description

2. Такой запрос надо делать на стороне админки, а не каждый раз на фронте

3. Нужно задавать главную любой товар, а не первый .. хотя это уже не важно

 

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

такое было закоментировано

/*               if ($query0->row['group_status'] != 1) {

                 $this->db->query("UPDATE  `" . DB_PREFIX . "product_description` SET  `group_status` =  '0' WHERE  group_stage =  '" . $group_st['group_stage'] . "' && group_status =  '1'");

                 $this->db->query("UPDATE  `" . DB_PREFIX . "product_description` SET  `group_status` =  '1' WHERE  `product_id` = ' " . $query0->row['product_id'] . "'");

                 $max_quant = $query0->row['product_id'];

                 return 'ura'; 
             }  */

Главным товаром может быть только тот, который включен и имеет больше всего в наличии, хотя если даже будет любой больше 0 подойдет. Те которые с количеством 0 должны быть последнимим в миниатюре, хотя тоже не критично, но желательно.

 

Может подскажете, как его вынести в Админку?

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


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

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

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

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

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

Вхід

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

Вхід зараз

×
×
  • Створити...

Important Information

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