thomas35
Utilisateur open source-
Compteur de contenus
2 -
Inscrit(e) le
-
Dernière visite
Messages posté(e)s par thomas35
-
-
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
<?phpinclude("../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é : ".$_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ée.</div>";
exit();
}
/* Effacement des produits */
mysql_query("DELETE FROM ".$_POST['nomtable']." WHERE lang = '".$_SESSION['langue']."'");
/* Passe l'autoincrément à 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éplace d'une ligne */
//echo "<hr><font class=normal>>Ligne Excel : $ligne </font>";
$liste = explode( ";",trim($ligne)); /* Champs séparé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 à 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 à 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 à 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ées : ".mysql_error();
echo "<br />Importation des produits stoppée.";
exit();
}
}
}
}
echo "<br /><div class=\"normal\">Nombre de produits importés avec succè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ératif du fichier </b>: CSV
<br />
<br />
Sé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ératif des colonnes du fichier CSV</b></font> :<br />
- Référence catégorie (mettre 0 si elle n'existe pas)<br />
- Référence Article<br />
- Nom Produit FR<br />
- Prix Vente TTC<br />
- TVA<br />
- Promotion<br />
- poids<br />
- Points cadeaux<br />
- Référence Marque <br />
- Réfé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ère ligne ne doit pas contenir les entêtes des colonnes<br />
- Il ne doit pas y avoir de formule dans le fichier CSV<br />
- Les virgules des chiffres doivent être symbolisées par des "."<br />
- Le point virgule indique impérativement un changement de colonne<br />
- Le fichier doit être fermé 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éalablement importé ou cré 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é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 !!
exportation de la liste produit sont format excel
dans Module PEEL Premium pour PEEL SHOPPING
Posté(e) · Signaler ce message
AS-tu essayé d'exporter directement depuis php-myadmin ?
C'est généralement ce que je fais.