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

Нужно сделать скрипт или запрос который очистит все таблицы товара в opencart, если товар был в ручную удален из oc_product


Recommended Posts

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

 

Нужно сделать скрипт или запрос который очистит все таблицы товара в opencart, если товар был в ручную удален из oc_product

 

Пишите в личку вашу и цену и сроки

 

Смогу оплатить на карту приватбанка/монобанка или paypal

 

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


Можете спробувати щось типу цього, але обов'язково зробіть бекап бази.

 

<?php

require_once 'config.php';

$dbhost = DB_HOSTNAME;
$dbuser = DB_USERNAME;
$dbpass = DB_PASSWORD;
$dbdatabase = DB_DATABASE;

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbdatabase);

$query = $db->query("SELECT product_id FROM " . DB_PREFIX . "product");

if ($query->num_rows) {
	$product_ids = [];

	foreach ($query->rows as $row) {
		$product_ids[] = (int)$row['product_id'];
	}

	$product_ids_str = implode(",", $product_ids);

	$db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_filter WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_recurring WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "review WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query NOT IN ('product_id=" . $product_ids_str . "')");
	$db->query("DELETE FROM " . DB_PREFIX . "coupon_product WHERE product_id NOT IN (" . $product_ids_str . ")");
}

$db->close();

 

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

DELETE pd FROM product_description pd
LEFT JOIN product p ON pd.product_id=p.product_id
WHERE p.product_id is Null

Запрос повторить по аналогии для таблиц

product_attribute
product_discount
product_special
product_filter
product_image
product_option
product_option_value
product_reward
product_to_category
product_to_download
product_to_layout
product_to_store
product_recurring
review
coupon_product

 



 

  • +1 2
Надіслати
Поділитися на інших сайтах

Если есть бекап базы, проще всего восстановить и удалить товары по-людски из админки руками, если нет никаких модулей, вроде Unixml или Диспетчер, которые могут сделать это массово.

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


29.11.2023 в 01:17, chukcha сказал:

DELETE pd FROM product_description pd
LEFT JOIN product p ON pd.product_id=p.product_id
WHERE p.product_id is Null

Запрос повторить по аналогии для таблиц

product_attribute
product_discount
product_special
product_filter
product_image
product_option
product_option_value
product_reward
product_to_category
product_to_download
product_to_layout
product_to_store
product_recurring
review
coupon_product

 



 

 

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

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


29.11.2023 в 00:17, S_A_P сказал:

Можете спробувати щось типу цього, але обов'язково зробіть бекап бази.

 

<?php

require_once 'config.php';

$dbhost = DB_HOSTNAME;
$dbuser = DB_USERNAME;
$dbpass = DB_PASSWORD;
$dbdatabase = DB_DATABASE;

$db = new mysqli($dbhost, $dbuser, $dbpass, $dbdatabase);

$query = $db->query("SELECT product_id FROM " . DB_PREFIX . "product");

if ($query->num_rows) {
	$product_ids = [];

	foreach ($query->rows as $row) {
		$product_ids[] = (int)$row['product_id'];
	}

	$product_ids_str = implode(",", $product_ids);

	$db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_filter WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "product_recurring WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "review WHERE product_id NOT IN (" . $product_ids_str . ")");
	$db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query NOT IN ('product_id=" . $product_ids_str . "')");
	$db->query("DELETE FROM " . DB_PREFIX . "coupon_product WHERE product_id NOT IN (" . $product_ids_str . ")");
}

$db->close();

 

спасибо!! 

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


29.11.2023 в 01:17, chukcha сказал:

DELETE pd FROM product_description pd
LEFT JOIN product p ON pd.product_id=p.product_id
WHERE p.product_id is Null

Запрос повторить по аналогии для таблиц

product_attribute
product_discount
product_special
product_filter
product_image
product_option
product_option_value
product_reward
product_to_category
product_to_download
product_to_layout
product_to_store
product_recurring
review
coupon_product

 



 

 

подскажите плз, как аналогичный запрос правильно сделать для таблицы oc_seo_url в opencart 3? 

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


  • 4 weeks later...
02.12.2023 в 10:16, chukcha сказал:

DELETE su FROM seo_url su
LEFT JOIN product p ON p.product_id = REPLACE(`query`,'product_id=','')
WHERE p.product_id IS NULL

мабуть так

не сработало правильно это( удалило даже seo url главной страницы и категорий(

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


30.12.2023 в 22:00, iler сказал:

не сработало правильно это( удалило даже seo url главной страницы и категорий(

Надеюсь бекап был?

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

DELETE su FROM seo_url su
LEFT JOIN product p ON p.product_id = REPLACE(`query`,'product_id=','')
WHERE p.product_id IS NULL

AND `query` LIKE 'product_id=%'
Про бекап не забываем )))

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

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

Important Information

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