Перейти к содержанию

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

Всем привет, возникла такая вот проблемка.. Товары одного поставщика были загружены "как вышло" - если точнее часть опций отдельными товарами, объединялось все это с помощью модуля KIT SERIES в один товар.. что само собой не есть гуд .. так ка десятки дублей одного товара с разницей в одну опцию совсем не удобно и вызывает дополнительную нагрузку на хостинг при загрузке страницы категории с товаром .. 

было решено перегрузить все "нормально" то есть 1 товар и "связанные опции" с "изображениями опций про" .. тут тоже еще пляшем с бубном )) но уже вроде есть свет в конце тоннеля.. 

 

Суть проблемы: нужно удалить поставщика из базы так как при повторной загрузке в базе скорее всего будут проблемы с дублями артикулов .. может ошибаюсь конечно  .. 

                               если нет - то как удалить 6000 товаров и не получить битые ссылки ..


Пока писал придумал один вариант - это батч эдитором - изменить все артикула по поставщику и сделать наличие 0...

Что подскажите ? 

 

Р/S

так же требуется человек который сможет загрузить с помощью АОП  поставщика с "связанными опциями" и "изображениями опций про"

 

Изменено пользователем l1key

Поделиться сообщением


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

если задача актуальна, то решается за пару минут простым sql-запросом вида

-- вот этот запрос покажет все нужные Вам товары
SELECT * FROM oc_product op WHERE op.manufacturer_id = 11;
-- если запрос выше показал то, что Вам нужно, то этот запрос ВЫКЛЮЧИТ указанные товары 
UPDATE oc_product op SET op.status = 0 WHERE op.manufacturer_id = 11;
-- ну а этим запросом можно, как говорится, с глаз долой из базы вон ))
DELETE FROM oc_product op WHERE op.manufacturer_id = 11;

где manufacturer_id = ??? легко подсмотреть, открыв в админке "каталог" - "производители", навести мышкой на карандашик напротив нужного Вам бренда и опустив глаза вниз окошка браузера, в поисках вот этой строки

Spoiler

image.png.8c0bd873977cd587e9b8807e8498ff67.png

 

Важно! Прежде всего выполните первый запрос, который select. ТОЛЬКО если он покажет в результатах нужные товары, можете выполнять update или delete. Если не уверены в своих действиях при выполнении запросов вида update \ delete, то делайте бэкапы базы\таблицы!

Изменено пользователем 100napb

Поделиться сообщением


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

НУ-НУ..
Т.е. таблиц, кроме oc_prodict - нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product WHERE manufacturer_id = '11'");

if ($query->num_rows) {
	foreach ($query->rows as $result) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_filter WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "product_recurring WHERE product_id = " . (int)$result['product_id'];
		$this->db->query("DELETE FROM " . DB_PREFIX . "review WHERE product_id = '" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$result['product_id'] . "'");
		$this->db->query("DELETE FROM " . DB_PREFIX . "coupon_product WHERE product_id = '" . (int)$result['product_id'] . "'");
	}
}

не надо благодарностей, просто поставь лайк сообщению.

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
26 minutes ago, chukcha said:

НУ-НУ..
Т.е. таблиц, кроме oc_prodict - нет?

Да, Вы правы. Поторопился. Прошу прощения.

Ниже @auditor предложил гораздо более полное\правильное решение.

 

 

Поделиться сообщением


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

Если и удалять, то используя стандартный метод deleteProduct

 

Учтите, что в этот метод может быть добавлена логика из других модулей и связанных таблиц 

  • +1 1

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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