Sign in to follow this  
Followers 0

[PREMIUM][v2.9][administrer/import.php] requête SQL INSERT inversion de colonnes

7 posts in this topic

Posted · Report post

Bonjour,

En étudiant la faisabilité d'un traitement de masse import/update par le script /administrer/import_produits.php, j'ai lu ceci :

$requete = "INSERT INTO ".$_POST['nomtable']." (

reference

, nom_".$_SESSION['langue']."

, prix

, tva

, promotion

, poids

, points

, image1

, image2

, marque

, reference_fournisseur

, descriptif_".$_SESSION['langue']."

, etat

, date_insere

, date_maj

)

VALUES (

'".$reference."'

, '".$nom."'

, '".$prix."'

, '".$tva."'

, '".$promotion."'

, '".$poids."'

, '".$point."'

, '".$marque."'

, '".$reference_fournisseur."'

, '".$image1."'

, '".$image2."'

, '".$descriptif."'

, '".$etat."'

, now()

, now()

)";

Les colonnes image1, image2, marque, reference_fournisseur prennent resectivement les valeurs $marque, $reference_fournisseur, $image1 et $image2.

Est-ce une erreur corrigée dans les versions ultérieures ?

DDD

Share this post


: post
Share on other sites

Posted · Report post

J'ai la version 3.x et voici mon code ...

A priori cela n'est pas corrigé !!!

			echo "valeur de nom : $nom<br />";


			if (!empty($nom)) {


			$requete = "INSERT INTO ".$_POST['nomtable']." (

			reference

			,  nom_".$_SESSION['langue']."

			,  prix

			,  tva

			,  promotion

			,  poids

			,  points

			,  image1

			,  image2

			,  marque

			,  descriptif_".$_SESSION['langue']."

			,  etat

			, date_insere

			, date_maj

			) 

			VALUES (

			'".$reference."'

			, '".$nom."'

			, '".$prix."'

			, '".$tva."'

			, '".$promotion."'

			, '".$poids."'

			, '".$point."'

			, '".$marque."'

			, '".$image1."'

			, '".$image2."'

			, '".$descriptif."'

			, '".$etat."'

			, now()

			, now()

			)";

Share this post


: post
Share on other sites

Posted · Report post

Il faut aussi noter que le fichier CSV exemple est faux je crois :)

Share this post


: post
Share on other sites

Posted · Report post

La documentation est forcément bonne car un projet commence toujours par la rédaction et le coding vient après !

Donc, en v2.9, il faut également changer

$image1 = $liste[$i+9];

$image2 = $liste[$i+10];

$marque = addslashes($liste[$i+11]);

$reference_fournisseur = addslashes($liste[$i+12]);

en
$marque = addslashes($liste[$i+9]);

$reference_fournisseur = addslashes($liste[$i+10]);

$image1 = $liste[$i+11];

$image2 = $liste[$i+12];

Share this post


: post
Share on other sites

Posted · Report post

La documentation est forcément bonne car un projet commence toujours par la rédaction et le coding vient après !

En théorie oui, chargez la base avec le fichier exemple csv founit :)

Share this post


: post
Share on other sites

Posted · Report post

En théorie oui, chargez la base avec le fichier exemple csv founit :)
Le fichier exemple_prod.csv contient
1;0;REF1;Nom du produit en FR;123;19.6;0;100;0;Sony;REF CONS 1;image1.gif;image2.gif; ceci est un descriptif du produit;1

1;0;REF2;Nom du produit en FR;123;19.6;0;100;0;Sony;REF CONS 1;image1.gif;image2.gif; ceci est un descriptif du produit;1

2;0;REF3;Nom du produit en FR;123;19.6;0;100;0;Sony;REF CONS 1;image1.gif;image2.gif; ceci est un descriptif du produit;1

2;0;REF4;Nom du produit en FR;123;19.6;0;100;0;Sony;REF CONS 1;image1.gif;image2.gif; ceci est un descriptif du produit;1

2;0;REF5;Nom du produit en FR;123;19.6;0;100;0;Sony;REF CONS 1;image1.gif;image2.gif; ceci est un descriptif du produit;1

et le script d'import contient
$cat1_id = $liste[$i];

$cat2_id = $liste[$i+1];

$reference = addslashes($liste[$i+2]);

$nom = addslashes($liste[$i+3]);

$prix = $liste[$i+4] * (1 + $liste[$i+5]/100);

$prix = str_replace(",",".",$prix);

$tva = str_replace(",",".",$liste[$i+5]);

$promotion = str_replace(",",".",$liste[$i+6]);

$poids = str_replace(",",".",$liste[$i+7]);

$point = str_replace(",",".",$liste[$i+8]);

$image1 = $liste[$i+9];

$image2 = $liste[$i+10];

$marque = addslashes($liste[$i+11]);

$reference_fournisseur = addslashes($liste[$i+12]);

$descriptif = addslashes($liste[$i+13]);

$etat = intval($liste[$i+14]);

donc la variable $image1 contient la marque, $image2 la réf constructeur, $marque l'image miniature et $reference_fournisseur = l'image zoom.

et

$requete = "INSERT INTO ".$_POST['nomtable']." (

reference

, nom_".$_SESSION['langue']."

, prix

, tva

, promotion

, poids

, points

, image1

, image2

, marque

, reference_fournisseur

, descriptif_".$_SESSION['langue']."

, etat

, date_insere

, date_maj

)

VALUES (

'".$reference."'

, '".$nom."'

, '".$prix."'

, '".$tva."'

, '".$promotion."'

, '".$poids."'

, '".$point."'

, '".$marque."'

, '".$reference_fournisseur."'

, '".$image1."'

, '".$image2."'

, '".$descriptif."'

, '".$etat."'

, now()

, now()

)";

et tout est importé correctement mais la lecture du script php est troublante ! Les 4 variables ne contiennent pas ce que suggère leur nom... Est-ce que le reste de l'application est aussi confusionnel ? B)

Personnellement, j'ai corrigé mon script afin d'améliorer la maintenance et d'implémenter l'import par update des références existantes !

J'ai vu un fichier xml contenant apparemment un export de la table produit.

Existe-t-il un import à partir du xml ?

Si non, est-ce en projet ?

Ce serait très utile dans le cadre de transmission de données B2B !!!

Share this post


: post
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
Sign in to follow this  
Followers 0

Twitter Advisto ecommerce

Facebook PEEL Shopping