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

Warning: Division by zero in product.php on line 468


snejzel

Recommended Posts

Здравствуйте, подскажите у некоторых товаров выводится вот такая строчка

Warning: Division by zero in /system/storage/modification/catalog/controller/product/product.php on line 468

 

Кусок кода: 

 

                $data['products'][] = array(
'percent'     => sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) . ' %',
                    'product_id'  => $result['product_id'],
                    'thumb'       => $image,
                    'name'        => $result['name'],
                    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
                    'price'       => $price,
                    'special'     => $special,
                    'tax'         => $tax,
                    'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
                    'rating'      => $rating,
                    'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])
                );
            }

 

 

конкретно 468 строчка 

'percent'     => sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) . ' %',

 

Пробовал перезаливать файлы из более старого бекапа, та же проблема. 

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


тут вроде все понятно, ошибка деление на ноль, а именно как вы заметили в часте кода $result['special'])/$result['price']) * 100 ,0  - эту часть кода надо переписать наверное следующим образом 

'percent'     => ($result['price']) ? sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) . ' %' : ''
Надіслати
Поділитися на інших сайтах

sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) 

У Вас $result['special'] == 0

этот кусок Вам нужно вынести выше там где $special = ... а в массив прописать 'percent'  => $percent  

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

наоборот, result['price'] - 0

 

надо наверное так

 

'percent'     => ($result['price'] > 0) ? sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) . ' %' : false,

 

Или как написали вынести выше, типа вынести в блок special

 

$percent = ($result['price'] > 0) ? sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) . ' %' : false

а в вывод 

'percent'     => $percent,

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

  • 1 year later...

@spectre огромное спасибо, 

В 16.09.2017 в 10:00, spectre сказал:

'percent'     => ($result['price'] > 0) ? sprintf($this->language->get('-%s'), (round((($result['price'] - $result['special'])/$result['price']) * 100 ,0 ))) . ' %' : false,

замена на данную строку решила проблему на некоторых карточках товара, но причину по которой часть позиций открывалась без ошибок, а вторая часть - "белая страница" так и не понял.

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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