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 :

inclure une ligne de données dans un fichier csv


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut inclure une ligne de données dans un fichier csv
    bonjour,
    j'ai généré mon fichier csv et remplie avec des enregistrements de ma base de données.maintenant je veux introduire en premier ligne de mon fichier le nom des champs correspondants en fonction d'une table quelqueconque car le champs des tables sont differents mais il me donne des erreurs et n'insere pas
    voici 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    //$reponse = array($reponse);
    	  $date_aujourdhui = date("d:m:Y");
    	  echo $date_aujourdhui ;
    	  $file='leads_livraison.'.$nom_annonceur.'.csv';
     
    	  foreach ($structure as $tab){
     
    					$a=$tab["Field"];
     
    					$tab=explode('',$a,9);
    					echo ($tab);
     
    					 }
    	 array_unshift($reponse, $tab);
     
     
    	  if ($f = @fopen($file, 'w')) //ouverture du fichier
    	    {
    		    foreach ($reponse as $ligne) 
    			{
     
    					foreach($ligne as &$champ) 
    					{ 
    					$champ = (is_string($champ)) ? 
    					iconv("UTF-8", "Windows-1252//TRANSLIT", $champ) : $champ; 
    					}
     
     
    			fputcsv($f, $ligne,';',-1);        // enregistrement des donnees dans le fichier
    			}
    					fclose($f);
     
    	   }
    	 else {
    	  echo "Impossible d'acceder au fichier.";
    	      }
    voici les erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Warning: explode() [function.explode]: Empty delimiter in C:\xampp\htdocs\essai.php on line 40
     
    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\essai.php on line 52
     
    Warning: fputcsv() expects parameter 2 to be array, boolean given in C:\xampp\htdocs\essai.php on line 59
    merci
    bonne jrnée!!!!

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Heu... ouais, voici ma page, voici mes erreurs mais quelle est ta question ?

    • Une chaine vide n'est pas un séparateur valide pour implode / explode
    • Je ne vois pas ou est initialisé la variable $reponse mais je suppose que son type n'est pas bon
    • ligne à l'air d'être un booléen, fputcsv attends un tableau


    Tu pourrais au moins regarder la doc des fonctions que tu utilise avant de venir poster.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    ma question est de savoir comment introduire une ligne d'un tableau en chaine de caractere en debut d'un fichier csv qui a été généré en php????

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Avec fputs ou fwrite ou fputcsv.

    Ex.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    if (!$handle = fopen('data.csv', 'w+'))
      die('Cannot open data.csv');
     
    fwrite($handle, "My Data\n\n");
     
    foreach ($collection as $row) {
      fputcsv($handle, $row);
    }

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu peux pas faire ça, il faut créer un nouveau fichier

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    En réalité, rien ne t'empêche de mettre des lignes arbitraires au début d'un fichier CSV, ça n'a pas l'air de perturber excel par ailleurs. C'est du texte après tout.
    Après il faut voir si du XML n'est pas plus approprié que du CSV en fonction de la complexité des données (ou méta-données) à insérer.

    Si le fichier existe déjà et qu'il faut mettre des données "en haut", c'est assez simple:
    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
    <?php
     
    $old_content = file_get_contents('fichier.csv');
     
    $handle = fopen('php://stdout', 'w');
     
    ob_start();
    foreach ($collection as $row) {
      fputcsv($handle, $row);
    }
    $new_content = ob_get_clean();
     
    if (file_put_contents('fichier.csv', $new_content . "\n" . $old_content))
      echo "Fichier écrit";
    else 
     // erreur

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/09/2009, 21h08
  2. Revenir une ligne en arrière dans un fichier
    Par Yunchi dans le forum Débuter
    Réponses: 22
    Dernier message: 17/04/2009, 17h37
  3. Comment créer une base de donnée dans un fichier .txt
    Par vantoff dans le forum C++Builder
    Réponses: 9
    Dernier message: 19/07/2006, 20h44
  4. [langage] Sauter une ligne en ecrivant dans un fichier
    Par mickey02 dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2005, 19h02

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