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 :

fputcsv et formatage d'un array [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut fputcsv et formatage d'un array
    Pardonnez mon ignorance mais je rame un peu sur le formatage d'un array en vue d'une sortie CSV.

    Comment pourrais-je obtenir une sortie CSV de ce type cad sans guillemets :
    Ref commande;ID client;Nom;Prenom;Adresse;Adresse 2;Ville;Code postal;Pays;Email;Telephone;Urgent;Remarques;Code article;Quantite;Date livraison
    FFATNOMMJ;My Company;DOE;John;16, Main street;2nd floor;Miami;33133;US;pub@prestashop.com;0102030405;;;demo_1;1;

    Je ne sais pas trop manipuler les array mais j'ai essayé ceci sans succès :
    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
     
    $export = $connexion->query("
    		  SELECT 
    		  'Ref commande', 
    		  'ID client', 
    		  'Nom', 
    		  'Prenom', 
    		  'Adresse', 
    		  'Adresse 2', 
    		  'Ville', 
    		  'Code postal', 
    		  'Pays', 
    		  'Email',
    		  'Telephone',
    		  'Urgent',
    		  'Remarques',
    		  'Code article',
    		  'Quantite',
    		  'Date livraison'
     
     
    			UNION ALL
     
     
     
    		  SELECT 
    		  ps_orders.reference, 
    		  ps_address.company, 
    		  ps_address.lastname, 
    		  ps_address.firstname, 
    		  ps_address.address1, 
    		  ps_address.address2, 
    		  ps_address.city, 
    		  ps_address.postcode,
    		  ps_country.iso_code,
    		  ps_customer.email,
    		  ps_address.phone,
    		  '',
    		  '',
    		  ps_product.reference,
    		  ps_cart_product.quantity,
    		  ''  
     
     
     FROM ps_cart_product 
     LEFT JOIN ps_product ON (ps_cart_product.id_product = ps_product.id_product) 
     LEFT JOIN ps_orders ON (ps_orders.id_cart = ps_cart_product.id_cart) 
     LEFT JOIN ps_customer ON (ps_orders.id_customer = ps_customer.id_customer) 
     LEFT JOIN ps_cart ON (ps_cart.id_cart = ps_cart_product.id_cart) 
     LEFT JOIN ps_address ON (ps_cart.id_address_delivery = ps_address.id_address) 
     LEFT JOIN ps_country ON (ps_country.id_country = ps_address.id_country) 
     
     GROUP BY
     		  ps_orders.reference, 
    		  ps_address.company, 
    		  ps_address.lastname, 
    		  ps_address.firstname, 
    		  ps_address.address1, 
    		  ps_address.address2, 
    		  ps_address.city, 
    		  ps_address.postcode,
    		  ps_country.iso_code,
    		  ps_customer.email,
    		  ps_address.phone,
    		  ps_product.reference,
    		  ps_cart_product.quantity
     
     
     ");
    $list = array();
    while ($data = $export->fetch()) {
    $list[] = $data['Ref commande'].';'.$data['ID client'].';'.$data['Nom'].';'.$data['Prenom'].';'.$data['Adresse'].';'.$data['Adresse 2'].';'.$data['Ville'].';'.$data['Code postal'].';'.$data['Pays'].';'.$data['Email'].';'.$data['Telephone'].';'.$data['Urgent'].';'.$data['Remarques'].';'.$data['Code article'].';'.$data['Quantite'].';'.$data['Date livraison'];
    }
     
    $file = fopen("prestashop.csv","w");
     
    foreach ($list as $line)
      {
      fputcsv($file,explode(',',$line));
      }
     
    fclose($file); 
      }
    }
    Ce qui donne :
    "Ref commande;ID client;Nom;Prenom;Adresse;Adresse 2;Ville;Code postal;Pays;Email;Telephone;Urgent;Remarques;Code article;Quantite;Date livraison"
    "FFATNOMMJ;My Company;DOE;John;16"," Main street;2nd floor;Miami;33133;US;pub@prestashop.com;0102030405;;;demo_1;1;"

    Les guillemets m'embêtent pour la sortie CSV excel.

    Pouvez-vous svp m'aider sur ce coup

  2. #2
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Un peu d'aide svp je rame vraiment.

    Je vais essayer d'être plus clair.

    Comment arriver à produire un CSV qui, lorsqu'il est ouvert avec Excel me donne:


    actuellement avec mon code ci-dessous, j'obtiens toutes les données mais uniquement dans la colonne A.
    Comment faire pour obtenir les entêtes en A, B, C, ... sur la première ligne et les données correspondantes sur la seconde ligne et suivantes.

    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
    while ($data = $export->fetch()) {
    $list[] = $data['Ref commande'];
    $list[] = $data['ID client'];
    $list[] = $data['Nom'];
    $list[] = $data['Prenom'];
    $list[] = $data['Adresse'];
    $list[] = $data['Adresse 2'];
    $list[] = $data['Ville'];
    $list[] = $data['Code postal'];
    $list[] = $data['Pays'];
    $list[] = $data['Email'];
    $list[] = $data['Telephone'];
    $list[] = $data['Urgent'];
    $list[] = $data['Remarques'];
    $list[] = $data['Code article'];
    $list[] = $data['Quantite'];
    $list[] = $data['Date livraison'];
     
    }
    $file = fopen("prestashop.csv","w");
     
    foreach ($list as $line)
      {
      fputcsv($file,explode(',',$line));
      }
     
    fclose($file);
    Merci à vous,

  3. #3
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut, un truc comme ça

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $file = fopen('prestashop.csv', 'w');
    $headers = []; //On définit la première ligne
    fputcsv($file, $headers, ';');
    while ($row = $export->fetch(PDO::FETCH_ASSOC)) {
        fputcsv($file, $row, ';');
    }

    Vous mettez dans $headers une liste contenant Ref Commande, ID Client etc...

  4. #4
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Super çà marche et un grand merci à toi

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

Discussions similaires

  1. Formatage array retourné par fetchAll()
    Par thejocker9 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/06/2016, 16h55
  2. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  3. Réponses: 2
    Dernier message: 23/02/2003, 00h49
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53

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