Jump to content

import csv, id_category reste à 1, tout les produits dans l'accueil


Recommended Posts

Bonjour tout le monde, j’ai déja posté ce message en anglais mais, sait on jamais, un non anglophone peut avoir la réponse.

En gros j’ exporte 2 csv depuis la base sql de mon oscommerce, je retraite tout dans openoffice (rangement des colonnes adhoc, utf8, epurage(), incrément +1 des num de catégorie et +1 num cat parents car accueil=1, remplissage des colonnes balises etc)
bref, j’obtiens 2 beaux csv impeccables.
J’importe les categ tout va parfaitement.
J’importe les produits et tout va parfaitement aussi SAUF que l’id de la catégorie du produit reste à 1 pour tous mes produits ! et ca fait 3 jours que je cherche dans tous les sens pkoi ca fait ca AAAHHH !!
j’ai testé sur une install 100% fraiche, avec un nombre restreint de cat crées par le BO avec un csv de test verifié a fond lui aussi. et idem .. quelqun a t il deja eu le coup ??? un vague idée ? (oui je peux très bien remplir ca direct depuis phpmyadmin mais non c pas la soluce que je cherche grin )

(ps 1.1final mais ca me fait ca aussi sous b4 et b3, hebergé par xampp en local et 1&1;en distant et c pareil ..)

Je craaaque …

Link to comment
Share on other sites

Bonjour
Je n'ai jamais essayé d'importer les catégories puis les produits , je fais directement les produits avec la catégorie là ça fonctionne, enfin pour ton problème.
A ce niveau j'ai un autre problème j'aimerais trouver une solution qu'en important un article qui existe déjà sur la boutique soit modifié et non ajouté :-S

Link to comment
Share on other sites

mais comment fais tu pour que l'arborescence des catégories soit créée ?? il n'y a qu'un seul champs dispo pour la categories dans l'import produit.. je ne comprends pas ..
et le probleme que tu rencontres par rapport a l'update d'un produit via csv m'interesse aussi

Link to comment
Share on other sites

Pas facile l'import c'est la seule chose que me bloque pour virer mon osc et commencer avec Presta.
Malgré tout je teste Presta et je surveille surtout ce qui touche à l'import.

En ce qui concerne l’arborescence des catégories quand tes catégories sont créés j'ai remarque que :
catégorie : Ordinateur Sous-catégorie : clavier

Dans l'import de tes produits il faut que le nom de ta catégorie soit "clavier" et là ce sera correct. Je n'ai jamais essayé avec une sous-sous-catégorie.

Link to comment
Share on other sites

jolvil et moncler parlaient des noms des cat en double ici : http://www.prestashop.com/forums/viewreply/34423/

Je crois comprendre d'après le fichier AdminImport.php

<?
if (isset($product->category) AND is_array($product->category) and sizeof($product->category))
{
   $product->id_category = array(); // Reset default values array

   foreach ($product->category AS $value)
   {
       if (is_numeric($value))
       {
           if (Category::categoryExists(intval($value)))
           $product->id_category[] = intval($value);
           else
           {                            
               $categoryToCreate= new Category();
               $categoryToCreate->id = intval($value);
               $categoryToCreate->name = self::createMultiLangField($value);
               $categoryToCreate->active = 1;
               $categoryToCreate->id_parent = 1; // Default parent is home for unknown category to create
               if ($categoryToCreate->validateFields(UNFRIENDLY_ERROR) AND $categoryToCreate->validateFieldsLang(UNFRIENDLY_ERROR))
               if ($categoryToCreate->add())
               $product->id_category[] = intval($categoryToCreate->id);
               else
               $this->_errors[] = mysql_error().' '.$categoryToCreate->name[1].(isset($categoryToCreate->id) ? ' ('.$categoryToCreate->id.')' : '').' '.Tools::displayError('cannot be saved');

           }    
       }
       elseif (is_string($value) AND !empty($value))
       {
           $category = Category::searchByName(1, $value, true);
           if ($category['id_category'])
           {
               $product->id_category[] =    intval($category['id_category']);
           }
           else
           {
               $categoryToCreate= new Category();
               $categoryToCreate->name = self::createMultiLangField($value);
               $categoryToCreate->active = 1;
               $categoryToCreate->id_parent = 1; // Default parent is home for unknown category to create
               if ($categoryToCreate->validateFields(UNFRIENDLY_ERROR) AND $categoryToCreate->validateFieldsLang(UNFRIENDLY_ERROR))
               if ($categoryToCreate->add())
               $product->id_category[] = intval($categoryToCreate->id);
               else
               $this->_errors[] = mysql_error().' '.$categoryToCreate->name[1].(isset($categoryToCreate->id) ? ' ('.$categoryToCreate->id.')' : '').' '.Tools::displayError('cannot be saved');
           }
       }
   }
}

$product->id_category_default = isset($product->id_category[0]) ? intval($product->id_category[0]) : '';
?>



et mes minces connaissances en php que lors de l'import d'un produit, un tableau est créé et qu'il peut etre :
* soit de type numeric et dans ce cas il y a affectation au produit de la valeur id_category pour catégorie par défaut et dans ce cas pas de soucis si ya des noms de catégorie en double (enfin c'est ma conclusion hative)
* soit etre une chaine de caractère, et dans se cas une recherche est effectuée dans les noms de categ pour trouver l'id_category a lui affecter et la effectivment ya un probleme des qu'il ya des noms en double.

quelqu'un aurait il la compétence et le courage de commenter un poil ce morceau de code ?

Link to comment
Share on other sites

  • 4 weeks later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...