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

laura_lina Messages postés 3 Statut Membre -  
jeremy.s Messages postés 1248 Statut Membre -
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

7 réponses

  1. laura_lina Messages postés 3 Statut Membre
     
    ce que je veux récupérer c est la valeur des champs , tout ce qui est après =
    0
  2. Utilisateur anonyme
     
    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
    1. laura_lina Messages postés 3 Statut Membre
       
      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
    2. lina_laura
       
      t'as pas un exemple de code pour csv les formats imbriqués ou je ne sais pas!!!?

      merci d'avance
      0
  3. jeremy.s Messages postés 1248 Statut Membre 79
     
    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
  4. lina_laura
     
    non je peux pas modifier le format de fichier , il est générer par un autre outil.........
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeremy.s Messages postés 1248 Statut Membre 79
     
    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
  7. lina_laura
     
    y a pas une piste??
    juste début code et après je le terminerais
    0
  8. jeremy.s Messages postés 1248 Statut Membre 79
     
    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