Import des données d un fichier txt ou csv dans mysql en php

Fermé
laura_lina Messages postés 3 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 4 juin 2013 - 4 juin 2013 à 12:19
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 5 juin 2013 à 14:39
Bonjour,

je veux faire un code pour importer les données d'un fichier .txt ou .csv et les stockées dans bdd mysql en php
pouvez-vous m"aider?
c'est la première fois que je traite ce type de fichier( cat,detail_cat) pour allimenter la table categorie , (sous_cat_prd) => table produit , (sous_cat_schema)=> table schema , il y a une jointure entre la table mère categorie avec les tables filles(produit , table schema)
le fichier .txt ou .csv de cet format:

----------- cat1 -------------
Nom_cat=cat1
desc_cat=test description cat
----------- detail_cat ---------------
det_nom=test nom
det_desc=schema precis
det_titre=le schema de l'appli
------------- sous_cat_prd -------------
prd_nom=testprd,prd_descr=descrprd,prd_type=typeprd
prd_nom=ordi,prd_descr=perform,prd_type=ibm
prd_nom=apareil,prd_descr=description de l'apareil,prd_type=photo
-------------- sous_cat_schema -------------
scs_nom=schemaprd:scs_descr=descr schem:scs_adr=77 rue
scs_nom=schema2:scs_descr=description du schema2:scs_adr=40 bldv
----------- cat2 -------------
Nom_cat=cat2
desc_cat=test2 description cat
----------- detail_cat ---------------
det_nom=testnom2
det_desc=schema precis test2
det_titre=le schema de l'appli2
------------- sous_cat_prd -------------
prd_nom=testprd2,prd_descr=descr prd,prd_type=type produit
prd_nom=machine,prd_descr=performant,prd_type=nespress
-------------- sous_cat_schema -------------
scs_nom=scc:scs_descr=descr schem:scs_adr=33 avn
scs_nom=vers:scs_descr=description du vers:scs_adr=30 bldv



merci d'avance
A voir également:

7 réponses

laura_lina Messages postés 3 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 4 juin 2013
4 juin 2013 à 12:43
ce que je veux récupérer c est la valeur des champs , tout ce qui est après =
0
Utilisateur anonyme
4 juin 2013 à 12:59
Salut salut,

On utilise souvent des csv pour ce genre de truc. Comme t'as pu le voir il y a un délimiteur commun entre chaque donnée.
Le principe c'est d'ouvrir en lecture ton fichier csv, boucler par ligne et trier le tout avec des explode ou autre.
Chaque type de donnée étant toujours à la même place tu peux faire ton insert dans la boucle.
0
laura_lina Messages postés 3 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 4 juin 2013
4 juin 2013 à 13:07
il y a trois type de délimiteur "1=>retour à la ligne /n , 2=>virgule , ,3=>:

le traitement du fichier c'est par bloc en boucle , je suis débutante en php et je ne sais pas comment le traiter
0
t'as pas un exemple de code pour csv les formats imbriqués ou je ne sais pas!!!?

merci d'avance
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
4 juin 2013 à 15:53
Salut !

Ca reste assez délicat comme format je trouve ...
Tu ne peux pas changé le format ? Genre un xml serrait parfait pour ce genre de fichier ;-)

0
non je peux pas modifier le format de fichier , il est générer par un autre outil.........
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
4 juin 2013 à 20:06
Mmh enplus le nombre de ligne n'est pas fixe ...
Faudrait voir pour récupérer déjà chaque bloc, avec un explode('Nom_cat') mais c'est du bidouillage ... Ensuite explode(',') et explode('=')
Puis tu regarde par incrémentation de deux,
Le premier étant Nom_cat, et le dexieme cat1.
0
y a pas une piste??
juste début code et après je le terminerais
0
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
5 juin 2013 à 14:39
Sinon pour récupérer chaque "bloc", une regex ----------- cat[1-9][0-9] ------------- peut être ...
Tu as donc chaque bloc cat, ensuite tu supprimes tes lignes ----- blabla -----
Tu explodes sur le retour à la ligne, ensuite sur la virgule, et pour finir le = où l'élement avec un index paire sera le champ, et celui à l'index impaire sera la valeur.
exemple :
$tab = explode('=', $doc);
echo $tab[0] // Nom_cat
echo $tab[1] // cat1
echo $tab[2] // desc_cat
echo $tab[3] // test description cat


0