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

Langage PHP Discussion :

[CSV] Importation de données xls vers mysql [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut [CSV] Importation de données xls vers mysql
    Bonjour tout le monde,

    Je dois importer des données de Excel (format xls) vers my base de données mysql.

    J'ai trouvé un code sur le net que voici :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <?php
    // vérification sur la session authentification (la session est elle enregistrée ?)
    // ici les éventuelles actions en cas de réussite de la connexion
    include('../../Scripts/connexion.php');
    //$sql=mysql_query("DELETE FROM commmunes");
     
    //=========================
    // Traitement des donnees
    //=========================
     
    //recupere le nom du fichier indiqué par l'user
    $fichier=$_FILES["userfile"]["name"];
     
    // ouverture du fichier en lecture
    if ($fichier)
    {
    //ouverture du fichier temporaire
    $fp = fopen ($_FILES["userfile"]["tmp_name"], "r");
    }
    else{
    // fichier inconnu
    ?>
    <p align="center" >- Importation échouée -</p>
    <p align="center" ><B>Désolé, mais vous n'avez pas spécifié de chemin valide ...</B></p>
    <?php
    exit();
    }
    // declaration de la variable "cpt" qui permettra de conpter le nombre d'enregistrement réalisé
    $cpt=0;
    ?>
    <p align="center">- Importation Réussie -</p>
     
    <p align="right"><a href="#bas">Bas de page</a></p>
     
    <?php
    // importation
    while (!feof($fp))
    {
    $ligne = fgets($fp,4096);
    // on crée un tableau des élements séparés par des points virgule
    $liste = explode(";",$ligne);
    // premier élément
    $liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
    $liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
    $liste[2] = ( isset($liste[2]) ) ? $liste[2] : Null;
    $liste[3] = ( isset($liste[2]) ) ? $liste[2] : Null;
     
     
     
    $champs1=$liste[0]; //ID
    $champs2=$liste[1]; //NOTE
     
    echo'<script LANGUAGE="JavaScript">alert("'.$champs1.'");</SCRIPT>';
     
     
    // pour eviter qu un champs "nom" du fichier soit vide
    if ($champs1!='')
    {
    // nouvel ajout, compteur incrémenté
    $cpt++;
    // requete et insertion ligne par ligne
    // champs1 id en general dc on affecte pas de valeur
     
    $req = mysql_query("INSERT INTO inscrits_en(NOTE) VALUES('$champs2') WHERE inscrits_en.ID = " . $champs1 );
    //echo'<script LANGUAGE="JavaScript">alert("'.$req.'");</SCRIPT>';
     
     
    ?>
    <table width="505" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#eeeeee">
    <tr>
    <td width="124">Eléments importés :</td>
    <td width="361"><?php echo $liste[0];?></td>
    <td width="361"><?php echo $liste[1];?></td>
     
    </tr>
    </table>
    <p>
      <?php
    }
    }
     
    // fermeture du fichier
    fclose($fp);
    //on supprime la derniere car elle est vide
     
     
    //==================
    // FIN
    //==================
    ?>
      <br>
      <br>
      Nombre de valeurs nouvellement enregistrées: <b><?php echo $cpt;?></b>.<br>
      <br>
    </p>
    <p>&nbsp;</p>
    Le résultat n'est pas correct, j'obtiens des symbôles un peu partout.

    Je pense déjà avoir trouvé un premier problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste = explode(";",$ligne);
    Pour excel, je remplace le ; par quoi ?

    Je me demandais aussi si le fopen suffisait pour un xls ?

    Un tout grand merci d'avance pour l'aide.

    beegees

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je me demandais aussi si le fopen suffisait pour un xls ?
    Non, tu ne peux pas lire un format xls comme si c'etait du texte.
    Il va falloir que tu repartes vers les methodes pour exploiter de l'xls en php ou bien que tu fasses l'import en csv.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Non, tu ne peux pas lire un format xls comme si c'etait du texte.
    Il va falloir que tu repartes vers les methodes pour exploiter de l'xls en php ou bien que tu fasses l'import en csv.
    Salut Sabotage,

    Merci pour ta réponse.

    Est-il possible avec du PHP ou avec WriteExcel de transformer un fichier xls en csv ?

    Merci encore.

    beegees

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Une fois que tu as mis en place de quoi lire un document xls, tu n'as pas besoin de le ré-ecrire en csv, tu peux l'importer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Une fois que tu as mis en place de quoi lire un document xls, tu n'as pas besoin de le ré-ecrire en csv, tu peux l'importer.
    C'est bien cette partie du travail où je coince.

    As-tu un bout de code stp ?

    Mon code de mon premier post est donc pour la poubelle ? pas moyen de l'adapter à du xls ?

    Merci pour ton aide.

    beegees

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Non, tu dois utiliser de quoi lire un xls.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Transformer un fichier xls en un fichier csv
    Bonjour tout le monde,

    J'ai un fichier xls qui contient des données.

    J'aimerais transférer les données de mon fichier xls vers mysql.

    Je me demandais si il ne serait pas mieux de transformer le fichier xls en csv ?

    J'ai un script php qui me permet de transférer des données csv vers mysql mais pas xls vers mysql.

    On m'a conseillé ceci :

    lire toutes les cellules d'une ligne de ton fichier xls, tu les envoie dans une ligne du fichier csv par fputcsv
    je me demande quel séparateur je dois utiliser ? :

    par rapport à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int fputcsv ( resource $handle , array $fields [, string $delimiter [, string $enclosure ]] )
    Est-ce la bonne solution pour mon problème ?

    Merci d'avance.

    beegees

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je me demandais si il ne serait pas mieux de transformer le fichier xls en csv ?
    Non, comme je te l'ai dit une fois que tu en ais a lire ton fichier xls ligne par ligne, tu peux déjà faire ton insertion dans la base.
    Ecrire les informations que tu viens de lire dans un nouveau fichier puis relire les memes informations dans ton nouveau fichier, ca fait une etape de trop.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Non, comme je te l'ai dit une fois que tu en ais a lire ton fichier xls ligne par ligne, tu peux déjà faire ton insertion dans la base.
    Ecrire les informations que tu viens de lire dans un nouveau fichier puis relire les memes informations dans ton nouveau fichier, ca fait une etape de trop.
    Je n'en suis pas à lire mon fichier xls ligne par ligne.

    - J'ai réussi à importer mes données dans un fichier xls
    - Les visiteurs peuvent maintenant mettre à jour certaines colonnes (uniquement)

    J'ai demandé à mon prof de PHP/Internet, il m'a dit qu'il n'avait jamais réussi à envoyer des données d'un fichier xls (binaire) vers mysql.

    Je commence donc à douter sur la possibilité de faire cela.

    Merci pour ton aide.

    beegees

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Etant donné qu'il est possible de lire un fichier xls, il est possible de l'importer dans un base de donnée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Etant donné qu'il est possible de lire un fichier xls, il est possible de l'importer dans un base de donnée.
    Tu avais raison Sabotage.

    J'utilise Pear et ça fonctionne pas mal.

    Merci à toi.

    beegees

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

Discussions similaires

  1. Importer données XLS vers Windev
    Par cheikhoufia dans le forum WinDev
    Réponses: 4
    Dernier message: 08/09/2015, 10h59
  2. Importation des données .txt et .xls vers MySQL
    Par Ammouna1204 dans le forum Documents
    Réponses: 7
    Dernier message: 05/09/2012, 15h00
  3. [XL-2003] Export données XLS vers CSV
    Par Monfy29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2011, 14h19
  4. import données .doc vers mysql
    Par honey0 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/08/2011, 14h14
  5. Réponses: 6
    Dernier message: 28/05/2008, 09h04

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