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 :

Extraction pièces jointes CSV


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 43
    Par défaut Extraction pièces jointes CSV
    Bonjour,

    Je suis entrain de mettre en place un script pour l'extraction de pièces jointes.
    Les pièces jointes sont en format CSV de ce type :

    Système linux redhat , PHP 5.2, APACHE2, MYSQL 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    XXXXXX;xxxxxx xxxxxx - xxxxx;xxxxxx xx xxx;xxx xx xxxx;xxxxxxx x  <--- Nom colonnes
    YYYYY;YYYYYY YY y;YYYYY Y YYYY; YYYYYyyyyYY;YYYYYyyyyYYY <--DATA
    Fichier csv avec champs délimités par ";"

    J'ai mis en place une extraction de la pièce jointe de ce type :
    Extrait du 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
    $piece = imap_fetchbody($mail,$j,2);
    if ($part->encoding == "3")
    {
    for ($i = 0; $i < count($part->parameters); $i++)
    {
    $param = $part->parameters[$i];
    if ($param->attribute == "NAME")
    {
    $nom_fichier = $param->value;
    }
    else
    {
    $nom_fichier = "Nom de fichier introuvable";
    }
    }
    $piece = imap_base64($piece);
    }
    $newfichier = fopen("/var/www/presta/data/data.csv","w+");
    fwrite($newfichier,$piece);
    fclose($newfichier);
    }
    }
    Une fois la pièce jointe extraite , elle est lu par "fgetcsv" et insérée dans ma Bd puis supprimée.

    Voici mon problème , lorsque mon fichier csv est extrait par mon script , il est dans un format bizarre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xxxx xxx;xxxxxx- xxxx;xxxxxx xx xxxxx;xxxxxxx;xxx=
    xxxxx;xxxxxxx;xxxxxxxxx;xxxx;xxxxxxx;xxxxx;xxxxxxx;x=
    Toutes les lignes se termine par un "=" avec nom de colonne coupée.
    J'ai dessuite pensé à un problème de retour chariot, j'ai essayé "/n" et meme "/r/n" mais aucun résultat.

    Si vous avez une idée ou une meilleure solution.

    Merci d'avance de votre aide.

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    L'extraction de ta pièce jointe ce fait dans un fichier 'data.csv' ?
    Pourquoi ne pas utiliser les fonctions d'écriture en format CSV ?

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 43
    Par défaut
    Merci pour votre réponse rapide , effectivement

    la fonction fputcsv () serait la solution.
    Si oui, pourrais je avoir quelques indications par rapport à mon cas.

    Merci d'avance.

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    J'avais un peu oublié to post, désolé ....

    Quelquechose que je ne comprends pas: Pourquoi tu n'exploiterais pas directement ta pièce jointe $piece ???

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 43
    Par défaut
    Bon retour au point de départ ,
    Je suis perdu,
    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fputcsv ($newfichier,$piece, ";")
    Et toutes les variantes possible .....

    Je vois pas comment l'exploiter directement ($piece)
    faire un fgetcsv ensuite.

    Si tu peux me mettre sur la voie .

    Merci d'avance.

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Oui reprenons:

    Tu reçois une pièce jointe sous la variables $piece de type texte (malheureusement ce n'est pas un identifiant de fichier): ok?

    Ensuite le but est de construire une table de la base de données avec cette variable.

    Suivant ta variable $piece (tu en fais un echo pour voir la gueule qu'elle a) ensuite tu devrais pour pouvoir la spliter ligne à ligne sur le retour chariot (\t\n) et c ça le plus dur, le reste est tout bête ....
    Essayes avec la fonction Explode avec le pattern \t\n

    Une fois que tu as un tableau (résultat de l'explode) de nom arrayCSV (par ex)dont chaque indice contient une ligne, tu sauras que:
    arrayCSV[0] contiendra les noms des champs, les autres index, les datas

    Me suis tu ?


    Edit: une question: je connais pas les fonctions de récupération de mail avec les pièces jointes MAIS il existe une manière de récupérer un handler de fichier directement ? Si j'ai le temps je regarderais

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

Discussions similaires

  1. Extraction pièces jointes Outlook via VBA
    Par pontoise dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 14/07/2017, 15h34
  2. Réponses: 2
    Dernier message: 20/05/2016, 18h01
  3. [XL-2003] Extraction pièce jointe Outlook en fct Objet du mail via Excel 2003
    Par ivanG dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/07/2014, 15h49
  4. [OL-2007] Extraction pièce jointe dans word et déplacement dossier
    Par th3sorrow dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 09/05/2012, 16h30
  5. Extraction pièces jointes Outlook via VBA
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/12/2009, 10h56

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