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 :

[mysqli] Script pour transfert massif de données (fichier excel) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Points : 192
    Points
    192
    Par défaut [mysqli] Script pour transfert massif de données (fichier excel)
    Bonjour,
    après plusieurs recherches qui n'ont pas abouties, j'ai décidé de demander de l'aide.

    Je dois faire évoluer une application PHP s'occupant de la gestion de clients pour une entreprise. Cette application est gérée à partir d'une base contenant 13 tables.

    Une première évolution de l'application consiste à pouvoir importer massivement des données dans cette base, si possible à partir d'un fichier excel.

    Existe-t-il un moyen simple et efficace me permettant de réaliser cette évolution?
    Sachant que j'ai déjà jeté un coup d'oeil sur php Excel reader, mais cela ne correspond pas à mes besoins.

    Merci de votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Je te conseillerais de passer par le format CSV pour importer ces données.

    Depuis Excel, enregistre ton document au format CSV (séparateur ; par exemple) et envoi ça à ton script PHP.

    Grâce à la fonction explode, tu pourras récupérer les valeurs de tes différents champs puis insérer ces données dans ta base.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Points : 192
    Points
    192
    Par défaut
    Merci, j'ai converti le fichier en .csv.
    Comment dois-je présenter les données pour que le format corresponde à l'intégration dans la base de données?
    Pour un simple test, j'ai créé 2 colonnes intitulées NOM et PRENOM, qui contiennent chacune 3 champs. C'est la bonne configuration?

    Comment utiliser ces données avec la fonction explode() ?

    Merci

    Edit:
    Voila comment est présenté mon fichier .csv:
    NOM;PRENOM
    A;B
    B;BB
    C;BBB

    et mon code:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
    // recuperer le csv
    $fp = fopen('C:\Documents and Settings\shbg1260\Desktop\test.csv','r'); // accés en lecture au fichier csv
    if (!$fp =fopen('C:\Documents and Settings\shbg1260\Desktop\test.csv','r')) {
    echo "Echec de l'ouverture du fichier"; // si le fichier ne s'ouvre pas on affiche un message d'erreur
    }
     
    else {
    echo "C'est bon c'est ouvert";
    exit;
    }
    while(!feof($fp)) {
    	// On récupère une ligne
    		$ligne = fgets($fp,255);
    		$data = explode(';',$ligne);
     
    	// On affiche la ligne
    		for($i=0;$i<2;$i++) {
    			echo $data[$i];
    			}
    	}
    	fclose($fp); // On ferme le fichier
     
     
    ?>
    Problème, le echo $data n'affiche rien

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Tu peux essayer avec fgetcsv, ça donne quelque chose dans le style :

    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
    17
    18
    19
    20
    21
     
    <?php
    $ligne = 1;
    if (($fp = fopen('test.csv','r'))!== FALSE) {
      echo "C'est bon c'est ouvert<br />";
      while (($data = fgetcsv($fp, 10000, ";")) !== FALSE) {
          // Compte le nombre de champs de la ligne
          $num = count($data);
          // Affiche le nombre de champs
          echo $num." champs a la ligne ".$ligne.": <br />";
          // Affiche le résultat
          foreach($data as $Index=>$Value){
              echo "Ligne : ".$ligne." Colonne : ".($Index+1). " = ".$Value."<br /><br />";
          }
          $ligne++;
      }
    }else{
      echo "Echec de l'ouverture du fichier<br />"; // si le fichier ne s'ouvre pas on affiche un message d'erreur
    }
    fclose($fp); // On ferme le fichier
    ?>
    Ça va t'afficher :

    C'est bon c'est ouvert
    2 champs a la ligne 1:
    Ligne : 1 Colonne : 1 = NOM

    Ligne : 1 Colonne : 2 = PRENOM

    2 champs a la ligne 2:
    Ligne : 2 Colonne : 1 = A

    Ligne : 2 Colonne : 2 = AA

    2 champs a la ligne 3:
    Ligne : 3 Colonne : 1 = B

    Ligne : 3 Colonne : 2 = BB

    2 champs a la ligne 4:
    Ligne : 4 Colonne : 1 = C

    Ligne : 4 Colonne : 2 = CC

    j'espère que c'est ce que tu cherchais a faire.

    Nheal

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Points : 192
    Points
    192
    Par défaut
    Merci, j'avai réussi à résoudre mon problème, l'erreur idiote était que j'avai mis un exit dans une autre partie du code, donc le fichier s'ouvrait é n'effectuait pas les instructions...

    Sinon, ta méthode avec getcsv() me semble encore plus appropriée pour ce que je recherche, est-il possible d'inclure directement les données récupérées dans une base mysql?
    Par exemple, je voudrai que chaque champ de la première ligne crée une table et que les champs des autres lignes soient ajoutées comme des données.

    Merci

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Ça peut se faire mais a mon avis ce n'est pas très propre, et un peu délicat. Je ne te le conseille pas vraiment.

    A mon avis il y a plusieurs problème qui se posent :

    • Comment déterminer le nom de la table à créer
    • Comment déterminer le type des champs a créer
    • Comment créer tes clés
    • ...


    A première vu, voila ce qui me passe par la tête.
    Ceci dit, des solutions existent peut être, mais je ne les connais pas.

    Bon code.

    Nheal

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Points : 192
    Points
    192
    Par défaut
    Merci, je vais indiquer le problème comme résolu.
    Je vais essayer d'ajouter les champs colonne par colonne pour chaque table et non directement.

    Je reviendrai si j'ai d'autres problèmes.

    Florian

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Shell script pour compter le nombre de fichiers par extension
    Par andress33 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 30/03/2015, 01h26
  2. Réponses: 0
    Dernier message: 03/02/2011, 12h15
  3. script pour la suppression d'un fichier caché
    Par maikess dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 07/07/2010, 19h25
  4. Réponses: 11
    Dernier message: 25/02/2010, 16h33
  5. script pour Outlook 2002 rattachement auto fichiers pst
    Par jlfprofoto dans le forum VBScript
    Réponses: 0
    Dernier message: 08/12/2008, 15h03

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