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

Неизвестный массив при выводе данных из БД


Recommended Posts

Добрый день.
Создавал новую колонку в таблице oc_product_description  (Колонка alt_name). Данные внесены.

 

2365236236.thumb.png.4b5a44e75dbe2446d59c095b4da9cfbf.png

Решил вывести значение этой колонки на карточку товара со стороны пользователя(catalog)

В модели:
 

	public function getAltName($product_id) {
		$query = $this->db->query("SELECT alt_name FROM " . DB_PREFIX . "product_description WHERE product_id ='" . (int)$product_id. "'");

		return $query->rows;
	}

Контроллер:

 

	$product_alt_name = $this->model_catalog_product->getAltName($product_id);

Шаблоне:

     {{ text_alt_name }} {{ alt_name }}

 

На нужном месте (Поле товара "Альтернативное имя") ничего нету. Пытаюсь сделать вардамп  переменной $product_alt_name. В итоге выходит такая картина:

1.thumb.png.57edf4410c974f220a421aa64a54a0e1.png

Пожалуйста подскажите:
Данные выводятся, все в норме. Но откуда два массива? Я думаю, из-за этого и не выводится информация с БД в нужном месте.(Поле товара "Альтернативное имя").


Спасибо всем тем кто откликнится.

 

 

 

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


13 минут назад, Pawlowski сказал:

В модели:

 

результат выдачи в product_description зависит от количества языков

выдает два значения, потому что у вас на сайте два языка

 

смотрите как выборка по языку в стандартных запросах идет

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

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

А как вы смотрите?)))

Я ориентировался по дампу переменной( Который приложил в скрине ). Т.к. в этой переменной находится функция запроса с БД.
(Я могу ошибаться, я так себе представляю это. Можете хохатать сколько хотите, но дайте пенка под зад и подскажите насчет этого. Правильно я делаю или нет.)

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


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

 

результат выдачи в product_description зависит от количества языков

выдает два значения, потому что у вас на сайте два языка

 

смотрите как выборка по языку в стандартных запросах идет

Спасибо, сейчас гляну.
Возможно ли то, если я подправляю это , то в поле "Альтернативное имя" будет выводиться данные с колонки или нет?

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


9 минут назад, Pawlowski сказал:

Я ориентировался по дампу переменной( Который приложил в скрине ). Т.к. в этой переменной находится функция запроса с БД.
(Я могу ошибаться, я так себе представляю это. Можете хохатать сколько хотите, но дайте пенка под зад и подскажите насчет этого. Правильно я делаю или нет.)

Ну посмеёмся разочек, не без этого, ну поможем.

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


49 минут назад, Pawlowski сказал:

return $query->rows;

return $query->row['alt_name'];

 

51 минуту назад, Pawlowski сказал:

$product_alt_name = $this->model_catalog_product->getAltName($product_id);

$data['alt_name'] = $this->model_catalog_product->getAltName($product_id);

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

53 минуты назад, Pawlowski сказал:

WHERE product_id ='" . (int)$product_id. "'"

а store_id,   language_id?

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

7 минут назад, fanatic сказал:

return $query->row['alt_name'];

 

$data['alt_name']$this->model_catalog_product->getAltName($product_id);

Cпасибо, теперь выводиться только одно значение.
Но в нужное поле все равно не вписывается...

 

7.png

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


9 минут назад, fanatic сказал:

а store_id,   language_id?

	public function getAltName($product_id) {
		;

		$query = $this->db->query("SELECT alt_name FROM " . DB_PREFIX . "product_description WHERE product_id ='" . (int)$product_id. "'AND store_id = '" . (int)$this->config->get('config_store_id') . "'AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

		return $query->row['alt_name'];
	}

 

455848458458.png

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


7 минут назад, Pawlowski сказал:

Но в нужное поле все равно не вписывается

Цитата

{{ alt_name }}

так не выводит?

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

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

У меня вот так стоит.

и что не выводит, первое или второе или оба?

а ошибка, потому что store_id,  в другой таблице. нужно присоединить  таблицу  oc_product_to_store

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

2 минуты назад, fanatic сказал:

и что не выводит, первое или второе или оба?

а ошибка, потому что store_id,  в другой таблице. нужно присоединить  таблицу  oc_product_to_store 

{{ text_alt_name }} {{ alt_name }}

Первое выводит как - Альтернативное имя
Второе пустое

Хорошо, сейчас добавлю

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


10 минут назад, Pawlowski сказал:

Второе пустое

естественно, потому что ошибка в запросе к базе.

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

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

естественно, потому что ошибка в запросе к базе.

Т.е. когда я смогу объединить две таблицы , alt_name будет выводить значение?

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


В опенкарт полно  неиспользуемых полей типа ISBN,MPN итд. Любое из них в сотню раз быстрее выполнило подобную функцию с минимальными правками.

 

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

8 часов назад, Tom сказал:

В опенкарт полно  неиспользуемых полей типа ISBN,MPN итд. Любое из них в сотню раз быстрее выполнило подобную функцию с минимальными правками.

 

В курсе.Но нужно именно добавить новое поле.

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


10 часов назад, fanatic сказал:

естественно, потому что ошибка в запросе к базе.

	public function getAltName($product_id) {
		;

		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description LEFT JOIN " . DB_PREFIX . "product_to_store ON (pd.alt_name = p2s.store_id) WHERE product_id ='" . (int)$product_id.  "'AND store_id = '" . (int)$this->config->get('config_store_id') . "'AND language_id = '" . (int)$this->config->get('config_language_id') . "'");

		return $query->row['alt_name'];
	}


Fatal error: Uncaught Exception: Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(pd.alt_name = p2s.store_id) WHERE product_id ='42'AND store_id = '0'AND languag' at line 1<br />Error No: 1064<br />SELECT * FROM oc_product_description LEFT JOIN oc_product_to_store ON (pd.alt_name = p2s.store_id) WHERE product_id ='42'AND store_id = '0'AND language_id = '2' in D:\xampp\htdocs\opencart\system\library\db\mysqli.php:40 Stack trace: #0 D:\xampp\htdocs\opencart\system\library\db.php(45): DB\MySQLi->query('SELECT * FROM o...') #1 D:\xampp\htdocs\opencart\catalog\model\catalog\product.php(395): DB->query('SELECT * FROM o...') #2 D:\xampp\htdocs\opencart\system\storage\modification\system\engine\loader.php(248): ModelCatalogProduct->getAltName(42) #3 D:\xampp\htdocs\opencart\system\engine\proxy.php(47): Loader->{closure}(Array, Array) #4 D:\xampp\htdocs\opencart\catalog\controller\product\product.php(247): Proxy->__call('getAltName', in D:\xampp\htdocs\opencart\system\library\db\mysqli.php on line 40

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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