2009-11-05 15 views
2

Par exemple, j'ai une variable « $ foo » qui comprend toutes les données que je veux montrer dans le CSV:Comment créer un fichier CSV en utilisant PHP (et télécharger)

$foo = "some value,another value,last value"; 

Mon but est à:

  1. Créer un fichier CSV nommé "some.csv" dont le contenu est égal à $ foo

  2. Upload "some.csv" à mon serveur.

Comment cela peut-il être fait?

Mise à jour: Voici le code exact qui a fonctionné pour moi.

$foo = "some value,another value,last value"; 
$file = 'some_data.csv'; 
file_put_contents($file, $foo); 
+0

si vous êtes en cours d'exécution php à votre domicile et que vous voulez le télécharger sur votre serveur? – Galen

+0

Non, je télécharger mon script php à un serveur, qui sera géré par un travail de Chron. Le script doit créer un fichier csv et l'ajouter à un répertoire sur le même espace/serveur d'hébergement. – edt

Répondre

2

Numéro 1:

file_put_contents("foobar.csv", $yourString); 

Numéro 2:

$c = curl_init("http://"...); 
curl_setopt($c, CURLOPT_POSTFIELDS, array('somefile' => "@foobar.csv")); 
$result = curl_exec($c); 
curl_close($c); 
print_r($result); 

note le @ avant le nom du fichier

+0

Ne pas oublier de vérifier pour vous assurer que l'extension cURL est installé. –

2

Voir fputcsv()

Si foo $ est déjà csv-formaté. Vous pouvez utiliser file_put_contents()

Vous ne spécifiez pas la méthode de téléchargement. Voici un exemple en utilisant ftp (UNSECURE):

$foo = '...csv data...'; 
$username = "myUser"; 
$password = "myPassword"; 
$url = "myserver.com/file.csv"; 
$hostname= "ftp://$username:[email protected]$url"; 
file_put_contents($hostname, $foo); 
1

Si vous avez déjà avoir la variable avec toutes les données que vous pouvez utiliser file_put_contents pour l'enregistrer en tant que csv

0

Pour créer le fichier CSV, vous devez diviser votre chaîne en tableau, puis la parcourir. Après cela, vous pouvez enregistrer le fichier dans n'importe quel répertoire auquel le compte du serveur Web a accès sur votre serveur. Voici un exemple ...

//variables for the CSV file 
$directory = '/sampledir/'; 
$file = 'samplefile.csv'; 
$filepath = $directory.$file; 

//open the file 
$fp = fopen("$filepath",'w+'); 

//create the array 
$foo = "some value,another value,last value"; 
$arrFoo = explode(',',$foo); 

//loop through the array and write to the file 
$buffer = ''; 
foreach($arrFoo AS $value) { 
    $buffer .= $value."\r\n"; 
} 
fwrite($fp,$buffer); 

//close the file 
fclose($fp); 

Votre dossier sera maintenant écrit dans le répertoire défini dans $directory avec le nom de fichier défini dans $file.

-Justin

1

Comment télécharger un fichier CSV en utilisant PHP (code de travail)

Recherche Bibliothèque

<?php 
class query{ 

function mysql_query_string($string){ 
    $enabled = true; 
    $htmlspecialchars = false; # Convert special characters to HTML entities 
    /**************************************************************** 
    The translations performed are: 

    '&' (ampersand) becomes '&amp;' 
    '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set. 
    ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set. 
    '<' (less than) becomes '&lt;' 
    '>' (greater than) becomes '&gt;' 

    *****************************************************************/ 

    if($htmlspecialchars){ 
    # Convert special characters to HTML entities 
    $string = htmlspecialchars($string, ENT_QUOTES); 
    } 
    else{ 
    /**************************************************************** 
    '"' (double quote) becomes '&quot;' 
    ''' (single quote) becomes '&#039;' 
    ****************************************************************/ 
    //$string = str_replace('"',"&quot;",$string); 
    //$string = str_replace("'","&#039;",$string); 
    } 

    if($enabled and gettype($string) == "string"){ 
     # Escapes special characters in a string for use in a SQL statement 
     return mysql_real_escape_string(trim($string)); 
    } 
    elseif($enabled and gettype($string) == "array"){ 
    $ary_to_return = array(); 
    foreach($string as $str){ 
     $ary_to_return[]=mysql_real_escape_string(trim($str)); 
    } 
     return $ary_to_return; 
    } 
    else{ 
     return trim($string); 
    } 
    } 
} 
?> 

Appel csv Méthode

public function csvFileSubmitData(){ 

    $this->load->library('query'); 
    $query=new query(); 
    $root = DIR_PATH.'public/administrator/csv/'; 

    $fileToUpload= (isset($_FILES['fileToUpload']) and $_FILES['fileToUpload']['size'] > 0 and 
    $_FILES['fileToUpload']['error'] == 0) ? $_FILES['fileToUpload'] : ""; 

     if(is_array($fileToUpload)){ # CHECK UPLOADED FILE 1 FOR VALIDATION 
      $fileToUpload['name'] = str_replace(" ","_",$fileToUpload['name']); 
      $fileToUpload['name'] = str_replace("&","and",$fileToUpload['name']); 
      # CHECK FILE TYPE IF IT IS IMAGE JPG,GIF,PNG ETC 
      $fnarr = explode(".", $fileToUpload['name']); 
     } 

    $rand = rand(1000,10000); 
    $filecsv = $rand."_".$fileToUpload['name']; 
    $file1 = $root.$filecsv; 
    move_uploaded_file($fileToUpload['tmp_name'],$file1); 

    $fieldseparator = ","; 
    $lineseparator = "\n"; 
    $csvfile = $file1; 
    $addauto = 0; 
    $save = 0; 
    $outputfile = "output.sql"; 
    if(!file_exists($csvfile)) { 
     echo "File not found. Make sure you specified the correct path.\n"; 
     exit; 
    } 
    $file = fopen($csvfile,"r"); 

    if(!$file) { 
     echo "Error opening data file.\n"; 
     exit; 
    } 

    $size = filesize($csvfile); 

    if(!$size) { 
     echo "File is empty.\n"; 
     exit; 
    } 

    $csvcontent = fread($file,$size); 

    fclose($file); 

    $lines = 1; 
    $queries = ""; 
    $linearray = array(); 
    $values = ""; 
    $m =0; 
    $linestext = split($lineseparator,$csvcontent); 

    foreach($linestext as $line){ 
    if($m++==0){ 
     continue; 
    } 

    $lines++; 
    $line = trim($line," \t"); 
    if($line == ''){ 
     break; 
    } 
    $linearray = explode($fieldseparator,$line); 

    $topicname = $linearray[0]; 
    $question = $linearray[1]; 
    $answer1 = $linearray[2]; 

    if(isset($linearray[1]) and $linearray[1] != ''){ 

       $topicname = $query->mysql_query_string($linearray[0]); 
       $question = $query->mysql_query_string($linearray[1]); 
       $answer_type = $query->mysql_query_string($linearray[2]); 
    } 
    //Save Csv data in your table like this 
    //query(insert into topics SET `topic`='".$topicname."',`question`='".$question."'); 
    }} 

Si vous utilisez Codeignitor Framework donc ce code est trop facile à intégrer, pas dur & règle rapide, vous pouvez également utiliser ce code PHP simple ainsi que .....

Thanx Abdulsamad

Questions connexes