Categories: PHP

fgetcsv hanya membaca baris pertama file CSV? ini solusinya!

Bismillaahirrohmaanirrohiim…

Berikut ini script php untuk membaca file CSV:

<?php
$file_csv = isset($_FILES['file_csv']) ? $_FILES['file_csv'] : array();

$namafile = isset($file_csv['name']) ? $file_csv['name'] : '';//namafile.csv
$separator = isset($_POST['separator']) ? $_POST['separator'] : ',';

if (empty($namafile)) {
  exit('File upload tidak ditemukan');
}

$nama_temp = $file_csv['tmp_name'];

$rev = strrev($namafile);
if (substr(strtolower($rev), 0,3)!=='vsc') {
  @unlink($nama_temp);

  exit('File upload bukan CSV ('.$namafile.')');
}


// tentukan lokasi file yang akan disimpan
$dirupload = dirname(__FILE__).'/upload/';
$tujuanupload = $dirupload.$namafile;

// pindahkan file
$terupload = move_uploaded_file($nama_temp, $tujuanupload);

if (!$terupload) {
  @unlink($nama_temp);
  exit('Gagal upload file ('.$namafile.')');
}


$arr_xls = array();

//cari akhir baris csv
while(!feof($file)) {
  //baca isi csv perbaris dengan separator koma atau titik koma
  $data = fgetcsv($file,0, $separator); 
  if (!is_array($data)) continue;

  $jumkolom = count($data);

  for($i=0;$i<$jumkolom;$i++) {
    echo $data[$i];
    echo '<br />';
  }
  echo '<hr />';
}

//tutup akses file csv
fclose($file); 


Untuk tipe CSV seperti ini:

1,Sandal,7.500,
2,Sepatu,7.500,
3,Baju,7.500,

disimpan dari libreoffice tidak ada masalah, namun jika disimpan dari excel dengan format seperti di bawah ini:

1,Sandal,"7,500",,, 
2,Sepatu,"7,500",,,
3,Baju,"7,500",,,

maka yang akan terbaca hanya satu baris pertama yang berisi seluruh isi CSV.

hal ini tentu menyulitkan saat ingin mengolah data CSV, solusinya adalah dengan menambahkan kode dipaling atas:

ini_set('auto_detect_line_endings', true);

Dalam server windows, linux, atau mac, tentu mempunyai format ganti baris yang berbeda-beda, jadi di PHP harus di set deteksi ganti barisnya menjadi OTOMATIS.

Demikian, semoga bermanfaat.

 

Bagikan
rasupe

Recent Posts

Grouping warna pada tabel dengan PHP

Bismillaahirrohmaanirrohiim... Berikut ini cara grouping warna baris pada tabel dengan PHP, dimana jika ada kode…

6 days ago

CMS Website Desain Interior – PHP MySQL

CMS (Content Management System) Web untuk Desain Interior adalah solusi lengkap untuk mempresentasikan bisnis desain…

3 weeks ago

Source code Template website sekolah dengan react js

Bismillaahirrohmaanirrohiim... Berikut ini source code yang dapat dimodifikasi untuk membuat front end website sekolah dengan…

1 month ago

Subdomain pada cyberpanel tidak dapat diakses

Bismillaahirrohmaanirrohiim... Jika domain dan sub domainnya berada dalam satu vps cyberpanel, maka seringkali jadi tidak…

1 month ago

10 Aplikasi Kasir Terbaik di Indonesia (2025)

Bismillaahirrohmaanirrohiim... Dalam era digital saat ini, penggunaan aplikasi kasir (Point of Sale/POS) menjadi solusi penting…

1 month ago

Website di aapanel sering mati sendiri

Bismillaahirrohmaanirrohiim... Saat browsing-browsing saya seringkali melihat iklan aapanel, sekilas membuat penasaran sampai akhirnya saya mencoba…

1 month ago