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] Créer un fichier CSV en PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 13
    Points
    13
    Par défaut [CSV] Créer un fichier CSV en PHP
    Bonjour,

    Je tente actuellement de créer un fichier CSV en langage PHP afin de pouvoir exploiter les données se trouvant dans ma base données.
    J'ai donc écrit un script qui semble fonctionner correctement à l'aide de tableau, mais lorsque je tente d'y insérer les données de ma base cela provoque quelques problèmes.

    Voici le script :

    Code php : 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
    <?php
    header("Content-type: application/vnd.ms-excel"); 
    header("Content-disposition: attachment; filename=\"monsuperfichier.csv\"");
     
     
    // ceci fonctionne parfaitement
    /*$array = array( 
    'france' => array('francais','60','paris'), 
    'belgique' => array('francais','5','bruxelles'), 
    'italie' => array('italien','55','rome')); 
    */
     
     
    require('../connexion.php');
    $sql = 'SELECT * FROM `solaire` WHERE `rueducommerce` = "Y" ORDER BY `marque`';
    $result = mysql_query($sql);
     
    //ouverture du tableau
    echo '$array = array(';
     
    			while($data = mysql_fetch_array($result))
    			{
     
    				$idproduit = $data['ref'];
    				$idmarque = $data['marqu'];
    				$reference = $data['ref'];
    				$nom = $data['gamme'];
    				$description = 'Lunettes de soleil '.$data['marque'];
    				$technique = 'Type verre : '.$data['verre'].' - Catégorie : '.$data['protection'];
    				$univers = 'LSMS';
    				$image = 'image';
    				$vignette = 'vignette';
    				$poids = '200';
    				$stock = '1';
    				$pvht = $data['prix']/1.196;
    				$pvhtPrive = $pvht/0.20;
    				$coupcoeur = '0';
    				$visible = '1';
    				$prive = '0';
    				$livrablePartenaire = '0';
    				$tva = 19.6;
    				$delais = '3';
     
     
    //insertion des données dans le tableau
    				echo ("'$idproduit'=> array('$idmarque','$reference','$nom','$description','$technique','$univers','$image','$vignette','$poids','stock','$pvht','pvhtPrive','coupcoeur','$visible','$prive','$livrablePartenaire','$tva','$delais'),");
     
    			};
     
    //fermeture du tableau
    echo ');';
     
     
     
     
    $csv = "idproduit;idmarque;reference;nom;description;technique;univers;image;vignette;poids;stock;pvht;pvht prive;coupcoeur;visible;prive;livrable partenaire;tva;delais\n"; 
     
    // construction de chaque ligne 
    foreach($array as $idproduit => $donnees) 
    { // on concatene a $csv 
    $csv .= "$idproduit;".$donnees[0].';'.$donnees[1].';'.$donnees[2].';'.$donnees[3].';'.$donnees[4].';'.$donnees[5].';'.$donnees[6].';'.$donnees[7].';'.$donnees[8].';'.$donnees[9].';'.$donnees[10].';'.$donnees[11].';'.$donnees[12].';'.$donnees[13].';'.$donnees[14].';'.$donnees[15].';'.$donnees[16].';'.$donnees[17].'"\n"'; // le \n final entre " " 
    } 
     
    print($csv); 
    exit; 
     
    ?>

    Malheureusement j'ai bien l'impression d'être obliger de coller un ECHO dans mon WHILE pour imprimer les données dans le tableau qui me sert pour créer le CSV mais apparemment cela ne fonctionne pas.

    Mon fichier CSV se créer bien mais le ECHO fait que tout ce qui se trouve dedans est imprimer dans une seule cellule au dessus du commencement du fichier CSV. Je ne sais pas si je me fais bien comprendre. Le seules données valide dans mon CSV sont les titres des colonnes.

    Est ce que quelqu'un pourrait m'aider a résoudre ce problème ???

    MERCI A TOUS

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Salut,

    Il y a des fonctions dédiées à l'exploitation de fichiers csv

    http://fr3.php.net/manual/fr/function.fputcsv.php

    Je pense que tu t'épargneras du temps et de la fatigue en utilisant ça.
    Ca fonctionne très bien.

    Bon courage,

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    ta syntaxe est pas bonne, c'est pour ça que ça marche pas, c'est pas du tout comme ça qu'on crée un tableau

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while($data = mysql_fetch_array($result)) {
    	$result[$data['ref']] = $data;
    }
     
    // ensuite on en revient à ton code
    // $csv = "...."; etc
    foreach($resultas $idproduit => $donnees)  {   
       // tes instructions
    }

    Et comme tu le vois, c'est bien plus simple...


    Donc pour résumer tu remplaces
    Code php : 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
    //ouverture du tableau
    echo '$array = array(';
     
    			while($data = mysql_fetch_array($result))
    			{
     
    				$idproduit = $data['ref'];
    				$idmarque = $data['marqu'];
    				$reference = $data['ref'];
    				$nom = $data['gamme'];
    				$description = 'Lunettes de soleil '.$data['marque'];
    				$technique = 'Type verre : '.$data['verre'].' - Catégorie : '.$data['protection'];
    				$univers = 'LSMS';
    				$image = 'image';
    				$vignette = 'vignette';
    				$poids = '200';
    				$stock = '1';
    				$pvht = $data['prix']/1.196;
    				$pvhtPrive = $pvht/0.20;
    				$coupcoeur = '0';
    				$visible = '1';
    				$prive = '0';
    				$livrablePartenaire = '0';
    				$tva = 19.6;
    				$delais = '3';
     
     
    //insertion des données dans le tableau
    				echo ("'$idproduit'=> array('$idmarque','$reference','$nom','$description','$technique','$univers','$image','$vignette','$poids','stock','$pvht','pvhtPrive','coupcoeur','$visible','$prive','$livrablePartenaire','$tva','$delais'),");
     
    			};
     
    //fermeture du tableau
    echo ');';

    par :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($data = mysql_fetch_array($result)) {
    	$result[$data['ref']] = $data;
    }

    PS : pour ajouter facile des données "statiques" qui ne viendraient pas directement de $data, tu peux écrire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($data = mysql_fetch_array($result)) {
    	$data['uneNouvelleInfo'] = "une certaine valeur";
    	$result[$data['ref']] = $data;
    }

Discussions similaires

  1. [CSV] Importer un fichier CSV ou OV2 dans une page PHP
    Par gpsevasion dans le forum Langage
    Réponses: 13
    Dernier message: 12/02/2009, 14h31
  2. [CSV] créer un fichier .csv
    Par saraza dans le forum Langage
    Réponses: 1
    Dernier message: 20/01/2009, 09h57
  3. [CSV] Créer un fichier CSV sur le serveur
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2007, 15h10
  4. [CSV] Créer un fichier csv depuis php
    Par jbidou88 dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2007, 17h41
  5. Réponses: 12
    Dernier message: 07/12/2005, 18h42

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