web-dev-qa-db-fra.com

Comment importer un fichier csv en PHP?

Je suis très nouveau dans le développement web. En fait, je commence tout juste à apprendre.

Quelqu'un peut-il s'il vous plaît donner un exemple complet mais très simple expliquant comment importer un fichier CSV en PHP? J'ai essayé celui que j'ai reçu d'Internet mais je suis très confus parce que c'est compliqué pour moi. J'utilise le serveur WAMP avec PHP 5.3.5, Apache 2.2.17 et MySQL 5.5.8. S'il vous plaît aider.

J'ai essayé de coller le code mais c'est compliqué. Honnêtement, je suis également très nouveau sur StackOverflow.

27
Newbie Coder

Depuis le PHP manual :

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>
55
coreyward

Je sais que cela a été demandé il y a plus de trois ans… .. Mais la réponse acceptée n'est pas extrêmement utile.

Le code suivant est plus utile.

<?php
$File = 'loginevents.csv';

$arrResult  = array();
$handle     = fopen($File, "r");
if(empty($handle) === false) {
    while(($data = fgetcsv($handle, 1000, ",")) !== FALSE){
        $arrResult[] = $data;
    }
    fclose($handle);
}
print_r($arrResult);
?>
9
Alex Hakkenberg

PHP> 5.3 utilisez fgetcsv () ou str_getcsv () . Ça ne pourrait pas être plus simple.

7
Jason McCreary

La manière la plus simple que je connaisse ( str_getcsv ) consiste à importer un fichier CSV dans un tableau.

$csv = array_map('str_getcsv', file('data.csv'));
7
Danijel
$row = 1;
    $arrResult  = array();
    if (($handle = fopen("ifsc_code.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            DB::table('banks')->insert(
                array('bank_name' => $data[1], 'ifsc' => $data[2], 'micr' => $data[3], 'branch_name' => $data[4],'address' => $data[5], 'contact' => $data[6], 'city' => $data[7],'district' => $data[8],'state' => $data[9])
            );
        }
        fclose($handle);
    }
1
sanjay

Voici la version pour extraire les colonnes spécifiques par nom (modifié depuis @corecore ):

$row = 0;
$headers = [];
$filepath = "input.csv";
if (($handle = fopen($filepath, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if (++$row == 1) {
          $headers = array_flip($data); // Get the column names from the header.
          continue;
        } else {
          $col1 = $data[$headers['Col1Name']]; // Read row by the column name.
          $col2 = $data[$headers['Col2Name']];
          print "Row $row: $col1, $col2\n";
        }
    }
    fclose($handle);
}
1
kenorb

Si vous utilisez composer, vous pouvez essayer CsvFileLoader

0
luchaninov
   $filename=mktime().'_'.$_FILES['import']['name'];

      $path='common/csv/'.$filename;

    if(move_uploaded_file($_FILES['import']['tmp_name'],$path))
{

if(mysql_query("load data local infile '".$path."' INTO TABLE tbl_customer FIELDS TERMINATED BY ',' enclosed by '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES (`location`, `maildropdate`,`contact_number`,`first_name`,`mname`,`lastname`,`suffix`,`address`,`city`,`state`,`Zip`)"))

    {
      echo "imported successfully";

}

echo "<br>"."Uploaded Successfully".$path;

}

regardez ici pour plus d'informations

0
Bhupendra Kanojiya