lien a un fichier CSV

Eléphanteau du PHP | 23 Messages

24 oct. 2016, 10:04

Bonjour
j'aimerais lié ce code a un fichier CSV pour qu'il puisse le traite. pour le moment il est lié a une chaine écrite en dur mais j'amaierais qu'il aille chercher le code directement sur mon serveur FTP monfichier.csv
merci pour vos réponses
<?php
	$aLongueurFragments = array(8,3,8,35,35,13,45,3,3,8,4,9,35);
    $chaine = "3772290200020160922BL01353               CMD002307           XW537462614FRXW5374626142486           DC DC 201609221625DCSCR";
 
    $aLongueurFragments = array(8,3,8,35,35,13,45,3,3,8,4,9,35);
    
    echo 'Chaine &agrave; traiter: '.$chaine.'<br/>'.PHP_EOL;
    echo 'Longueur chaine &agrave; traiter: '.strlen($chaine).'<br/>'.PHP_EOL;
    $longueur = 0;
    foreach ($aLongueurFragments AS $longueurFragment) {
        echo 'substr($chaine,'.$longueur.','.$longueurFragment.')'.substr($chaine,$longueur,$longueurFragment).'<br/>'.PHP_EOL;
        $longueur += $longueurFragment;
    }


echo '<pre>';
var_dump($chaine);
echo '</pre>';
 

?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 oct. 2016, 12:49

salut,

si le fichier est sur un serveur distant utilise l'extension ftp (si dispo) http://php.net/ftp_connect
sinon récupère le contenu du fichier, par exemple avec file_get_contents

Il te faudra aussi l'une des fonctions suivantes
http://php.net/manual/fr/function.str-getcsv.php
http://php.net/manual/fr/function.fgetcsv.php

tu peux aussi utiliser la classe SplFileObject pour lire ton fichier csv http://php.net/manual/fr/splfileobject.fgetcsv.php

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

24 oct. 2016, 14:16

merci j'avais vu. les différentes fonctions que tu me parle.
mais je sais pas visiblement j'y arrive pas.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 oct. 2016, 09:45

qu'as tu fais comme code ?
quel est le besoin exact ?
parce que la le code que tu indiques n’emploie pas de csv et il traite juste une chaîne formatée.
si tu as fichier contenant ce type de chaîne avec une chaîne par ligne la fonction file suffit.
tu fais une fonction avec ton code (en supprimant les doublons de variable et $chaine devient un paramètre de la fonction) et tu pourras traiter toutes les chaines contenue dans le fichier.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

25 oct. 2016, 10:22

en gros je recupere des données dans un fichiers csv, c'est une ligne de 210 caracteres. je le dois la formater au bon format pour recréer un csv.
le format des 210 caractère est tdecoupé toujours pareil. il peu y avoir des blanc ( c'est des fichiers chronopost ) dans cette ligne il y a toutes les infos que j'ai besoin heure de livraison, numero de BL, numero de suivi etc...
ex : 3772290200020160922BL01353 CMD002307 XW537462614FRXW5374626142486 DC DC 201609221625DCSCR

avant de l'envoyer a mon plugin ( prestashop) pour qu'il traite le fichier, il faut que je traite moi même la ligne en la découpant et en la mettant propre.
sauf que je galere.

j'ai pas la bonne methode, j'ai essayé tous sur google. mais la doc j'y comprend rien ca ne fonctionne jamais... ou alors je ne sais pas la faire fonctionner.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 oct. 2016, 10:45

sans code je ne peux pas beaucoup t'aider.
si ton découpage au dessus est fonctionnel tu as besoin de
- la fonction file
- la structure foreach
- utiliser un tableau php
- peut être file_put_contents si tu veux recréer un fichier.

font chier chronopost peuvent pas utiliser une format structuré nan :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

25 oct. 2016, 11:22

je me suis dis exactement pareil.

serieux, ils peuvent pas faire un truc déjà traiter, ils ont forcement le budget pour le développer.
tout une histoire pour recuperer un numero de suivi

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 oct. 2016, 14:52

mwé, enfin tu as quasiment fait tout le boulot ;)

y en a pour 5 à 10 minutes à mettre en forme.


@+
Il en faut peu pour être heureux ......