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 :

Génération de fichier texte avec séparateur


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Points : 127
    Points
    127
    Par défaut Génération de fichier texte avec séparateur
    Bonjour,

    Je travail sur Prestashop (site de vente), mon but est d'exporter les commande effectué sur le site en fichier texte avec des séparateurs.
    Il existe des modules qui font justement l'export de ces données (commandes) cependant j'obtiens les données sans séparateurs :
    "donnée1" "donnée2" "donnée3" ...
    et moi je veux obtenir
    donnée1;donnée2;donnée3...
    Mon but final est d'importer ces données dans un ERP.

    voici le code qui permet la génération du fichier :
    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
     
    	public function hookExport($params){
    		global $cookie;
     
    		if (Tools::getValue('submitFilter'))
    		{
    			header('Content-Type: application/csv');
    			header('Content-Disposition: inline; filename="orders.csv"');
    			header('Cache-Control: private, max-age=0, must-revalidate');
    			$filter=array();
    			$fields=array();
    			$titles=array();
    			$tables=array();
    			$where=array();
    			foreach($this->tables AS $s=>$t){
    				if($_POST['t'.$s]){
    					$tables[]=_DB_PREFIX_.$t['n'].' AS '.$s;
    					foreach($_POST['t'.$s] AS $f){
    						$fields[]=(isset($t['f'][$f]['ni'])?'':$s.'.').$t['f'][$f]['n'];
    						$titles[]=$t['f'][$f]['l'];
    						$filter[$s.$f]=true;
    					}
    					if(isset($t['w'])){
    						$where[]=$t['w'];
    					}
    				}
    			}
     
    			$sql='SELECT  '.implode(', ', $fields).' FROM '.implode(', ', $tables).' WHERE '.implode(' AND ', $where).'';
    			$td=getdate();
     
    			$sql.=' ORDER BY o.date_add DESC';
    			$orderlist = Db::getInstance()->ExecuteS($sql);
    // 			echo mysql_error();
    // 			echo $sql;
     
    			$filter['titleson']=Tools::getValue('titleson');
     
    			$cookie->exportorderfilter=serialize($filter);
    			if(Tools::getValue('titleson')){
    				echo $this->getcsvline($titles);
    			}
    			foreach($orderlist AS $order){
    				echo $this->getcsvline($order);
    			}
    		}
    	}
     
    	private function escape($s){
    		return mysql_real_escape_string($s);
    	}
     
    	private function getcsvline($list){
    		$s='';
    		foreach($list as &$l){
    			$l='"'.addslashes($l).'"';
    		}
     
    		return implode("\t", $list)."\r\n";
    	}
    Le problème c'est que je n'arrive pas a détecter a quel moment il faut intervenir dans le code. pour remplacer les "espace" par ";" et par la meme occasion, retirer les "" de
    ==>"donnée1"
    pour avoir
    ==>donnée

    Merci je bien vouloir m'aider.

  2. #2
    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
    c'est un format CSV donc fputcsv

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est un format CSV donc fputcsv
    il faut donc que je remplace getcsvline par fputcsv ?

    et concernant les séparateurs ?

  4. #4
    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

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Points : 127
    Points
    127
    Par défaut
    pas tres clair cette doc

  6. #6
    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
    qu'est ce tu comprends pas ?

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 311
    Points : 127
    Points
    127
    Par défaut
    ça :

    int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )
    sinon concernant le séparateur j'ai remplacer "\t" par ";"

    Désolé je ne suis pas expert en PHP, ce post aurai pu être évité, sinon ça m’intéresse quand même si tu a des explications plus claire.

    Et merci à toi

  8. #8
    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
    regarde le 1er exemple c'est simple

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/04/2015, 10h54
  2. [XL-2010] Import et conversion fichier texte avec séparateur dans un autre jeu de caractère
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/03/2015, 08h17
  3. Génération d'un fichier delimité avec séparateur : une tabulation
    Par Lio75 dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 23/10/2014, 14h10
  4. [2008] Découper un fichier texte avec séparateur ";"
    Par Daniel MOREAU dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/04/2014, 17h17
  5. Réponses: 4
    Dernier message: 28/11/2008, 12h23

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