Jump to content
Pawlowski

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

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

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


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

 

 

 

Edited by Pawlowski

Share this post


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

Ну конкретнее?

Что БД отдаёт?

Share this post


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

Что БД отдаёт?

Два значения колонки alt_name.

Share this post


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

Два значения колонки alt_name.

Значение есть?

Share this post


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

Значение есть?

Одно - яблоко2355 (Которое нужно)
Другое - пустое.

Share this post


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

В модели:

 

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

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

 

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

Share this post


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

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

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

Share this post


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

 

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

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

 

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

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

Edited by Pawlowski

Share this post


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

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

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

Share this post


Link to post
Share on other sites
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);

Share this post


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

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

а store_id,   language_id?

Share this post


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

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

 

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

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

 

7.png

Share this post


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

а store_id,   language_id?

Сейчас добавлю.

Share this post


Link to post
Share on other sites
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

Share this post


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

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

Цитата

{{ alt_name }}

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

Share this post


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

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

 {{ text_alt_name }} {{ alt_name }}

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

 

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites
{{ text_alt_name }} {{ alt_name }}

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

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

Share this post


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

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

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

{{ text_alt_name }} {{ alt_name }}

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

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

Share this post


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

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

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites

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

 

Edited by Tom

Share this post


Link to post
Share on other sites
8 часов назад, Tom сказал:

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

 

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

Share this post


Link to post
Share on other sites
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

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.