Jump to content
AlexTurner

Помогите решить проблему PHP Warning: A non-numeric value encountered in

Recommended Posts

Добрый день всем! в какой-то момент на сайте перестала в админке открываться вкладка "ТОВАРЫ"  выдает HTTP ERROR 500 

Очень нужна ваша помощь! :) ocStore 2.3.0.2

 

В журнале ошибок нашел такую ветку :

 

2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 187
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 365
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 365
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 365
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 373
2018-12-17 16:40:50 - PHP Warning:  A non-numeric value encountered in /home/httpd/vhosts/dvmobi.market/httpdocs/catalog/controller/product/category.php on line 377

 

САМ ФАЙЛ ПРИЛОЖИЛ, и также просто расписал код на этих местах

 

 

в строках 180-190 такой код

 

$data['products'] = array();

			$filter_data = array(
				'filter_category_id' => $category_id,
				'filter_filter'      => $filter,
				'sort'               => $sort,
				'order'              => $order,
				'start'              => ($page - 1) * $limit,
				'limit'              => $limit
			);

 

в строках 365-379 такой код

 

$data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

			// http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html
			if ($page == 1) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'canonical');
			} elseif ($page == 2) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'prev');
			} else {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), true), 'prev');
			}

			if ($limit && ceil($product_total / $limit) > $page) {
			    $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next');
			}

 

category.php

Edited by AlexTurner

Share this post


Link to post
Share on other sites

Попробуйте добавить (int) перед всеми переменными которые участвуют в выражениях и у которых не явный тип

 

((int)$page - 1) * (int)$limit

к примеру

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
25 минут назад, anboza сказал:

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

Имеется ввиду в выгрузке товаров проверить? 

28 минут назад, Prorab337 сказал:

Попробуйте добавить (int) перед всеми переменными которые участвуют в выражениях и у которых не явный тип

 

((int)$page - 1) * (int)$limit

к примеру

я попробовал, но ничего не получилось (не уверен что правильно сделал) нужно править во всех полях, даже тех, которые не указаны в ошибке?

Share this post


Link to post
Share on other sites
Только что, AlexTurner сказал:

Имеется ввиду в выгрузке товаров проверить? 

в смысле что у вас в полях записано, которые отбираются в массив. Очень похоже, что у вас, например, из кроликов, вычитаются попугаи..

Share this post


Link to post
Share on other sites

@AlexTurner  

Да, скорее всего дело в том, что в одном из полей товара или категории, где предполагается числовое значение(цена, порядок сортировки и т.д.) у вас введено не числовое значение.

Оно могло туда попасть и из выгрузки, например, перепутаны поля и описание попало в цену или импортировалось вместе с кавычками или еще что-то.

Если это касается $limit, то проверьте в поле настроек количества выводимого товара что вбито, там могли прописать что-то.

Share this post


Link to post
Share on other sites
2 часа назад, AlexTurner сказал:

выдает HTTP ERROR 500

а в логе ошибок сервера что на этот счет?

Share this post


Link to post
Share on other sites

Скорее всего проблема в переменной $limit

if (isset($this->request->get['limit'])) {
			$limit = (int)$this->request->get['limit'];
		} else {
			$limit = $this->config->get($this->config->get('config_theme') . '_product_limit');
		}

Вот отсюда она берется.

Проверьте в настройках:

1. В шаблоне: что прописано в поле количество выводимого товара (убедитесь, что там числовое значение)

2. (На всякий случай) Настройки > Опции > Элементов на странице (убедитесь, что там числовое значение)

 

 

Share this post


Link to post
Share on other sites

Всем спасибо за такую оперативную помощь! Слава богу что на хостинге был автоматический бекап, откатился на 4 дня, все стало работать. Самое странное что правки не делались с тех пор в этих файлах и в товарах, так и не понял, из-за чего это было. Еще раз всем спасибо!

Share this post


Link to post
Share on other sites
1 час назад, AlexTurner сказал:

так и не понял, из-за чего это было

Был такой опыт... Причина до смешного банальна, в админке в настройках, в поле перед цифровым значением был случайно вставлен пробел.

  • +1 1

Share this post


Link to post
Share on other sites

позвольте реанимировать тему ?

2020-03-21 18:28:14 - PHP Warning:  A non-numeric value encountered in ../catalog/model/extension/total/shipping.php on line 29

Содержимое файла привожу полностью (29я строка 4я снизу):

<?php
// *    @copyright    OPENCART.PRO 2011 - 2017.
// *    @forum    http://forum.opencart.pro
// *    @source        See SOURCE.txt for source and other copyright.
// *    @license    GNU General Public License version 3; see LICENSE.txt

class ModelExtensionTotalShipping extends Model {
    public function getTotal($total) {
        if ($this->cart->hasShipping() && isset($this->session->data['shipping_method'])) {
            $total['totals'][] = array(
                'code'       => 'shipping',
                'title'      => $this->session->data['shipping_method']['title'],
                'value'      => $this->session->data['shipping_method']['cost'],
                'sort_order' => $this->config->get('shipping_sort_order')
            );

            if ($this->session->data['shipping_method']['tax_class_id']) {
                $tax_rates = $this->tax->getRates($this->session->data['shipping_method']['cost'], $this->session->data['shipping_method']['tax_class_id']);

                foreach ($tax_rates as $tax_rate) {
                    if (!isset($total['taxes'][$tax_rate['tax_rate_id']])) {
                        $total['taxes'][$tax_rate['tax_rate_id']] = $tax_rate['amount'];
                    } else {
                        $total['taxes'][$tax_rate['tax_rate_id']] += $tax_rate['amount'];
                    }
                }
            }

            $total['total'] += $this->session->data['shipping_method']['cost'];
        }
    }
}

 

Share this post


Link to post
Share on other sites

 

  • +1 1

Share this post


Link to post
Share on other sites
14 минут назад, gyurza2000 сказал:

$this->session->data['shipping_method']['cost'];

(float)$this->session->data['shipping_method']['cost'];

  • +1 1

Share this post


Link to post
Share on other sites
Posted (edited)

у меня ряд таких ошибок вылез из-за нехватки места на хостинге.   удалил кэш картинок (задолбал расти каждый день).  почистил остальные кэши и все нормально.

Edited by remPC

Share this post


Link to post
Share on other sites
В 22.03.2020 в 12:22, chukcha сказал:

(float)$this->session->data['shipping_method']['cost'];

спасибо вам за точный ответ !!!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.