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

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


sinco

Recommended Posts

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

  • Название статуса товара (из базы, а не из 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 

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


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 weeks later...
$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 користувачів

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

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

Important Information

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