[PHP] Récupérer fichier CSV à partir d'une adresse puis copie serveur

Récupérer fichier CSV à partir d'une adresse puis copie serveur [PHP] - PHP - Programmation

Marsh Posté le 27-10-2008 à 11:58:38    

Bonjour à tous,
 
Je souhaite récupérer le ficher CSV de cette adresse et l'intégrer dans une BDD MySQL :http://www.euronext.com/search/dow [...] e=dd/MM/yy
 
Deux possibilités :  
1/ Je télécharge le fichier sur mon serveur et je le traite
2/ Je le traite directement par la fonction fopen
 
Qu'en pensez-vous ? Est-ce qu'un traitement à la volée par fopen marcherait ?
 
Merci d'avance,
 
m.

Reply

Marsh Posté le 27-10-2008 à 11:58:38   

Reply

Marsh Posté le 27-10-2008 à 12:09:13    

sauf erreur de ma part , c'est du xls, pas du csv, c'est un peu plus difficile à traiter

 

edit : peut etre pas en fait

 

sinon, ca depend de la configuration de ton serveur
si tu peux acceder au ficheir a distance, autant utiliser fopen

 



Message édité par flo850 le 27-10-2008 à 12:10:50
Reply

Marsh Posté le 27-10-2008 à 12:21:21    

effectivement, c'est du xls...  
 
du coup, je sais pas si php saura le lire directement via fopen...

Reply

Marsh Posté le 27-10-2008 à 13:07:42    

Non, ce n'est pas du XLS, c'est un fichier texte tabulé ! L'extension est trompeuse.
Pour pouvoir utiliser fopen(), il faut que la directive allow_url_fopen soit à On dans php.ini.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 27-10-2008 à 17:47:34    

merci pour vos réponses...  
 
pensez vous que remplir une bdd avec ce type de fichier soit faisable ?

Reply

Marsh Posté le 27-10-2008 à 23:59:44    

avec la fonction file chaque ligne de ton fichier, est une entré dans une liste, vu que c'est un fichier tabuler tu recuper une ligne  tu fais un explode avec la tabulation comme séparateur, après le tour est joué  plus qu'a recuper les donnees de l'array ($arr) et faire une requete SDBD dans la boucle ;) ( ps: tu peu recuper l'id de la ligne si elle te sert via la variable $key )  
 

Code :
  1. <?php
  2.      $f = file('pricesearch.xls');
  3.      $f = array_slice($f, 5); // Supprime l'en-tete
  4.      foreach($f as $key => $val){
  5.          $arr = explode("\t", $val);
  6.        //echo $arr[0];
  7.      }
  8. ?>


Message édité par stealth35 le 28-10-2008 à 00:11:09
Reply

Marsh Posté le 28-10-2008 à 18:24:01    

je vais étudier ca...
 
mais je pensais que j'aurais pu mettre un "fopen" dans le "file"...

Reply

Marsh Posté le 28-10-2008 à 18:32:22    

tu peu mettre directement le lien dans file, je croi

Reply

Marsh Posté le 28-10-2008 à 18:45:05    

c'est juste...  
 
bon, du coup, je peux mettre mon array dans ma bdd et ca roule ! excellent !!! merci bcp !

Reply

Marsh Posté le 29-10-2008 à 09:48:23    

Voilà ce que je propose, mais bizarrement, ca marche pas : rien ne rentre dans ma base sql !!! :(
 

Code :
  1. <?php
  2. $connect = mysql_connect("localhost","root","" );
  3. mysql_select_db("euronext", $connect);
  4. $f = file("http://www.euronext.com/search/download/pricesearchdownloadpopup.jcsv?pricesearchresults=actif&equitiesChoice=1&structuredProductType=8&requestComesFromSearchBoxParameter=true&lan=EN&resultsTitle=Warrants&cha=1812&underlying=FR0003500008*XPAR*ISIN&instrumentType=3&underlyingType=2&riskLevel=L&format=xls&formatDecimal=.&formatDate=dd/MM/yy" );
  5.     $f = array_slice($f, 5); // Supprime l'en-tete  
  6.     foreach($f as $key => $val)
  7. {
  8.      $arr = explode("\t", $val);
  9.  //echo $arr[0];
  10.  //echo "<br>";
  11.      }
  12.  $query = "INSERT INTO 'master_data' VALUES (";
  13.   for ($i = 0; $i < count($arr); $i++)
  14.   {
  15.    $query .= "\'$arr[$i]\'";
  16.    if ($i < (count($arr) - 1)) $query .= ", ";
  17.   }
  18.   $query .= " )";
  19.   $result = mysql_query($query,$connect);
  20. ?>

Reply

Marsh Posté le 29-10-2008 à 09:48:23   

Reply

Marsh Posté le 29-10-2008 à 13:18:28    

normale ta requete n'est pas dans la boucle

Reply

Marsh Posté le 29-10-2008 à 13:39:54    

bah justement, je construis ma requete a partir de la boucle...

Reply

Marsh Posté le 29-10-2008 à 14:15:00    

la non, faut que ta requete soit dans le foreach

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed