Trier un fichier txt pour alimenter un BDD my
Résolu
chooky97150
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
chooky97150 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
chooky97150 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite exporter via un logiciel de caisse la table des articles au format .txt séparé par des ";" que vous pouvez voir ci dessous et stocker dans une table la ligne précédé d'un AR et dans une autre table les lignes précédés de DE en rajoutant à chaque ligne le code article du produit que l'on peut trouver dans le premier champs de la ligne AR qui les précède. o_O
je me prend bien la tête mais je ne maitrise pas assez les REGEX pour parvenir à mes fins. ( y compris lire dans un fichier txt et réécrire les 2 tables dans 2 fichiers txt différents ) si vous pouviez juste me mettre sur la voie :lol:
AR;9999997;essai export textile;INCO;BBBBBBB;08ETE;Vrai;41;Faux;;TEXT;10;41000;0;0;Faux;Modèle;;;;ASS;;
DE;A1;;;10;111111111;;;Faux;Vrai;Assortiment 1;;
DE;A2;;;10;22222222;;;Faux;Vrai;Assortiment 2;;
DE;A3;;;10;333333333;;;Faux;Vrai;Assortiment 3;;
DE;A4;;;15;44444444;;;Faux;Vrai;Assortiment 4;;
DE;A5;;;15;5555555;;;Faux;Vrai;Assortiment 5;;
DE;A6;;;15;6666666;;;Faux;Vrai;Assortiment 6;;
AR;9999998;essai david chaussure;INCO;123458;;Vrai;50;Faux;;CHAU;5;50010;0;0;Faux;Modèle;;;;;PBR1;
DE;;0;;5;111111111111;;;Faux;Vrai;;0;
DE;;1;;5;222222222222;;;Faux;Vrai;;1;
DE;;2;;5;33333333333;;;Faux;Vrai;;2;
DE;;3;;8;444444444444;;;Vrai;Vrai;;3;
DE;;4;;8;555555555555;;;Faux;Vrai;;4;
AR;9999999;ESSAI PRODUIT DAVID;INCO;AAAAAAA;CT07;Vrai;20;Vrai;;JOUE;0;20000;0;0;Vrai;Produit;12222222222;13333;14444444444;;;
Je souhaite exporter via un logiciel de caisse la table des articles au format .txt séparé par des ";" que vous pouvez voir ci dessous et stocker dans une table la ligne précédé d'un AR et dans une autre table les lignes précédés de DE en rajoutant à chaque ligne le code article du produit que l'on peut trouver dans le premier champs de la ligne AR qui les précède. o_O
je me prend bien la tête mais je ne maitrise pas assez les REGEX pour parvenir à mes fins. ( y compris lire dans un fichier txt et réécrire les 2 tables dans 2 fichiers txt différents ) si vous pouviez juste me mettre sur la voie :lol:
AR;9999997;essai export textile;INCO;BBBBBBB;08ETE;Vrai;41;Faux;;TEXT;10;41000;0;0;Faux;Modèle;;;;ASS;;
DE;A1;;;10;111111111;;;Faux;Vrai;Assortiment 1;;
DE;A2;;;10;22222222;;;Faux;Vrai;Assortiment 2;;
DE;A3;;;10;333333333;;;Faux;Vrai;Assortiment 3;;
DE;A4;;;15;44444444;;;Faux;Vrai;Assortiment 4;;
DE;A5;;;15;5555555;;;Faux;Vrai;Assortiment 5;;
DE;A6;;;15;6666666;;;Faux;Vrai;Assortiment 6;;
AR;9999998;essai david chaussure;INCO;123458;;Vrai;50;Faux;;CHAU;5;50010;0;0;Faux;Modèle;;;;;PBR1;
DE;;0;;5;111111111111;;;Faux;Vrai;;0;
DE;;1;;5;222222222222;;;Faux;Vrai;;1;
DE;;2;;5;33333333333;;;Faux;Vrai;;2;
DE;;3;;8;444444444444;;;Vrai;Vrai;;3;
DE;;4;;8;555555555555;;;Faux;Vrai;;4;
AR;9999999;ESSAI PRODUIT DAVID;INCO;AAAAAAA;CT07;Vrai;20;Vrai;;JOUE;0;20000;0;0;Vrai;Produit;12222222222;13333;14444444444;;;
A voir également:
- Trier un fichier txt pour alimenter un BDD my
- What is my movie français - Télécharger - Divers TV & Vidéo
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier bin - Guide
- Trier un tableau excel - Guide
17 réponses
oui, il est stocké sur le serveur.
je ne maîtrise absolument pas les REGEX, et je ne sais absolument comment faire pour séparer les lignes précédés de AR et celles de DE, et je ne sais pas non plus comment récupérer le code article de la ligne AR pour le rajouter dans un nouveau champs des lignes DE concernés
je ne maîtrise absolument pas les REGEX, et je ne sais absolument comment faire pour séparer les lignes précédés de AR et celles de DE, et je ne sais pas non plus comment récupérer le code article de la ligne AR pour le rajouter dans un nouveau champs des lignes DE concernés
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
A mon avis tu ferais bien d'aller faire un tour sur ce site : http://www.expreg.com/index.php Ça te permettrait de commencer un minimum de code et de venir poser tes questions une fois que tu auras entamé qq chose.
merci Tassin
mais justement, c'est le début qui me manque. une fois que j'aurais les lignes précédés d'un AR d'un côté et les lignes précédés d'un DE de l'autre je me débrouillerais avec le PHP. mais j'entrave absolument rien aux REGEX pour effectuer ce tri.
mais justement, c'est le début qui me manque. une fois que j'aurais les lignes précédés d'un AR d'un côté et les lignes précédés d'un DE de l'autre je me débrouillerais avec le PHP. mais j'entrave absolument rien aux REGEX pour effectuer ce tri.
Tu devrais utilisé la fonction comme suit :
Ceci permet de déterminer les lignes qui commencent par AR.
Tu fais de même pour les lignes en DE.
preg_match('`^AR(:alnum:)*`')
Ceci permet de déterminer les lignes qui commencent par AR.
Tu fais de même pour les lignes en DE.
Peux tu STP me dire si la logique ci dessous est bonne.
merci
-> j'ouvre le fichier txt
-> on fait une boucle pour lire chaque ligne du fichier texte
-> si la ligne commence par AR
- j'enregistre la ligne
- je controle si ce code article existe déjà dans la table article
- si oui { je remplace es champs existants par ceux contenus dans la ligne; }
- sinon { j'insère la ligne dans la table; }
- je mémorise le code article
- je supprimer les lignes de la table descriptif ou le code article= code_article mémorisé
-> si la ligne commence par DE
- j'insère dans la table descriptif une nouvelle entrée avec dans un champs le code article mémorisé et dans les autres champs les valeurs lus dans la ligne du fichier txt
-> ceci jusqu'à la fin de la boucle
-> on ferme le fichier txt
est ce que c'est le bon chemin à prendre?
merci
-> j'ouvre le fichier txt
-> on fait une boucle pour lire chaque ligne du fichier texte
-> si la ligne commence par AR
- j'enregistre la ligne
- je controle si ce code article existe déjà dans la table article
- si oui { je remplace es champs existants par ceux contenus dans la ligne; }
- sinon { j'insère la ligne dans la table; }
- je mémorise le code article
- je supprimer les lignes de la table descriptif ou le code article= code_article mémorisé
-> si la ligne commence par DE
- j'insère dans la table descriptif une nouvelle entrée avec dans un champs le code article mémorisé et dans les autres champs les valeurs lus dans la ligne du fichier txt
-> ceci jusqu'à la fin de la boucle
-> on ferme le fichier txt
est ce que c'est le bon chemin à prendre?
Ta démarche me semble tout à fait correcte en effet. Tu devrais t'en sortir sans Regex à la limite. Je pense qu'une fois que tu as lu ta ligne tu devrais pouvoir la manipuler avec des fonctions sur les chaines, a savoir :
strpos qui permet de rechercher une chaine dans une autre.
strstr qui permet de récupérer une achaine allant de la première occurence d'un mot à la fin.
Tu pourras trouver ttes les fonctions sur les chaines sur ce site : https://www.php.net/manual/fr/function.strstr.php
Bon courage
strpos qui permet de rechercher une chaine dans une autre.
strstr qui permet de récupérer une achaine allant de la première occurence d'un mot à la fin.
Tu pourras trouver ttes les fonctions sur les chaines sur ce site : https://www.php.net/manual/fr/function.strstr.php
Bon courage
merci TASSIN, tu as complètement raison, je ne sais pas du tout pourquoi je m'étais mis dans la tête que j'avais absolument besoin de REGEX que je ne maîtrise pas du tout.
j'ai pondu un bout de code hier qui marche pas mal, il me reste à traiter le table description_articles
je colle le code, si tu vois des failles ou amélioration à apporter c'est avec plaisir que je colmaterais tout ça.
je retourne dessus et viendrais poster le reste du code et j'èspère marquer ce post comme résolu.
merci encore
// on commence à travailler ;o)
if (!$fp = fopen("test_table.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
// on se connecte à la base de données
mysql_connect("$serveur_mysql","$utilisateur_mysql","$mot_de_passe_mysql") or die ('erreur de connexion'.mysql_error());
mysql_select_db("$bdd") or die ('la base de données n\'existe pas'.mysql_error());
// +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-
// on travaille sur le fichier txt
// +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-
while(!feof($fp)) { // on li chaque ligne
$Ligne = fgets($fp,255);
$champs = explode(";", $Ligne);
if($champs[0]=='AR') { // la ligne correspond a un article
$code_article=$champs[1]; } // on mémorise le code article
$cherche_code_article=mysql_query("SELECT * FROM articles_base WHERE code_article='$code_article'") or die ('erreur lors de la recherche du code article dans la nase de données'.mysql_error()); // on regarde si ce code article est déjà existant
$presence_code_article=mysql_fetch_array($cherche_code_article);
echo $presence_code_article;
if(!$presence_code_article) // le code article n'existe pas on l'insère dans la bas de données
{ mysql_query("INSERT INTO articles_base VALUES('','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]','$champs[13]','$champs[14]','$champs[15]','$champs[16]','$champs[17]','$champs[18]','$champs[19]','$champs[20]','$champs[21]')") or die ('erreur de remplissage de la table articles'.mysql_error());;
}
// le code article existe, on met à jour les entrées de la BDD ou code_article=code_article_mémorisé
else { mysql_query("UPDATE articles_base SET code_article='$champs[0]',code_fournisseur='$champs[0]',ref_produit='$champs[0]',collection='$champs[0]',famille='$champs[0]',fin_serie='$champs[0]',grille_tarif='$champs[0]',groupe='$champs[0]',prix_vente='$champs[0]',sous_famille='$champs[0]',stock='$champs[0]',stock_dispo='$champs[0]',stocke='$champs[0]',type_article='$champs[0]',code_barre1='$champs[0]',code_barre2='$champs[0]',code_barre3='$champs[0]',grille_taille='$champs[0]',grille_pointure='$champs[0]',grille_couleur='$champs[0]' WHERE code_article='$code_article'") or die ('erreur de mise à jour de la table articles'.mysql_error());
}
}
if($champs[0]=='DE') { echo $code_article.';'.$Ligne.'<br />'; }
// On stocke l'ensemble des lignes dans une variable
$Fichier .= $Ligne;
}
fclose($fp); // On ferme le fichier
}
j'ai pondu un bout de code hier qui marche pas mal, il me reste à traiter le table description_articles
je colle le code, si tu vois des failles ou amélioration à apporter c'est avec plaisir que je colmaterais tout ça.
je retourne dessus et viendrais poster le reste du code et j'èspère marquer ce post comme résolu.
merci encore
// on commence à travailler ;o)
if (!$fp = fopen("test_table.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
// on se connecte à la base de données
mysql_connect("$serveur_mysql","$utilisateur_mysql","$mot_de_passe_mysql") or die ('erreur de connexion'.mysql_error());
mysql_select_db("$bdd") or die ('la base de données n\'existe pas'.mysql_error());
// +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-
// on travaille sur le fichier txt
// +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+-
while(!feof($fp)) { // on li chaque ligne
$Ligne = fgets($fp,255);
$champs = explode(";", $Ligne);
if($champs[0]=='AR') { // la ligne correspond a un article
$code_article=$champs[1]; } // on mémorise le code article
$cherche_code_article=mysql_query("SELECT * FROM articles_base WHERE code_article='$code_article'") or die ('erreur lors de la recherche du code article dans la nase de données'.mysql_error()); // on regarde si ce code article est déjà existant
$presence_code_article=mysql_fetch_array($cherche_code_article);
echo $presence_code_article;
if(!$presence_code_article) // le code article n'existe pas on l'insère dans la bas de données
{ mysql_query("INSERT INTO articles_base VALUES('','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]','$champs[13]','$champs[14]','$champs[15]','$champs[16]','$champs[17]','$champs[18]','$champs[19]','$champs[20]','$champs[21]')") or die ('erreur de remplissage de la table articles'.mysql_error());;
}
// le code article existe, on met à jour les entrées de la BDD ou code_article=code_article_mémorisé
else { mysql_query("UPDATE articles_base SET code_article='$champs[0]',code_fournisseur='$champs[0]',ref_produit='$champs[0]',collection='$champs[0]',famille='$champs[0]',fin_serie='$champs[0]',grille_tarif='$champs[0]',groupe='$champs[0]',prix_vente='$champs[0]',sous_famille='$champs[0]',stock='$champs[0]',stock_dispo='$champs[0]',stocke='$champs[0]',type_article='$champs[0]',code_barre1='$champs[0]',code_barre2='$champs[0]',code_barre3='$champs[0]',grille_taille='$champs[0]',grille_pointure='$champs[0]',grille_couleur='$champs[0]' WHERE code_article='$code_article'") or die ('erreur de mise à jour de la table articles'.mysql_error());
}
}
if($champs[0]=='DE') { echo $code_article.';'.$Ligne.'<br />'; }
// On stocke l'ensemble des lignes dans une variable
$Fichier .= $Ligne;
}
fclose($fp); // On ferme le fichier
}
Pour l'instant tout semble correct. C nikel ;-)
Juste une petite interrogation de ma part :
Es-tu sûr que ton fichier texte contient bien à chaque fois les champs voulus ?
Je m'explique :
Dans l'instruction suivante :
Es tu sûr de pouvoir récupérer à chaque fois $champs[...] ? Tu pourrais juste faire un test à mon avis pour être sûr d'insérer des valeurs correctes dans ta base.
C juste mon avis mais si tu es sûr que ton fichier sera tjs correct alors pas besoin de faire le test ;-)
Juste une petite interrogation de ma part :
Es-tu sûr que ton fichier texte contient bien à chaque fois les champs voulus ?
Je m'explique :
Dans l'instruction suivante :
mysql_query("INSERT INTO articles_base VALUES('','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]','$champs[13]','$champs[14]','$champs[15]','$champs[16]','$champs[17]','$champs[18]','$champs[19]','$champs[20]','$champs[21]')") or die ('erreur de remplissage de la table articles'.mysql_error());;
Es tu sûr de pouvoir récupérer à chaque fois $champs[...] ? Tu pourrais juste faire un test à mon avis pour être sûr d'insérer des valeurs correctes dans ta base.
C juste mon avis mais si tu es sûr que ton fichier sera tjs correct alors pas besoin de faire le test ;-)
ben, j'ai fait un essais que pour l'ajout car j'ai pas terminé pour le modificatiion de la table, mais ça fonctionne. apparemment avec le explode(), lorsqu'il ya 2 ;; juxtaposés ( correspondant à un champs non renseigné dans le logiciel de caisse) , il insère bien un valeur (vide) dans le champs concerné. mais tu as raison que c'est vraiment de la pure fainéantise :o/
@+ tard pour le reste ;o)) et merci encore
@+ tard pour le reste ;o)) et merci encore
Bonjour TASSIN et tout les internautes,
voici le bout de code terminé, ça fonctionne. Si il y a une erreur ou une amélioration à apporter, je suis preneur.
Si ça vous parait bon, merci de me le confirmer afin que je vienne marquer le sujet comme résolu.
* J'aurais besoin d'une petite explication supplémentaire, j'ai été obligé de passer le champs code_article en varchar(8) au lieu de Mediumint(8) mit initialement car l'entrée était modifié, elle ne correspondait pas au code article, je ne comprend pas pourquoi? su quelqu'un pouvait me donner une explication.
* Idem pour incrémenter une variable. Dans la boucle je suis obligé de mettre $variable=$variable+1; car $variable=$variable++; ne fonctionne pas. Je ne comprend pas :o(
merci
voici le bout de code terminé, ça fonctionne. Si il y a une erreur ou une amélioration à apporter, je suis preneur.
Si ça vous parait bon, merci de me le confirmer afin que je vienne marquer le sujet comme résolu.
* J'aurais besoin d'une petite explication supplémentaire, j'ai été obligé de passer le champs code_article en varchar(8) au lieu de Mediumint(8) mit initialement car l'entrée était modifié, elle ne correspondait pas au code article, je ne comprend pas pourquoi? su quelqu'un pouvait me donner une explication.
* Idem pour incrémenter une variable. Dans la boucle je suis obligé de mettre $variable=$variable+1; car $variable=$variable++; ne fonctionne pas. Je ne comprend pas :o(
merci
// on se connecte à la base de données mysql_connect("$serveur_mysql","$utilisateur_mysql","$mot_de_passe_mysql") or die ('erreur de connexion'.mysql_error()); mysql_select_db("$bdd") or die ('la base de données n\'existe pas'.mysql_error()); // +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+- // on travaille sur le fichier txt // +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+ $total_articles=0; $articles_ajoutes=0; $articles_modifiés=0; $articles_declines=0; // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- while(!feof($fp)) { // on li chaque ligne $Ligne = fgets($fp,255); $champs = explode(";", $Ligne); if($champs[0]=='AR') { // la ligne correspond a un article $total_articles=$total_articles+1; // on compte le nombres d'articles $code_article=$champs[1]; // on mémorise le code article // on regarde si l'article existe déjà $cherche_code_article=mysql_query("SELECT COUNT(*) AS cpt_articles FROM articles_base WHERE code_article='$code_article'"); $nbr_articles=mysql_fetch_array($cherche_code_article); $nbre_articles=$nbr_articles[cpt_articles]; // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*- if($nbre_articles==0) // le code article n'existe pas on l'insère dans la bas de données { mysql_query("INSERT INTO articles_base VALUES('','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]','$champs[13]','$champs[14]','$champs[15]','$champs[16]','$champs[17]','$champs[18]','$champs[19]','$champs[20]','$champs[21]','$champs[22]')") or die ('erreur de remplissage de la table articles'.mysql_error()); $articles_ajoutes=$articles_ajoutes+1; // on compte le nombres d'articles ajoutés } // le code article existe, on met à jour les entrées de la BDD ou code_article=code_article_mémorisé else { mysql_query("UPDATE articles_base SET code_article='$code_article',designation='$champs[2]',code_fournisseur='$champs[3]',ref_produit='$champs[4]',collection='$champs[5]',famille='$champs[6]',fin_serie='$champs[7]',grille_tarif='$champs[8]',groupe='$champs[9]',prix_vente='$champs[10]',sous_famille='$champs[11]',stock='$champs[12]',stock_dispo='$champs[13]',stocke='$champs[14]',type_article='$champs[15]',code_barre1='$champs[16]',code_barre2='$champs[17]',code_barre3='$champs[18]',grille_taille='$champs[19]',grille_pointure='$champs[20]',grille_couleur='$champs[21]' WHERE code_article='$code_article'") or die ('erreur de mise à jour de la table articles'.mysql_error()); mysql_query("DELETE FROM articles_declinaisons WHERE code_article='$champs[1]'"); $articles_modifies=$articles_modifies+1; // on compte le nombres d'articles modifiés } } if($champs[0]=='DE') { mysql_query("INSERT INTO articles_declinaisons values('','$code_article','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]')") or die ('erreur de remplissage de la table articles_declinaisons'.mysql_error()); $articles_declines=$articles_declines+1; // on compte le nombres d'articles déclinés } // On stocke l'ensemble des lignes dans une variable $Fichier .= $Ligne; } echo ' <br /><br />Mise à jour de la base de données éffectuée<br /> -----------------------------------------------------------------------------------------------<br /> <b>'.$articles_ajoutes.' articles</b> ont été ajouté<br /> -----------------------------------------------------------------------------------------------<br /> <b>'.$articles_modifies.' articles</b> ont été modifié<br /> -----------------------------------------------------------------------------------------------<br /> <b>'.$articles_declines.' articles</b> posèdent des déclinaisons sur un total de <b>'.$total_articles.' articles</b> mis à jour.<br /> -----------------------------------------------------------------------------------------------<br /><br /> '; mysql_close(); // on ferme la base de données fclose($fp); // On ferme le fichier }
Salut,
Content que tu y sois arrivé t un vrai chef ;-)
Pour ta première question : c'est lors de l'insertion que ça merdait ?
Pour ta deuxième question Tu n'as pas besoin de faire l'affectation. Tu as juste à écrire $variable++ ce qui équivaut $variable=$variable+1 (voir : http://www.manuelphp.com/php/language.operators.increment.php
Content que tu y sois arrivé t un vrai chef ;-)
Pour ta première question : c'est lors de l'insertion que ça merdait ?
Pour ta deuxième question Tu n'as pas besoin de faire l'affectation. Tu as juste à écrire $variable++ ce qui équivaut $variable=$variable+1 (voir : http://www.manuelphp.com/php/language.operators.increment.php
merci pour la deuxième question ... c'est rectifié
pour la première, ça ne merde pas vraiment, tout se passe normalement, sauf que quand je vais lire l'entrée, la valeur écrite dans la table ne correspond absolument pas au code article ni à rien d'autre qui pourrait exister dans le fichier txt.
voici le code final si ça peut intéresser quelqu'un
pour la première, ça ne merde pas vraiment, tout se passe normalement, sauf que quand je vais lire l'entrée, la valeur écrite dans la table ne correspond absolument pas au code article ni à rien d'autre qui pourrait exister dans le fichier txt.
voici le code final si ça peut intéresser quelqu'un
// on commence à travailler ;o) if (!$fp = fopen("test_table.txt","r")) { echo "Echec de l'ouverture du fichier"; exit; } else { // on se connecte à la base de données mysql_connect("$serveur_mysql","$utilisateur_mysql","$mot_de_passe_mysql") or die ('erreur de connexion'.mysql_error()); mysql_select_db("$bdd") or die ('la base de données n\'existe pas'.mysql_error()); // +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+- // on travaille sur le fichier txt // +-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+ $total_articles=0; $articles_ajoutes=0; $articles_modifiés=0; $articles_declines=0; // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- while(!feof($fp)) { // on li chaque ligne $Ligne = fgets($fp,255); $champs = explode(";", $Ligne); if($champs[0]=='AR') { // la ligne correspond a un article $total_articles++; // on compte le nombres d'articles $code_article=$champs[1]; // on mémorise le code article $code_article_prec=0; // on regarde si l'article existe déjà $cherche_code_article=mysql_query("SELECT COUNT(*) AS cpt_articles FROM articles_base WHERE code_article='$code_article'"); $nbr_articles=mysql_fetch_array($cherche_code_article); $nbre_articles=$nbr_articles[cpt_articles]; // *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*- if($nbre_articles==0) // le code article n'existe pas on l'insère dans la bas de données { mysql_query("INSERT INTO articles_base VALUES('','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]','$champs[13]','$champs[14]','$champs[15]','$champs[16]','$champs[17]','$champs[18]','$champs[19]','$champs[20]','$champs[21]','$champs[22]')") or die ('erreur de remplissage de la table articles'.mysql_error()); $articles_ajoutes=$articles_ajoutes+1; // on compte le nombres d'articles ajoutés } // le code article existe, on met à jour les entrées de la BDD ou code_article=code_article_mémorisé else { mysql_query("UPDATE articles_base SET code_article='$code_article',designation='$champs[2]',code_fournisseur='$champs[3]',ref_produit='$champs[4]',collection='$champs[5]',famille='$champs[6]',fin_serie='$champs[7]',grille_tarif='$champs[8]',groupe='$champs[9]',prix_vente='$champs[10]',sous_famille='$champs[11]',stock='$champs[12]',stock_dispo='$champs[13]',stocke='$champs[14]',type_article='$champs[15]',code_barre1='$champs[16]',code_barre2='$champs[17]',code_barre3='$champs[18]',grille_taille='$champs[19]',grille_pointure='$champs[20]',grille_couleur='$champs[21]' WHERE code_article='$code_article'") or die ('erreur de mise à jour de la table articles'.mysql_error()); mysql_query("DELETE FROM articles_declinaisons WHERE code_article='$champs[1]'"); $articles_modifies++; // on compte le nombres d'articles modifiés } } if($champs[0]=='DE') { mysql_query("INSERT INTO articles_declinaisons values('','$code_article','$champs[1]','$champs[2]','$champs[3]','$champs[4]','$champs[5]','$champs[6]','$champs[7]','$champs[8]','$champs[9]','$champs[10]','$champs[11]','$champs[12]')") or die ('erreur de remplissage de la table articles_declinaisons'.mysql_error()); if($code_article!=$code_article_prec) { $articles_declines++; } // on compte le nombres d'articles déclinés $code_article_prec=$code_article; } // On stocke l'ensemble des lignes dans une variable $Fichier .= $Ligne; } echo ' <br /><br />Mise à jour de la base de données éffectuée<br /> -----------------------------------------------------------------------------------------------<br /> <b>'.$articles_ajoutes.' articles</b> ont été ajouté<br /> -----------------------------------------------------------------------------------------------<br /> <b>'.$articles_modifies.' articles</b> ont été modifié<br /> -----------------------------------------------------------------------------------------------<br /> <b>'.$articles_declines.' articles</b> posèdent des déclinaisons sur un total de <b>'.$total_articles.' articles</b> mis à jour.<br /> -----------------------------------------------------------------------------------------------<br /><br /> '; mysql_close(); // on ferme la base de données fclose($fp); // On ferme le fichier }