Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Как правильно убрать костыль?


sinco
 Поделиться

Рекомендованные сообщения

Сейчас есть необходимость выводить некоторые данные из базы в карточку товара

  • Название статуса товара (из базы, а не из language.php)
  • Название категории (к которой привязан товар)
  • Ссылку на категорию
$result2 = mysql_query('SELECT * FROM `oc_product` WHERE model= "'.$model.'" ');
$row2 = mysql_fetch_array($result2);
$result3 = mysql_query('SELECT * FROM `oc_stock_status` WHERE stock_status_id= "'.$row2['stock_status_id'].'" and language_id= "'.$language_id.'" ');
$row3 = mysql_fetch_array($result3);
$result4 = mysql_query('SELECT * FROM `oc_product_to_category` WHERE product_id= "'.$row2['product_id'].'" ');
$row4 = mysql_fetch_array($result4);
$result5 = mysql_query('SELECT * FROM `oc_category_description` WHERE category_id= "'.$row4['category_id'].'" and language_id= "'.$language_id.'"  ');
$row5 = mysql_fetch_array($result5);
$result6 = mysql_query('SELECT * FROM `oc_url_alias` WHERE query = "category_id='.$row4['category_id'].'" ');
$row6 = mysql_fetch_array($result6);

Подключение к базе, эти запросы и их обработка размещалась в файле product.tpl

Как правильно вытягивать данные через конфиг не знаю

Ссылка на комментарий
Поделиться на других сайтах


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

Подключение к базе, эти запросы и их обработка размещалась в файле product.tpl

а нужно в product.php

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

mysql_query(

есть же 

$this->db->query();

 

Ссылка на комментарий
Поделиться на других сайтах

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

а нужно в product.php

есть же 


$this->db->query();

 

         $query_id = $this->db->query("SELECT * FROM oc_product WHERE model = " . $product_info['model'] . " ");
         $this->data['fooff'] = $query_id['product_id'];

 

вот так пробовал, не работает

Ссылка на комментарий
Поделиться на других сайтах


3 минуты назад, sinco сказал:

         $query_id = $this->db->query("SELECT * FROM oc_product WHERE model = " . $product_info['model'] . " ");
         $this->data['fooff'] = $query_id['product_id'];

 

вот так пробовал, не работает

Это в логе:
[Sat Aug 31 13:13:37 2019] [error] [client 66.249.64.17] PHP Parse error:  syntax error, unexpected T_STRING in /var/www/ivandream2/data/www/avto-fishka.com.ua/vqmod/vqcache/vq2-catalog_controller_product_product.php on line 253

 

я не понимаю где конкретно ошибка, кавычки пробовал по разному делать

Ссылка на комментарий
Поделиться на других сайтах


29 минут назад, sinco сказал:

         $query_id = $this->db->query("SELECT * FROM oc_product WHERE model = " . $product_info['model'] . " ");
         $this->data['fooff'] = $query_id['product_id'];

         $query_id = $this->db->query("SELECT * FROM oc_product WHERE model = " . $product_info['model']);
         $this->data['fooff'] = $query_id->row['product_id'];

 

Ссылка на комментарий
Поделиться на других сайтах

В 31.08.2019 в 13:42, fanatic сказал:

         $query_id = $this->db->query("SELECT * FROM oc_product WHERE model = " . $product_info['model']);
         $this->data['fooff'] = $query_id->row['product_id'];

 

все ровно не работает, пишет что ошибка в 1 строке (там где запрос)

Ссылка на комментарий
Поделиться на других сайтах


попробуйте

$query_id = $this->db->query("SELECT * FROM oc_product WHERE model = '" . $product_info['model'] . "'");

 

Ссылка на комментарий
Поделиться на других сайтах

2 часа назад, fanatic сказал:

попробуйте


$query_id = $this->db->query("SELECT * FROM oc_product WHERE model = '" . $product_info['model'] . "'");

 

PHP Fatal error:  Cannot use object of type stdClass as array 

Ссылка на комментарий
Поделиться на других сайтах


3 минуты назад, sinco сказал:

PHP Fatal error:  Cannot use object of type stdClass as array 

Это в какой строке?

Откуда вы получаете $product_info?

Ссылка на комментарий
Поделиться на других сайтах


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

Это в какой строке?

Откуда вы получаете $product_info?

это он он ругаеться на строку 
 

$query_id = $this->db->query("SELECT * FROM oc_product WHERE model = '" . $product_info['model'] . "'");
Ссылка на комментарий
Поделиться на других сайтах


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

это он он ругаеться на строку 
 


$query_id = $this->db->query("SELECT * FROM oc_product WHERE model = '" . $product_info['model'] . "'");

Тогда вопрос про $product_info ещё актуальнее. У вас там не массив, а вы пытаетесь его использовать как массив.

Ссылка на комментарий
Поделиться на других сайтах


1 час назад, Dotrox сказал:

Тогда вопрос про $product_info ещё актуальнее. У вас там не массив, а вы пытаетесь его использовать как массив.

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

  • Название статуса товара (из базы, а не из language.php)
  • Название категории (к которой привязан товар)
  • Ссылку на категорию

Сейчас пробую редактировать/catalog/controller/product/product.php

 

Ссылка на комментарий
Поделиться на других сайтах


19 минут назад, sinco сказал:

Сейчас пробую редактировать/catalog/controller/product/product.php

Ну, без этого в любом случае не обойтись. Но запросы лучше перенести в модель товара.

 

 

25 минут назад, sinco сказал:
  • Название категории (к которой привязан товар)
  • Ссылку на категорию

 

Достаточно было в том же контроллере товара посмотреть на хлебные крошки. Увидели бы там это:

$data['breadcrumbs'][] = array(
    'text' => $category_info['name'],
    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url)
);

Здесь и название и ссылка.

 

В случае SeoPro там всегда должна быть именно главная категория товара.

 

 

26 минут назад, sinco сказал:

Название статуса товара (из базы, а не из language.php)

Запрос к базе через $this->db->query().

Ссылка на комментарий
Поделиться на других сайтах


11 минут назад, Dotrox сказал:

Достаточно было в том же контроллере товара посмотреть на хлебные крошки. Увидели бы там это:


$data['breadcrumbs'][] = array(
    'text' => $category_info['name'],
    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url)
);

 

да, я ообращал внимание, но у меня хлебных крошек
у меня вот так
https://avto-fishka.com.ua/derzhatel-mobilnogo-telefona-pulso-uh-2009bk-do-120mm-zazhim

Ссылка на комментарий
Поделиться на других сайтах


16 минут назад, Dotrox сказал:

 

Запрос к базе через $this->db->query().

так а почему у меня тогда ошибка вылазит?
PHP Fatal error:  Cannot use object of type stdClass as array 
как ее победить?

Ссылка на комментарий
Поделиться на других сайтах


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

так а почему у меня тогда ошибка вылазит?

уже писали

2 часа назад, Dotrox сказал:

У вас там не массив, а вы пытаетесь его использовать как массив.

покажите весь код, где\что вставляете

Ссылка на комментарий
Поделиться на других сайтах

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

уже писали

покажите весь код, где\что вставляете

Прикрепил файл, там 246-247 строка
правда пробовал по разному, но вставляю туда

product.php

Ссылка на комментарий
Поделиться на других сайтах


1 час назад, Designer сказал:

 

Не пишите говно код и не создавайте дыру в безопасности магазина. SQL-инъекция

 

 

 

Да, я знаю что это костыль, по этому и прошу помощи, ибо хочу сделать правильно (без использования подобных костылей)

Ссылка на комментарий
Поделиться на других сайтах


В 31.08.2019 в 12:44, sinco сказал:

Название категории (к которой привязан товар)

а если категорий несколько?

Ссылка на комментарий
Поделиться на других сайтах

В 31.08.2019 в 12:44, sinco сказал:

Название статуса товара (из базы, а не из language.php)

уже есть в выборке

$product_info['stock_status'];

 

Ссылка на комментарий
Поделиться на других сайтах

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

а если категорий несколько?

возмет только первую связь

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

 а я хочу сделать правильно

Ссылка на комментарий
Поделиться на других сайтах


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

уже есть в выборке


$product_info['stock_status'];

 

отлично, огромное спасибо, помогло!!!

Теперь осталось решить вопрос с названием категории и ссылкой на категорию

Ссылка на комментарий
Поделиться на других сайтах


1 час назад, sinco сказал:

Теперь осталось решить вопрос с названием категории и ссылкой на категорию

говорили же уже

$category_info = $this->model_catalog_category->getCategory($path_id);

                if ($category_info) {
                    $this->data['breadcrumbs'][] = array(
                        'text' => $category_info['name'],
                        'href' => $this->url->link('product/category', 'path=' . $path),
                        'separator' => $this->language->get('text_separator')
                    );
                }

вот вам ссылка и имя

сделать по аналогии

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...
$query_id = $this->db->query("SELECT * FROM oc_order_product op 
		LEFT JOIN oc_order o ON (op.order_id = o.order_id) 
		LEFT JOIN oc_customer cu ON (o.customer_id = cu.customer_id) 
			WHERE op.product_id = '" . (int)$product_id . "'");
		if(isset($query_id->row['order_product_id'])){
       
		$data['mesto_zap'] = array();
			foreach ($query_id as $row) {
				$data['mesto_zap'][] = array(
					'city' => $row['shipping_city'],
					'date_added'    => $row['date_added']
				);
			}
		}

почему сервер результат выводит верно, но ругается на вот эти строки??? 

'city' => $row['shipping_city'],
'date_added'    => $row['date_added']

вот журнал

Notice: Undefined index: shipping_city in /var/www/ivandream2/data/www/yap.com.ua/system/storage/modification/catalog/controller/product/product.php on line 168
Notice: Undefined index: date_added in /var/www/ivandream2/data/www/yap.com.ua/system/storage/modification/catalog/controller/product/product.php on line 169

 

Изменено пользователем sinco
Ссылка на комментарий
Поделиться на других сайтах


15 часов назад, sinco сказал:

почему сервер результат выводит верно, но ругается на вот эти строки??? 

Как минимум, потому что вы итерируете не то, что надо.

У вас в $query_id есть два массива: row и rows. Вот по rows и нужно итерировать, а не по обьекту $query_id.

 

foreach ($query_id->rows as $row)

 

Хотя вообще код странный. Вы пытаетесь выбрать все заказы, где есть определённый товар и вывести города доставки и даты создания заказов?

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.