bonjour
Ce qui est sur est que la base de donnée ne contient que des liens vers les images et pas les images ( base64 ou autre codec).
Les liens vers les images sont insérer dans le back end depuis la page des produits donc normalement elle se trouvent dans la table associé .
Un upload de l image biere1.png montre sa localisation <img src="../images/com_hikashop/upload/thumbnails/100x100/biere1_19465.png" alt="biere1.png"> donc image 299x284 devient 100x94 . Donc pas vraiment un upload mais aussi une convertion !!
en backend on a pour editer l image le lien Administrator/index.php?option=com_hikashop&ctrl=product&task=selectimage&cid=17&pid=10&tmpl=component
Les valeurs cid=17 et pid=10 correspond au colonnes file_id et file_ref_id de la table *_hikashop_file
Ce fichier image provient de l'interface Gui backend product donc la table *_hikashop_product
on voit que le pid =*_hikashop_file.file_ref_id = *_hikashop_product.product.is
Maintenant au niveau haut niveau hikashop doit proposer des outils plus simple utilisant ces champs .
Et je ne vois rien au niveau de mass_action
A) la logique si elle est exacte ( prise ne compte d'une seule image par produit) est qu'il faut agir au niveau des 2 tables
*_hikashop_product => ajouter une colonne remove et mettre à 1 tous les product_id a supprimer
*_hikashop_file => supprimer toutes les lignes ou file_ref_id=product_id en utilisant une requête SQL
croisé entre les 2 tables .
B ) précaution avant de faire la suite
-faites un backup des 2 tables au cas ou
-changer mon prefix ici
josthe par celui utilisé dans votre base de donnée
-il y a peut être pas un seul critère à prendre en compte ( d 'autres critères ?) ..... LA personne chez hikashop à l'origine de la construction des tables et des interdépendances ( intégrité) doit pouvoir vous dire cela .....
C) pour les fichiers locaux images il suffit d utiliser un script ( python , php, powershell) avec une requête SQL qui sélectionne le nom des fichiers images présent dans la base de données et delete ces fichiers dans le répertoire . ce script est a lancé avant le précédent car utilise la colonne temporaire remove=1.
SELECT josthe_hikashop_product.product_id, josthe_hikashop_file.file_ref_id, josthe_hikashop_file.file_path
FROM josthe_hikashop_product
INNER JOIN josthe_hikashop_file ON josthe_hikashop_product.product_id = josthe_hikashop_file.file_ref_id
WHERE (josthe_hikashop_product.remove)='1'
D ) on enlève la ligne contenant un lien vers les images
DELETE josthe_hikashop_product, josthe_hikashop_file
FROM josthe_hikashop_product
INNER JOIN josthe_hikashop_file ON josthe_hikashop_product.product_id = josthe_hikashop_file.file_ref_id
WHERE (josthe_hikashop_product.remove)='1'
Cordialement