Jump to content

[Résolu]BDD, table ps_feature_value


Recommended Posts

Bonsoir,

 

Lorsque j'importe mes produits avec un fichier csv, je dois modifier dans ma base de données la colonne "custom" de la table ps_feature_value sinon les caractéristiques de mes produits disparaissent dés que je modifie un produit via le backoffice.

 

J'ai trouvé cette requête: UPDATE ps_feature_value SET custom='0'. Cela me permet de passer la valeur du champ "custom" de 1 à 0 et ainsi de définir les valeurs de mes caractéristiques en "par défaut", ce qui évite qu'elles disparaissent par la suite.

 

Cela étant assez fastidieux j'aurais aimé savoir s'il était possible de définir par défaut la valeur de la colonne "custom" à 0 au lieu de 1.

 

Merci pour votre aide :)

 

Cordialementnt.

Romain

Edited by sromain (see edit history)
Link to comment
Share on other sites

AdminImportController.php lors de l'import csv

 

		   	 // Features import
			$features = get_object_vars($product);

			if (isset($features['features']) && !empty($features['features']))
				foreach (explode($this->multiple_value_separator, $features['features']) as $single_feature)
				{
					$tab_feature = explode(':', $single_feature);
					$feature_name = trim($tab_feature[0]);
					$feature_value = trim($tab_feature[1]);
					$position = isset($tab_feature[2]) ? $tab_feature[2]: false;
					if(!empty($feature_name) && !empty($feature_value))
					{
						$id_feature = Feature::addFeatureImport($feature_name, $position);
						$id_feature_value = FeatureValue::addFeatureValueImport($id_feature, $feature_value);
						Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
					}
				}

 

FeatureValue::addFeatureValueImport appel vers la classe FeatureValue.php

 

	public static function addFeatureValueImport($id_feature, $name)
{
	$rq = Db::getInstance()->executeS('
		SELECT fv.`id_feature_value`
		FROM '._DB_PREFIX_.'feature_value fv
		LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl
			ON (fvl.`id_feature_value` = fv.`id_feature_value`)
		WHERE `value` = \''.pSQL($name).'\'
			AND fv.`id_feature` = '.(int)$id_feature.'
		GROUP BY fv.`id_feature_value` LIMIT 1
	');

	if (!isset($rq[0]['id_feature_value']) || !$id_feature_value = (int)$rq[0]['id_feature_value'])
	{
		// Feature doesn't exist, create it
		$feature_value = new FeatureValue();

		$languages = Language::getLanguages();
		foreach ($languages as $language)
			$feature_value->value[$language['id_lang']] = strval($name);

		$feature_value->id_feature = (int)$id_feature;
		$feature_value->custom = 1;
		$feature_value->add();

		return (int)$feature_value->id;
	}
	return (int)$id_feature_value;
}

 

à tester

changer

			$feature_value->custom = 1; 

remplacer

			$feature_value->custom = 0;

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour indesign,

 

J'ai un nouveau souci lors de l'importation de mes caractéristiques, en effet dans la valeur par défaut il me met le titre de la caractéristique et plus la valeur de cette dernière (screenshot en pièce jointe), alors que mon csv est identique aux importations précédentes. Avez-vous une idée d'où cela peut venir?

 

Merci d'avance,

Romain

post-523800-0-01422900-1376555111_thumb.jpg

Link to comment
Share on other sites

En pièce jointe vous trouverez un exemple de .csv qui fonctionnait avant. La dernière colonne regroupe toutes les caractéristiques pour l'importation. Celles d'avant ne sont pas utiles c'est seulement pour remplir plus facilement le tableau.

 

Pour la table ps_feature_lang j'ai bien les bons noms des caractéristiques et leur valeur id_lang sur 1.

 

Pour la table ps_feature_value_lang les valeurs sont bonnes et id_lang sur 1 par contre je vois bien les valeurs importées qui sont les titres des caractéristiques ce qui me fait dire que le problème se passe au moment de l'importation. J'ai essayé de les supprimer et de ré-importer mais cela n'a rien changé.

01.zip

Link to comment
Share on other sites

J'ai également remit la valeur à 1 pour "$feature_value->custom = 0;" dans le fichier FeatureValue.php est-ce qu'il y a un autre fichier qui entre en jeux lors de l'importation peut être que je pourrais vérifier de ce côté la?

Link to comment
Share on other sites

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...