Moteur D'Intégration CSV

1 message dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

Suite à des recherches concernant un problème avec le moteur d'importation, voici une petite contribution qui je l'espère pourra vous aider.

Tout d'abord, problème au niveau du fichier .CSV crée avec les nouvelles versions de EXCEL. Il faut donc autoriser l'extension dans le fichier :

configuration.inc.php

Ligne 119; remplacer le code par

$registered_types = array(

"image/gif" => ".gif",

"image/pjpeg" => ".jpg, .jpeg",

"image/jpeg" => ".jpg, .jpeg",

"image/x-png" => ".png",

"image/png" => ".png",

"text/plain" => ".html, .php, .txt, .inc, .csv",

"text/comma-separated-values" => ".csv",

"application/comma-separated-values" => ".csv",

"application/vnd.ms-excel" => ".csv"

);

$allowed_types = array("image/gif", "image/pjpeg", "image/jpeg", "image/x-png", "image/png","text/comma-separated-values","text/plain","application/comma-separated-values", "application/vnd.ms-excel");

Ce problème avait déjà été résolu sur le Forum!!

Ensuite ci-dessous le code complet de ma page : administrer/import_produits.php

<?php

include("../configuration.inc.php");

necessite_identification();

necessite_priv("admin");

$DOC_TITLE = "Module d'importation";

include("modeles/haut.php");

switch (vb($_POST['action'])) {

/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */

case "ajouter":

$repertoire_upload = "$dirroot/upload/";

/* Importation du fichier */

echo "Type de fichier import&eacute; : ".$_FILES['fichier']['type']."<br />";

if (!empty($_FILES['fichier']['name'])) {

$fichier = upload($_FILES['fichier']);

} else {

$fichier = $_POST['fichier'];

}

echo "Emplacement du fichier : ".$repertoire_upload.$fichier."<br />";

echo "<table border=0 cellspacing=1 cellpadding=0 width=100%>";

echo "<tr><td class=\"menu\" >Statut de l'importation</td></tr>";

echo "</table>";

/* On ouvre le fichier en lecture seulement */

if ($fichier != "") {

if (file_exists($repertoire_upload.$fichier)) {

$fp = fopen($repertoire_upload.$fichier, "r");

}else{ /* le fichier n'existe pas */

echo "<div class=normal>Fichier introuvable !<br />Importation stopp&eacute;e.</div>";

exit();

}

/* Effacement des produits */

mysql_query("DELETE FROM ".$_POST['nomtable']." WHERE lang = '".$_SESSION['langue']."'");

/* Passe l'autoincr&eacute;ment &agrave; 1 */

mysql_query("ALTER TABLE ".$_POST['nomtable']." AUTO_INCREMENT = 1");

/* Effacement des jointures */

mysql_query("DELETE FROM peel_produits_categories WHERE lang = '".$_SESSION['langue']."'");

$nbprod=0;

while (!feof($fp)) { /* Tant qu'on atteind pas fin de fichier */

$ligne = fgets($fp,4096); /* On se d&eacute;place d'une ligne */

//echo "<hr><font class=normal>>Ligne Excel : $ligne </font>";

$liste = explode( ";",trim($ligne)); /* Champs s&eacute;par&eacute;s par ; */

/* On assigne les variables */

if ($liste) {

$i=0;

$liste[$i]=str_replace('<', '<',$liste[$i]);

$liste[$i]=str_replace('>', '>',$liste[$i]);

$liste[$i]=str_replace('"', '"',$liste[$i]);

$liste[$i]=str_replace('"', '',$liste[$i]);

$liste[$i]=str_replace("'", "\'",$liste[$i]);

// Identifiant de la catégorie de niveau 1

$cat_id = vb($liste[$i]);

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

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

$prix = str_replace(",",".",vb($liste[$i+3]));

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

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

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

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

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

$image1 = addslashes(vb($liste[$i+8]));

$image2 = addslashes(vb($liste[$i+9]));

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

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

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

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

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

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

, reference_fournisseur

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

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

, etat

, date_insere

, date_maj

)

VALUES (

'".$reference."'

, '".$nom."'

, '".$prix."'

, '".$tva."'

, '".$promotion."'

, '".$poids."'

, '".$point."'

, '".$image1."'

, '".$image2."'

, '".$marque."'

, '".$reference_fournisseur."'

, '".$descriptif."'

, '".$description."'

, '".$etat."'

, now()

, now()

)";

mysql_query($requete) or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<br />' . MYSQL_ERROR()."<br />Valeur de la requete : $requete");

$produit_id = mysql_insert_id();

$nbprod = $nbprod + 1;

if (!empty($cat_id)) {

$sqlCat = "INSERT INTO peel_produits_categories (produit_id, categorie_id) VALUES ('$produit_id', '$cat_id')";

mysql_query($sqlCat) or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<br />$sqlCat : ' . MYSQL_ERROR());

}

$marque_id = $marque;

if (!empty($marque)) {

$sqlCat = "INSERT INTO peel_produits_marques (marque_id, produit_id) VALUES ('$marque_id', '$produit_id')";

mysql_query($sqlCat) or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<br />$sqlCat : ' . MYSQL_ERROR());

}

if (mysql_error()){ /* Erreur base de donnees, surement la table qu'il faut creer */

echo $requete;

echo "<br />Erreur dans la base de donn&eacute;es : ".mysql_error();

echo "<br />Importation des produits stopp&eacute;e.";

exit();

}

}

}

}

echo "<br /><div class=\"normal\">Nombre de produits import&eacute;s avec succ&egrave;s : $nbprod.</div>";

fclose($fp);

}

break;

/* FORMULAIRE DE CHOIX D'IMPORTATION */

default:

?>

<table border="0" cellspacing="1" cellpadding="0" width="760">

<tr ><td class="entete" colspan="3">IMPORTER UN FICHIER</td></tr>

<tr><td colspan="3" class="normal">

<p><b>Format imp&eacute;ratif du fichier </b>: CSV

<br />

<br />

S&eacute;parateur : <font size="4"><b>;</b></font> point virgule<br />

Fichier exemple : <a href="exemple_prod.csv">exemple_prod.csv</a><br />

<br />

<font size="+1"><b>Ordre imp&eacute;ratif des colonnes du fichier CSV</b></font> :<br />

- R&eacute;f&eacute;rence cat&eacute;gorie (mettre 0 si elle n'existe pas)<br />

- R&eacute;f&eacute;rence Article<br />

- Nom Produit FR<br />

- Prix Vente TTC<br />

- TVA<br />

- Promotion<br />

- poids<br />

- Points cadeaux<br />

- R&eacute;f&eacute;rence Marque <br />

- R&eacute;f&eacute;rence Fournisseur<br />

- Image vignette<br />

- Image zoom<br />

- Descriptif du produit FR<br />

- Description du produit FR<br />

- Etat (1 = en ligne, O = en attente)<br />

<br />

<b>Attention :</b><br />

- La premi&egrave;re ligne ne doit pas contenir les ent&ecirc;tes des colonnes<br />

- Il ne doit pas y avoir de formule dans le fichier CSV<br />

- Les virgules des chiffres doivent &ecirc;tre symbolis&eacute;es par des "."<br />

- Le point virgule indique imp&eacute;rativement un changement de colonne<br />

- Le fichier doit &ecirc;tre ferm&eacute; dans EXCEL pour pouvoir l'uploader<br />

- Les photos doivent se trouver dans le répertoire <?php echo $repertoire_upload ?><br />

</p>

<p>

<b>Avant d'importer un fichier,<br />

1. Assurez vous que le fichier ne comporte pas de lignes blanches.<br />

2. Assurez vous que vous avez pr&eacute;alablement import&eacute; ou cr&eacute; les familles de produit</b>

</p>

</td></tr>

<form method="post" action="<?=$_SERVER['PHP_SELF']?>" name="categories" enctype="multipart/form-data">

<input type="hidden" name="action" value="ajouter">

<input type="hidden" name="nomtable" value="peel_produits">

<tr>

<td class="label">Importation du fichier de donn&eacute;es :</td>

<td align="left"> <input class="formulaire1" type="file" name="fichier"> </td>

<td align="center"> <input class="formulaire1" type="submit" name="submit" value="Importer"> </td>

</tr>

</table>

<input type="hidden" name="action" value="ajouter">

</form>

<?

break;

}

include("modeles/bas.php");

?>

J'ai effectué quelques changements :

- On ajoute directement le prix TTC.

- Les champs "reference fournisseur" + "designation produit" ont été ajoutés au fichier CSV

- Seul l'ID de la marque est à ajouter

Pensez à sauvegarder votre page avant d'effectuer les modifications !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping