Jump to content
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

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

Share this post


Link to post
Share on other sites

а что мешает посмотреть как сделано в других местах? У вас нет доступа к файлам?

Share this post


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

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

а нужно в product.php

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

mysql_query(

есть же 

$this->db->query();

 

Share this post


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

 

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

Share this post


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

 

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

Share this post


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

 

Share this post


Link to post
Share on other sites
В 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 строке (там где запрос)

Share this post


Link to post
Share on other sites

попробуйте

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

 

Share this post


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

Share this post


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

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

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

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

Share this post


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

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

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

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

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

Share this post


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

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


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

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

Share this post


Link to post
Share on other sites
1 час назад, Dotrox сказал:

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

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

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

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

 

Share this post


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

Share this post


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

Share this post


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

 

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

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

Share this post


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

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

уже писали

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

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

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

Share this post


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

уже писали

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

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

product.php

Share this post


Link to post
Share on other sites
В 31.08.2019 в 12:44, sinco сказал:

 


$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);

 

 

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

 

 

 

Share this post


Link to post
Share on other sites
1 час назад, Designer сказал:

 

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

 

 

 

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

Share this post


Link to post
Share on other sites
В 31.08.2019 в 12:44, sinco сказал:

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

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

Share this post


Link to post
Share on other sites
В 31.08.2019 в 12:44, sinco сказал:

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

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

$product_info['stock_status'];

 

Share this post


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

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

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

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

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

Share this post


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

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


$product_info['stock_status'];

 

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

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

Share this post


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

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

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

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.