IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Parcourir un fichier .txt en php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut Parcourir un fichier .txt en php
    Bonjour,

    Je vous explique mon problème. J'ai créer une base de données MYSQL pour mon application. Mais l'ancienne application tournée sous access.

    On m'a mis les données dans un fichier texte mais je possède pas les même colonnes. Par exemple, dans une table SAPEURS j'ai matricule,nom,prenom,grade,daterecrutement, numcs) et dans mon fichier à la place de numcs j'ai les noms

    Comment faire pour que je puisse insérer les données dans base en parcourant le fichier?

    Merci beaucoup

  2. #2
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Bonjour,

    Tu peux pas plutôt faire un extract de ta base dans un fichier sql ?
    Après il suffira de l'importer dans MySQL
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    quand tu as un truc comme ça tu importe ton fichier csv (texte) dans une table de transition que tu supprimeras ensuite... et à partir d'elle tu peuples ta table destination avec les données que veut via une requête sur la table de transition...

    comme ça pas besoin de parser, extraire en php... tout se fait plus simplement en mysql...

    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Bonjour Eric,

    OK je veux bien essayer ta solution. J'ai mon fichier csv dans une table. Mais peut tu m'expliquer comment je fais après?

    Merci

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    après tu utilises la syntaxe:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into destination(d1,...,dn) select t1,...,tn from transtion where ...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Je veux bien mais dans mon csv j'ai le nom des centre (par exemple:allasac), alors que dans ma table il me faut les numéros!

  7. #7
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    mets les create ou les structures de tes 2 tables
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Car mon maitre de stage souhaite que je le fasse en php, regarde ce que j'ai attaqué à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
    $row = 1;
    $handle = fopen("pers.csv", "r"); /*Ouverture du fichier en lecture seule*/
     
    if($handle)
    {
     
    	while(!feof($handle))
    	{
    		$buffer = fgets($handle);
    		echo $buffer;
    	}
    	fclose($handle);
    }
    ?>
    Mais après je suis bloquée...

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c’est fgetcsv qu'il faut utiliser

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Ok mais peux tu m'expliquer comment faut faire car je la connait pasdu tout. J'avais attaqué à faire sa aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $row = 1;
    $handle = fopen("pers.csv", "r");
    while (($handle !== FALSE) {
     
        }
    }
    fclose($handle);
    ?>

  11. #11
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    c'est vraiment pas le plus simple et performant en php...
    faut créer un tableau vide qui va contenir le fichier une fois lu:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $transition=array();

    ta boucle de lecture change pas sauf que c'est fgetcsv comme le dit stealth35...

    elle te retourne un tableau pour chaque ligne lue... que tu vas ajouter à $transition

    ensuite, tu te feras une boucle de lecture qui viendra simplement lire les colonnes que tu veux de chaque ligne de $transition et insèrera leur contenu dans les bonne colonnes et l'ordre voulu dans ta table mysql avec un simple insert

    le défaut de cette méthode... lente et nécessite une quantité de mémoire qui peut vite être importante (risque de dépassement du quota de temps d'exécution ou de ressources par le script en cas de gros fichier csv)
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Pourrais tu m'aider à réaliser cette boucle s'il te plait Eric?

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as essaye l'exemple #1 au moins ?

  14. #14
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Je suis en train de faire avec la fonction fgetcsv(). J'ai fait ça pour le moment mais sa marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $handle = fopen("pers.csv", "r");
    echo "<table>";
    while (($ligne = fgetcsv($handle, filesize($fichier), ";")){
      echo"<tr>";
      $nbcol = count($ligne);
      for($i=0; $i<nbcol; i++)
      {
    	echo"<td>".$tableau[$i]."<td>";
      }
      echo"</tr>";
    }
    echo"</table>";
    //fclose($handle);
    ?>

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    quelle est l'erreur, et pourquoi avoir mis un filesize ?

    y'a plein de faute dans ton code relis toi bien

  16. #16
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    normal tu as mis:
    i++ au lieu de $i++
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  17. #17
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    oui je sais j'ai corriger il me manquer plein de $ mais ca ne marche toujours pas

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par amandev Voir le message
    oui je sais j'ai corriger il me manquer plein de $ mais ca ne marche toujours pas
    "ça ne marche toujours pas" n'est pas un réponse, quelle est l'erreur ?
    remontre ton code a chaque fois que tu le change

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 50
    Points : 10
    Points
    10
    Par défaut
    Rien ne s'affiche sur ma page. Voila le code modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $handle = fopen("pers.csv", "r");
    echo "<table>";
    while ($ligne = fgetcsv($handle, filesize($fichier), ";")){
      echo"<tr>";
      $nbcol = count($ligne);
      for($i=0; $i<$nbcol; $i++)
      {
    	echo"<td>".$tableau[$i]."<td>";
      }
      echo"</tr>";
    }
    echo"</table>";
    //fclose($handle);
    ?>

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    $tableau n'existe pas,
    t'as pas d'erreur parce que ton php est mal configurer, ton display_errors doit etre sur On et le error_reporting sur E_ALL | E_STRICT (E_ALL pour php 5.4) donc corrige ça en modifiant ton php.ini

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Lire et parcourir un fichier .txt en php
    Par okoweb dans le forum Langage
    Réponses: 3
    Dernier message: 06/09/2012, 13h24
  2. PB manipulation fichier txt en php
    Par toulonnais83 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2007, 00h23
  3. parcourir un fichier txt à la recherche d'une chaine
    Par Zen_Fou dans le forum Langage
    Réponses: 2
    Dernier message: 27/03/2007, 23h25
  4. Flash, fichier txt et PHP ?
    Par djedje37et28 dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2006, 21h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo