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

Ошибка PHP Notice: Undefined variable


mralex

Recommended Posts

Ребята в журнале ошибок opencart сборка oc store 3.0.2.0 наблюдается вот такая ошибка:

PHP Notice:  Undefined variable: order_data in /home/admin/web/site/storage/modification/catalog/controller/mail/order.php on line 327

Зашел в файл и не понимаю в чем проблема. Ругается на эту строку:

			$data['quick'] = ($order_data['shipping_method'] = '') ? true : false;

Использую модуль Simple.

Бывает что не все заказы оформляются.

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


Ну, так то это нотис, а не ошибка :)
Предупреждение. И гласит оно примерно следующее: В массиве order_data отсутствует указанный вами ключ (речь о shipping_method)


Тут ещё такой момент - это Вы неправильно скопировали, или в коде действительно такое сравнение? 
 

$data['quick'] = ($order_data['shipping_method'] = '') ? true : false;

Ибо по логике там должно быть
 

$data['quick'] = ($order_data['shipping_method'] == '') ? true : false;

Т.е. если данных заказа указан метод доставки - это обычный заказ, если не указа - быстрый заказ.

А сам нотис можно убрать в коде оформления быстрого заказа прописав дефолтный shipping_method.

Либо слегка изменив код на такой:

 

$data['quick'] = false;
if (isset($order_data['shipping_method'])){
	if ($order_data['shipping_method'] == '') $data['quick'] = true;
} else {
	$data['quick'] = true;
}  


Т.е. проверяем существование $order_data['shipping_method'] и если существует - дальнейшая проверка. И тогда исключение "PHP Notice: Undefined variable" не выскочит...

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

23 часа назад, mralex сказал:

Undefined variable: order_data

 

23 часа назад, mralex сказал:

Бывает что не все заказы оформляются.

Массив не передается, поэтому идет сообщение.

 

23 часа назад, nogocuHoBuk сказал:

В массиве order_data отсутствует указанный вами ключ (речь о shipping_method)

Нет, иначе бы была другая ошибка, типа offset no exists. Поставь в самом начале функции order_data=array(); и тогда получишь ошибку ключа. Ну и нужно разбираться, почему информация о заказе не пишется (не всегда - как в твоем случае) в БД. В опенкарт почему-то не сделали проверку занесения/обновления/удаления записей в таблицы.

А это не так сложно сделать

if(!$result=$this->db->query(тут запрос INSERT или UPDATE или DELETE)) return false; return true; //то есть, если происходит ошибка выполнения этих директив (false) / или все нормально прошло (true)

Ну еще посмотри серверный лог (там должны быть ошибки при работе с БД).

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

4 минуты назад, esculapra сказал:

Нет, иначе бы была другая ошибка, типа offset no exists

Верно. Тут мой завтык...
 

Но ещё раз обращу внимание на саму строку с ошибкой: 

23 часа назад, nogocuHoBuk сказал:

$data['quick'] = ($order_data['shipping_method'] = '') ? true : false;

Эта строка некорректная Должно быть ==
Не думаю, что в Simple на проде такой косяк.
Либо сторонний модуль либо "правленый" Simple.

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

1 минуту назад, nogocuHoBuk сказал:

Эта строка некорректная Должно быть ==

Так это по-любому, я бы еще так изменил

$data['quick'] = ( if (isset ($order_data) &&  $order_data['shipping_method'] == '') ? true : false; // тут точно нотис не появится - он появится дальше, но уже можно будет куда копать.

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

27 минут назад, nogocuHoBuk сказал:

Либо сторонний модуль либо "правленый" Simple.

Вполне вероятно, ибо ТС не обратился к разработчику.

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

Очень нужна помощь. Во-первых слетел simle, хотя модуль установлен, но на сайте не отображается. Во-вторых в журнале ошибок вот такое прописано

 

PHP Notice:  Undefined index: code in /var/www/u1457571/data/www/nailberryshop.ru/admin/model/design/layout.php on line 38

 

захожу и ничего не понимаю

 

        $this->db->query("INSERT INTO " . DB_PREFIX . "layout_module SET layout_id = '" . (int)$layout_id . "', code = '" . $this->db->escape($layout_module['code']) . "', position = '" . $this->db->escape($layout_module['position']) . "', sort_order = '" . (int)$layout_module['sort_order'] . "'");

 

Что исправить?

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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