Как правильно составить условие if в функции....

Mr.Arsi

Новичок
У меня есть код который добавляет товары , в данный момент работает все хорошо, но есть одно не как не могу составить условие обновлять товары в указанной категории.Сами категории я устанавливаю в профайле. Помогите плиз а то у меня скора клавиатура стереться (

вот сама функция обновления товара
PHP:
    public function insert_products()
    {
        // Если в таблице product у колонки sku отсутствует индекс - добавляем
        $this->check_index('product', 'sku', 1);

        // Первое. Обновляем существующие товарные позиции
        // Обновляем только наличие и цену
        $this->db->query('UPDATE '.DB_PREFIX.'product AS p SET p.`quantity`=0');

        $this->db->query('
            UPDATE '.DB_PREFIX.'product AS t1, '.$this->tmp_tbl_name.' AS t2
            SET t1.`price` = t2.price_new,
            t1.`quantity` = t2.in_stock,
            t1.`date_modified` = NOW(),
            t1.`status` = 1
            WHERE t1.sku = t2.sku AND t1.manufacturer_id = t2.manufacturer;
        ');

        // Второе. Если во временной таблице есть позиции, которых нет в основной
        // добавляем их.
        $this->db->query('
            INSERT INTO '.DB_PREFIX.'product (`model`, `sku`, `upc`, `ean`, `jan`, `isbn`, `mpn`, `location`, `quantity`, `stock_status_id`, `image`, `manufacturer_id`, `shipping`, `price`, `tax_class_id`, `date_available`, `status`, `date_added`)
            SELECT `sku`, `sku`, "", "", "", "", "", "", `in_stock`, '.(int)$this->config->get('config_stock_status_id').', "no_image.jpg", `manufacturer`, 1, `price_new`, 0, NOW(), 1, NOW() FROM
            (SELECT
             t1.`sku`,
             t1.`in_stock`,
             t1.`manufacturer`,
             t1.`price_new`
            FROM '.$this->tmp_tbl_name.' AS t1
             LEFT JOIN '.DB_PREFIX.'product AS t2
                ON t1.sku = t2.sku AND t1.manufacturer = t2.manufacturer_id
            WHERE t2.sku IS NULL) AS subtable
        ');

        // Третье. Если во временной таблице есть позиции, которых нет в основной
        // добавляем описание к ним
        $languages = $this->cache->get('language');

        if (empty($languages)) {
            $this->load->model('localisation/language');
            $languages = $this->model_localisation_language->getLanguages();
        }

        foreach ($languages as $language)
        {
            $this->db->query('
                INSERT IGNORE INTO '.DB_PREFIX.'product_description (`product_id`, `language_id`, `name`) SELECT * FROM (
                SELECT
                 t1.product_id,
                 '. (int) $language['language_id'].',
                 CONCAT(t3.descr) AS `name`
                FROM '.DB_PREFIX.'product AS t1
                 LEFT JOIN '.DB_PREFIX.'product_description AS t2
                    ON t2.product_id = t1.product_id
                 INNER JOIN '.$this->tmp_tbl_name.' AS t3
                    ON t3.sku = t1.sku AND t3.manufacturer = t1.manufacturer_id
                 INNER JOIN '.DB_PREFIX.'manufacturer AS t4 ON t4.manufacturer_id=t1.manufacturer_id
                WHERE t2.product_id IS NULL OR t2.language_id <> '. (int) $language['language_id'].'
                 ) AS subtable
            ');
        }

        $this->db->query('TRUNCATE TABLE '.DB_PREFIX.'product_to_store');

        $config = $this->cache->get('current_profile');
        $stores = $config['product_store'];

        if (empty($stores)) {
            $stores = array(0);
        }

        foreach ($stores as $store)
        {
            $this->db->query('INSERT IGNORE INTO '.DB_PREFIX.'product_to_store SELECT product_id, '.$store.' FROM '.DB_PREFIX.'product');
        }

        // Добавляем категории
        $this->db->query('INSERT IGNORE INTO '.DB_PREFIX.'product_to_category
        SELECT p.product_id, ttp.category, ttp.category
        FROM '.DB_PREFIX.'product p INNER
        JOIN '.$this->tmp_tbl_name.' ttp ON ttp.sku=p.sku');

        // SEO url
        $this->db->query('DELETE FROM '.DB_PREFIX.'url_alias WHERE `query` LIKE "product_id%"');
  
        $this->db->query('
            INSERT INTO '.DB_PREFIX.'url_alias (`query`, `keyword`)
            SELECT
             CONCAT("product_id=", t1.product_id) AS `query`,
             LOWER(CONCAT(t1.product_id, "-", t2.`name`, "-", t1.sku)) AS `keyword`
            FROM '.DB_PREFIX.'product AS t1
             INNER JOIN '.DB_PREFIX.'manufacturer AS t2 USING (manufacturer_id)
        ');

        $this->cache->delete('product');
    }

вот откуда берутся данные профайла

    /**
    * Получение доступных профайлов
    * @param  string $group имя группы
    * @return array  имя_профайла => array(значения_полей)
    */
    public function get_profiles($group)
    {
        $settings = $this->model_setting_setting->getSetting($group);

        $data = array();

        foreach ($settings as $k => $v)
        {
            $v = unserialize($v);

            $data[$k] = $v['profile_name'];
        }

        return $data;
    }
 
Последнее редактирование модератором:

WMix

герр M:)ller
Партнер клуба
Я посоветовал бы для начала выкинуть понятную тебе часть, а проблемную оформить правильно (существуют BB-code "php") и задать вопрос конкретно выделенной части.

Зы: метод insert_product явно называется не правильно
 

Mr.Arsi

Новичок
Я посоветовал бы для начала выкинуть понятную тебе часть, а проблемную оформить правильно (существуют BB-code "php") и задать вопрос конкретно выделенной части.

Зы: метод insert_product явно называется не правильно
Конкретнее что именно вам не понятно ? Cпрашивайте я отвечу !
 

WMix

герр M:)ller
Партнер клуба
я было собрался отвечать а не спрашивать
 
Сверху