Guillaume_KS Posted August 21, 2022 Share Posted August 21, 2022 Bonjour, je souhaite modifier la quantité de mes produits en passant via un fichier csv classique. Je ne veux pas faire cette opération via le back office mais en créant un module personnalisé, et en suivant plusieurs topics içi, sur stackoverflow et internet, j'ai arrivé à quelque chose qui DEVRAIT fonctionner, mais il me manque certainement quelque chose, un petit truc à côté duquel je suis passé et j'aimerais bien un avis extérieur pour m'aider la dessus ! D'ailleurs j'appelle cela un module, mais il n'en a pas du tout la structure, peut être faut-il accrocher cela à un hook ou bien insérer une fonction install, néanmoins je n'en ai pas l'impression. Voici mon code : <?php require 'config/config.inc.php'; $files = '/modules/flux/'; $files = glob($files . '*.csv', GLOB_NOSORT); if (sizeof($files)) { //Tri par ordre de création usort($files, function ($a, $b) { //filemtime lit la date à laquelle le fichier a été //modifié la dernière fois return filemtime($a) < filemtime($b); }); for ($i = 0; $i < sizeof($files); $i++) { //de 0 jusqu'au nombre de lignes dans le fichier csv $fileName = basename($files[$i]); // On traite uniquement le fichier le + récent if ($i == 0) { if (($handle = fopen($files[$i], "r")) !== FALSE) { //mode r ouvre en lecture seule et place le pointeur de fichier au début du fichier $j = 0; while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { //On ne traite pas la première ligne qui contient les entêtes if ($j > 0) { //Récupération des informations de la déclinaison à partir de sa référence $productData = Db::getInstance()->getRow( "SELECT id_product,id_product_attribute FROM préfixeDeMaBase_product_attribute WHERE reference ='" . $data[0] . "'"); //Mise à jour des stocks if ($productData) { echo 'Mise à jour référence :' . $data[0] . ' - quantité ' . $data[1] . " - id_product " . $productData['id_product'] . " id_product_attribute " . $productData['id_product_attribute'] . "<br />"; StockAvailable::setQuantity($productData['id_product'], $productData['id_product_attribute'], $data[1]); } else { echo 'Erreur : Référence ' . $data[0] . ' non présente sur le site ' . "<br />"; } } $j++; } fclose($handle);} } } } et mon fichier csv de test très simple (les références correspondent bien à des produits en base) reference;quantity demo_21;8 demo_14;8 demo_10;8 demo_9;8 demo_8;8 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