Cara menggunakan php csv file

Cara menggunakan php csv file

Jadi dalam tutorial ini Anda akan belajar cara mengekspor data ke CSV dengan PHP dan MySQL. Tutorial dijelaskan dalam langkah-langkah mudah dengan demo langsung dan tautan untuk mengunduh kode sumber.

Daftar Isi

  • Langkah 1: Membuat Tabel Database MySQL
  • Langkah2: Get Record dari Tabel Database MySQL
  • Langkah 3: Tampilkan Record dengan Tombol Ekspor
  • Langkah 4: Export Data ke CSV dengan PHP

Langkah 1: Membuat Tabel Database MySQL

Seperti kita akan menangani tutorial ini dengan contoh untuk mengekspor data dalam format CSV dari tabel depelovers  database MySQL. Jadi pertama-tama kita akan membuat tabel database MySQL menggunakan kueri di bawah ini.

CREATE TABLE `developers` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `skills` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `gender` varchar(255) NOT NULL,
  `designation` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  `image` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Kami juga akan memasukkan beberapa record ke dalam tabel depelovers untuk menampilkannya dan mengekspornya ke file CSV.

 INSERT INTO `developers` (`id`, `name`, `skills`, `address`, `gender`, `designation`, `age`, `image`) VALUES
(1, 'Smith', '', 'Newyork', 'Male', 'Software Engineer', 34, ''),
(2, 'Steve', '', 'London', 'Female', 'Web Developer', 28, ''),
(3, 'Jhon', '', 'Delhi, India', 'Male', 'Web Developer', 30, '');

Langkah2: Get Record dari Tabel Database MySQL

Kita akan mendapatkan record dari tabel depelovers database MySQL dengan PHP dan menyimpannya ke dalam array untuk menampilkan catatan dan juga mengekspor record ke file CSV.

$query = "SELECT name, gender, address, designation, age FROM developers LIMIT 10";
$result = mysqli_query($conn, $query) or die("database error:". mysqli_error($conn));
$records = array();
while( $rows = mysqli_fetch_assoc($result) ) {
	$records[] = $rows;
}

Langkah 3: Tampilkan Record dengan Tombol Ekspor

Sekarang di file index.php, kita akan menampilkan record developers dengan tombol export.

<div class="well-sm col-sm-12">
	<div class="btn-group pull-right">	
		<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">					
			<button type="submit" id="export_csv_data" name='export_csv_data' value="Export to CSV" class="btn btn-info">Export to CSV</button>
		</form>
	</div>
</div>				  
<table id="" class="table table-striped table-bordered">
	<tr>
		<th>Name</th>
		<th>Gender</th>
		<th>Age</th>	
		<th>Designation</th>
		<th>Address</th>
	</tr>
	<tbody>
		<?php foreach($records as $record) { ?>
		   <tr>
		   <td><?php echo $record ['name']; ?></td>
		   <td><?php echo $record ['gender']; ?></td>
		   <td><?php echo $record ['age']; ?></td>   
		   <td><?php echo $record ['designation']; ?></td>
		   <td><?php echo $record ['address']; ?></td>   
		   </tr>
		<?php } ?>
	</tbody>
</table>	

Langkah 4: Export Data ke CSV dengan PHP

Sekarang akhirnya di file export.php, kita akan menangani fungsionalitas untuk mengekspor record ke file CSV menggunakan PHP.

if(isset($_POST["export_csv_data"])) {	
	$csv_file = "phpzag_csv_export_".date('Ymd') . ".csv";			
	header("Content-Type: text/csv");
	header("Content-Disposition: attachment; filename=\"$csv_file\"");	
	$fh = fopen( 'php://output', 'w' );
	$is_coloumn = true;
	if(!empty($records)) {
	  foreach($records as $record) {
		if($is_coloumn) {		  	  
		  fputcsv($fh, array_keys($record));
		  $is_coloumn = false;
		}		
		fputcsv($fh, array_values($record));
	  }
	   fclose($fh);
	}
	exit;  
}

Selesai semoga membantu Anda.

CSV atau Comma-Separated Value merupakan suatu format penyajian data teks dimana setiap data (field) dipisahkan dengan suatu pemisah koma (,) dan setiap baris record dipisahkan dengan baris baru (line-break). Selain menggunakan pemisah (delimiter) koma terkadang jenis file CSV juga dapat dipisahkan dengan titik-koma (;) atau karakter <tab>. Jenis file CSV sendiri, dapat dibaca oleh semua software pengolah data (spreadsheet) seperti Microsoft Excel dan OpenOffice Calc. Spesifikasi dan penjelasan mengenai file CSV dapat ditemukan di Wikipedia.

PHP merupakan salah satu bahasa pemrograman yang mendukung penanganan file dengan cukup baik, termasuk file CSV. Bahkan mulai versi 4, PHP menambahkan fungsi khusus untuk penanganan file CSV, yaitu fgetcsv() untuk baca file CSV dan fputcsv() untuk membuat (menulis) file CSV. Dalam tutorial ini akan dibahas mengenai bagaimana baca tulis file CSV dengan menggunakan PHP.

Bentuk Umum Fungsi fgetcsv() dan fputcsv()

Sebelum  disajikan contoh programnya, ada baiknya kita pahami dulu mengenai bagaimana bentuk umum atau spesifikasi dari fungsi fgetcsv() dan fputcsv().

Bentuk umum file fgetcsv()

array fgetcsv (
   resource $handle
   [, int $length
   [, string $delimiter = ','
   [, string $enclosure = '"'
   [, string $escape = '\\' ]]]]
)

Berdasarkan bentuk umum di atas, fungsi fgetcsv() yang merupakan fungsi pembacaan file CSV yang memiliki output berupa array hasil pembacaan file CSV. Fungsi memiliki 5 parameter dimana parameter pertama harus disertakan, namun parameter yang lainnya bersifat opsional (pilihan). Berikut ini penjelasan masing-masing parameter tersebut:

  • $handle. Merupakan pointer pembacaan file, dapat berupa hasil dari fungsi fopen(), popen() maupun fsockopen().
  • $length. Merupakan jumlah atau panjang karakter pembacaan baris di file CSV. Parameter ini harus lebih besar dari jumlah karakter baris yang paling panjang di file CSV. Memang agak sulit menentukan pastinya, namun kita dapat memperkirakannya tanpa harus benar-benar tepat sesuai dengan baris terpanjang. Umumnya parameter ini cukup diisi dengan 1000 atau 1024 dengan asumsi jumlah karakter tiap baris tidak lebih dari 1000 atau 1024 tersebut.
  • $delimiter. Parameter ini menentukan jenis pemisah (delimiter) field dalam file CSV yang akan dibaca. Nilai default dari parameter ini adalah koma (,).
  • $enclosure. Parameter ini menentukan karakter pengapit (enclosure) untuk setiap field dalam file CSV. Default-nya adalah tanda kutip-dua (“).
  • $escape. Parameter pilihan ini menentukan karakter escape yang digunakan dalam file CSV.

Bentuk umum file fputcsv()

int fputcsv (
   resource $handle ,
   array $fields
   [, string $delimiter = ','
   [, string $enclosure = '"' ]]
)

Dari bentuk umum di atas, terlihat bahwa fungsi fputcsv() memiliki 4 parameter dimana dua parameter pertama bersifat wajib. Fungsi ini memiliki return-value berupa bilangan integer yang merupakan panjang data (string) yang berhasil dituliskan ke file CSV. Fungsi akan bernilai FALSE (-1) jika gagal melakukan penulisan file. Mengenai penjelasan parameter fungsi, untuk $handle, $delimiter dan $enclosure sama seperti parameter pada fungsi fgetcsv(). Untuk parameter $fields dapat berisi array dari nilai data untuk setiap baris (record) yang akan ditambahkan ke file CSV.

Contoh Program Menulis ke File CSV

Pada contoh program ini, kita akan membuat file CSV dengan nama “mahasiswa.csv” yang akan diisi dengan data mahasiswa. Untuk menyederhanakan contoh, data mahasiswa yang akan dituliskan hanya berisi 3 (tiga) field yaitu “nim”, “nama” dan “nilai”. Masing-masing field akan dipisahkan dengan delimiter koma (,). Pengisian data dilakukan melalui sebuah form dimana saat tombol simpan ditekan, maka program akan menambahkan datanya ke file “mahasiswa.csv”.

Simpan file berikut ini sebagai “tulis_csv_mahasiswa.php“.

  1. <html>

  2. <head><title>Input Nilai Mahasiswa (Demo Menulis File CSV)</title></head>

  3. <body>

  4. <h2>Input Nilai Mahasiswa</h2>

  5. <form action="" method="post">

  6. NIM : <input type="text" name="nim" maxlength="10"/><br/>

  7. NAMA : <input type="text" name="nama" size="30"/><br/>

  8. NILAI : <input type="text" name="nilai" size="5"/><br/>

  9. <input type="submit" name="Simpan" value="Simpan"/>

  10. <input type="reset" name="Reset" value="Reset"/>

  11. </form>

  12. <?php

  13. if (isset($_POST['Simpan'])) {

  14. //ambil data

  15. $nim = $_POST['nim'];

  16. $nama = $_POST['nama'];

  17. $nilai = $_POST['nilai'];

  18. $arrdata = array($nim, $nama, $nilai);

  19. $fp = fopen('mahasiswa.csv', 'a+');

  20. $tulis = fputcsv($fp, $arrdata);

  21. if ($tulis) {

  22. echo "<h2>Data berhasil disimpan</h2>";

  23. } else {

  24. echo "<h2>Data gagal disimpan</h2>";

  25. }

  26. echo "<p><a href='baca_csv_mahasiswa.php'>Lihat isi file CSV</a> | ";

  27. echo "<a href='mahasiswa.csv'>Download file CSV</a></p>";

  28. }

  29. ?>

  30. </body>

  31. </html>

Contoh Program Membaca File CSV

Contoh program ini akan mendemonstrasikan bagaimana pembacaan file CSV. Program akan membaca file “mahasiswa.csv” yang sudah diisi dengan program sebelumnya dan akan menampilkannya di sebuah tabel.

Simpan program berikut ini sebagai “baca_csv_mahasiswa.php

  1. <html>

  2. <head><title>Daftar Nilai Mahasiswa (Demo Baca File CSV)</title></head>

  3. <body>

  4. <h2>Daftar Nilai Mahasiswa</h2>

  5. <table width="100%" border="1">

  6. <tr>

  7. <th>NO</th>

  8. <th>NIM</th>

  9. <th>NAMA</th>

  10. <th>NILAI</th>

  11. </tr>

  12. <?php

  13. if (($handle = fopen("mahasiswa.csv", "r")) !== FALSE) {

  14. $row = 1;

  15. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

  16. echo "<tr>";

  17. echo "<td>".$row++."</td>";

  18. echo "<td>".$data[0]."</td>";

  19. echo "<td>".$data[1]."</td>";

  20. echo "<td>".$data[2]."</td>";

  21. echo "</tr>";

  22. } //end while

  23. } //end if

  24. ?>

  25. </table>

  26. <p><a href="tulis_csv_mahasiswa.php">Input Nilai Mahasiswa</a></p>

  27. </body>

  28. </html>

Demo dan Download Contoh Program

  • Demo Program baca tulis CSV dengan PHP
  • Download Contoh Program baca tulis CSV dengan PHP
  • Download Tutorial ini.

Kesimpulan

Proses baca tulis file CSV di PHP ternyata cukup mudah karena memang sudah tersedia fungsi yang diperlukan. Tutorial ini hanya menjelaskan mengenai proses baca tulis file CSV secara sederhana, namun selanjutnya dapat dikembangkan menjadi aplikasi yang lebih kompleks, misalnya membaca file dari database kemudian menuliskannya ke dalam file CSV. Selamat mencoba dan maju terus ilmu pengetahuan Indonesia!

Please follow and like us:

Cara menggunakan php csv file

Cara menggunakan php csv file