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

Что может значить этот код ошибки?


Recommended Posts

Добрый день!

 

В журнале ошибок периодически вот такая вот строчка вылезает:

PHP Notice:  Undefined variable: product_id in /home/servername/site.ru/system/storage/modification/catalog/controller/product/product.php on line 979

Вот кусок кода, в котором упомянутая строчка находится:

	public function getRecurringDescription() {
		$this->language->load('product/product');
		$this->load->model('catalog/product');

          $this->load->model('catalog/category');
          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);  ВОТ ЭТА ПОД номером 979
          
          foreach ($product_category as $prodcat) {
          
          $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
          
          if ($category_info) {
          
          $data['catprod'][] = array(
          'name'     => $category_info['name'],
          'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
          );
          }
          }
			
			

Спасибо за помощь!

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


Правильно он пишет...

 

Доходит до 979 строчки...и смотрит, что в модель передается переменная $product_id

Но нигде нет, что это за переменная $product_id

 

Тоисть нужно определить какаой значение должно попадать в эту переменную, что б потом передавалось в модель.

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

Правильно он пишет...

 

Доходит до 979 строчки...и смотрит, что в модель передается переменная $product_id

Но нигде нет, что это за переменная $product_id

 

Тоисть нужно определить какаой значение должно попадать в эту переменную, что б потом передавалось в модель.

Спасибо вам за ответ!

 

Можно пару уточняющих вопросов? (если что, я не программист от слова совсем :-) )

 

1. как это влияет на работоспособность сайта? где можно ждать сбоев?

2. откуда эта ошибка могла взяться и насколько трудно ее устранить?

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


Спасибо вам за ответ!

 

Можно пару уточняющих вопросов? (если что, я не программист от слова совсем :-) )

 

1. как это влияет на работоспособность сайта? где можно ждать сбоев?

2. откуда эта ошибка могла взяться и насколько трудно ее устранить?

 

Нужно по рукам надавать тому, кто делал сайт)

if (isset($this->request->post['product_id'])) {
	$product_id = $this->request->post['product_id'];
} else {
	$product_id = 0;
}
Такая часть кода в этой строчке есть?
 
Если нет, добавить нужно и все должно решится...
Надіслати
Поділитися на інших сайтах

А может автор этого кода просто забыл передать в функцию переменную $product_id ?

Не думаю! Так как функция getRecurringDescription() стандартная...Если речь, конечно, идет о файле catalog\controller\product\product.php

Если у Ваш ошибка в каком-то другом файле, тогда нужно просто передать или определить product_id 

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

@Fedka,  да, вы правы. Я навскидку писала, в код не смотрела. Действительно, нужно всего лишь определить $product_id. Точнее вернуть обратно этот код, т.к. явно кто-то намерено или нет его удалил. В чистом ОС этот код присутствует.

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

Нужно по рукам надавать тому, кто делал сайт)

if (isset($this->request->post['product_id'])) {	$product_id = $this->request->post['product_id'];} else {	$product_id = 0;}
Такая часть кода в этой строчке есть?

Если нет, добавить нужно и все должно решится...

Такие строчки есть, но они располагаются ниже по коду...

Вот скопировал кусок, который Notepad++ подсветил как единый :-)

public function getRecurringDescription() {
		$this->language->load('product/product');
		$this->load->model('catalog/product');

          $this->load->model('catalog/category');
          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);
          
          foreach ($product_category as $prodcat) {
          
          $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
          
          if ($category_info) {
          
          $data['catprod'][] = array(
          'name'     => $category_info['name'],
          'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
          );
          }
          }
			
			

		if (isset($this->request->post['product_id'])) {
			$product_id = $this->request->post['product_id'];
		} else {
			$product_id = 0;
		}

		if (isset($this->request->post['recurring_id'])) {
			$recurring_id = $this->request->post['recurring_id'];
		} else {
			$recurring_id = 0;
		}

		if (isset($this->request->post['quantity'])) {
			$quantity = $this->request->post['quantity'];
		} else {
			$quantity = 1;
		}

		$product_info = $this->model_catalog_product->getProduct($product_id);
		$recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id);

		$json = array();

		if ($product_info && $recurring_info) {
			if (!$json) {
				$frequencies = array(
					'day'        => $this->language->get('text_day'),
					'week'       => $this->language->get('text_week'),
					'semi_month' => $this->language->get('text_semi_month'),
					'month'      => $this->language->get('text_month'),
					'year'       => $this->language->get('text_year'),
				);

				if ($recurring_info['trial_status'] == 1) {
					$price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));
					$trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' ';
				} else {
					$trial_text = '';
				}

				$price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));

				if ($recurring_info['duration']) {
					$text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				} else {
					$text = $trial_text . sprintf($this->language->get('text_payment_cancel'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				}

				$json['success'] = $text;
			}
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}
Змінено користувачем Skunk
[spoiler]
Надіслати
Поділитися на інших сайтах


А это не может быть как-то связано с перелинковкой товаров? Со "связанными" товарами если быть точнее?

 

У меня там ошибка была (связи скидывались самопроизвольно), и мне программист один исправлял.

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


Такие строчки есть, но они располагаются ниже по коду...

Вот скопировал кусок, который Notepad++ подсветил как единый :-)

public function getRecurringDescription() {
		$this->language->load('product/product');
		$this->load->model('catalog/product');

          $this->load->model('catalog/category');
          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);
          
          foreach ($product_category as $prodcat) {
          
          $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
          
          if ($category_info) {
          
          $data['catprod'][] = array(
          'name'     => $category_info['name'],
          'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
          );
          }
          }
			
			

		if (isset($this->request->post['product_id'])) {
			$product_id = $this->request->post['product_id'];
		} else {
			$product_id = 0;
		}

		if (isset($this->request->post['recurring_id'])) {
			$recurring_id = $this->request->post['recurring_id'];
		} else {
			$recurring_id = 0;
		}

		if (isset($this->request->post['quantity'])) {
			$quantity = $this->request->post['quantity'];
		} else {
			$quantity = 1;
		}

		$product_info = $this->model_catalog_product->getProduct($product_id);
		$recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id);

		$json = array();

		if ($product_info && $recurring_info) {
			if (!$json) {
				$frequencies = array(
					'day'        => $this->language->get('text_day'),
					'week'       => $this->language->get('text_week'),
					'semi_month' => $this->language->get('text_semi_month'),
					'month'      => $this->language->get('text_month'),
					'year'       => $this->language->get('text_year'),
				);

				if ($recurring_info['trial_status'] == 1) {
					$price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));
					$trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' ';
				} else {
					$trial_text = '';
				}

				$price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));

				if ($recurring_info['duration']) {
					$text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				} else {
					$text = $trial_text . sprintf($this->language->get('text_payment_cancel'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				}

				$json['success'] = $text;
			}
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

 

 

 

Скорей всего прост оне туда вставили кусок кода и все...

 

Если "программер" какой-то делал, тогда у него спросите, зачем он порядок поменял в этой функции...

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

"полный рабочий файл" есть в дистрибутиве вашей версии движка

 

но причину искать нужно не в нем, а в модификаторе который у вас его меняет

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

Господа, спасибо большое за ответы!

 

У меня все же нубский вопрос один остался :-)

 

А что конкретно может не работать, если эту ошибку не устранить?

Просто (тьфу-тьфу) заказ можно оформить, в этом плане ничего не глючит. Разве что притормаживает иногда (редко достаточно, при добавлении в корзину)

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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