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.
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);
}
?>
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);
?>
PHP> 5.3 utilisez fgetcsv () ou str_getcsv () . Ça ne pourrait pas être plus simple.
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'));
$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);
}
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);
}
Si vous utilisez composer, vous pouvez essayer CsvFileLoader
$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