Gavimse Posted January 27 Share Posted January 27 (edited) Bonjour à tous, J'ai plusieurs milliers de produits à supprimer dans mon catalogue. Ils ont tous en point commun le mot "custom" dans leur référence. Je cherche une requête SQL pour faire ça, pour traduire donc : Supprimer tous les produits qui ont le mot "custom" dans leur référence. Quelqu'un pour m'aider? Merci Edited January 27 by Gavimse (see edit history) Link to comment Share on other sites More sharing options...
Ewonta Posted January 27 Share Posted January 27 Bonjour, essayez cette requête, assurez-vous de faire une sauvegarde de la base de données. DELETE ps_product, ps_product_shop FROM ps_product INNER JOIN ps_product_shop ON ps_product.id_product = ps_product_shop.id_product WHERE ps_product.reference = 'custom'; Link to comment Share on other sites More sharing options...
Prestashop Addict Posted January 27 Share Posted January 27 il y a 9 minutes, Ewonta a dit : DELETE ps_product, ps_product_shop FROM ps_product INNER JOIN ps_product_shop ON ps_product.id_product = ps_product_shop.id_product WHERE ps_product.reference = 'custom'; Hum attention, il y a plein de tables associatives de la table product, en procédant de la sorte vous allez créer plein de problèmes d'intégrité dans votre base et des données "orphelines" 😞 Je vous conseillerai plutôt de le faire par un script php qui récupère la liste des ID des produits concernés et faire une boucle en appelant la suppression du produit. foreach( $productList as $product) { $p = new Product( $product['id_product']); $p->delete(); unset($p); } Link to comment Share on other sites More sharing options...
Ewonta Posted January 27 Share Posted January 27 Absolument d'accord, le script est le meilleur moyen. 👍 Link to comment Share on other sites More sharing options...
Knowband Plugins Posted January 27 Share Posted January 27 Salut, Vous pouvez utiliser le script PHP ci-dessous pour supprimer les produits ayant 'custom' dans leur référence. $sql = 'SELECT id_product FROM ' . _DB_PREFIX_ . 'product WHERE reference LIKE "%custom%"'; $product_ids = Db::getInstance()->executeS($sql); if (!empty($product_ids)) { foreach ($product_ids as $product) { $product_id = (int) $product['id_product']; $product_obj = new Product($product_id); $product_obj->delete(); } } Salutations. Link to comment Share on other sites More sharing options...
Gavimse Posted January 29 Author Share Posted January 29 Bonjour et merci pour vs réponses. Comment utiliser ce script? Je dois l'insérer dans le site via le ftp? Dans une page précise? Merci Link to comment Share on other sites More sharing options...
Prestashop Addict Posted January 29 Share Posted January 29 (edited) Voici un exemple avec un ficher delp.php à déposer à la racine de votre Presta. <?php include dirname(__FILE__).'/config/config.inc.php'; ini_set('display_errors', 'on'); error_reporting(E_ALL); $sql = 'SELECT id_product FROM ' . _DB_PREFIX_ . 'product WHERE reference LIKE "%custom%"'; $product_ids = Db::getInstance()->executeS($sql); if (!empty($product_ids)) { foreach ($product_ids as $product) { $p = new Product($product['id_product']); $p->delete(); unset($p); } } Attention cependant à la requête "floue" les produit dont la référence serait customin, customize... seront aussi pris en compte. 😉 Supprimez bien le fichier après ! Edited January 29 by Prestashop Addict (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now