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

Ошибка PHP Notice: Undefined index: category_id


Recommended Posts

Добрый день. С трудом заставил работать модуль Product Based on Category для OCStore 2.3.0.2.1. Модуль работает, но периодически возникает данная ошибка:

PHP Notice:  Undefined index: category_id in /home/caseroom/caseroom.in.ua/www/catalog/model/extension/module/similar_products.php on line 12

Сам файл модуля: 

<?php
class ModelExtensionModuleSimilarProducts extends Model {

	public function getSimilarProducts($product_id,$limit) {

		$this->load->model('catalog/product');

		$product_data = array();

		if($product_id){
			$category = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" .$product_id. "'");
			$category_id = $category->row['category_id'];

			$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c  ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

			foreach ($query->rows as $result) {
				$product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
			}

			if(count($query->rows) < $limit){
				$limit = $limit - count($query->rows);
				$sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c  ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

					foreach ($sql->rows as $result) {
						$product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
					}
			}
		}
		return $product_data;
	}
}

Автор модуля на контакт не идёт. Спасибо за помощь.

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

$category_id = $category->row['category_id'];
$category_id = isset($category->row['category_id'])? $category->row['category_id'] : 0;
if ($category_id) {
$query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c  ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id > '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

			foreach ($query->rows as $result) {
				$product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
			}

			if(count($query->rows) < $limit){
				$limit = $limit - count($query->rows);
				$sql = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_category p2c  ON (p.product_id = p2c.product_id) WHERE p2c.category_id = '" . (int)$category_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p.product_id <> '" .(int)$product_id. "' ORDER BY p.product_id ASC LIMIT " .(int)$limit);

					foreach ($sql->rows as $result) {
						$product_data[$result['product_id']] = $this->model_catalog_product->getProduct($result['product_id']);
					}
			}
}

 

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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