Baca Tulis File CSV Dengan PHP
Baca Tulis File CSV Dengan PHP
ngan PHP
Tutorial dibuat oleh Achmad Sollichin (http:///achmatim..net) pada ta
anggal 09 Maret 2010
CSV atau Comma‐Se eparated Value merupakkan suatu fo ormat penyajjian data tekks
dimana setiap data (field) dipisaahkan dengaan suatu pem misah koma (,) dan setiap
baris reecord dipisah hkan dengan baris baru (line‐breaak). Selain menggunaka
m n
pemisah h (delimiter) koma terkad dang jenis file CSV juga dapat dipisaahkan dengan
titik‐kom
ma (;) atau kaarakter <tab C sendiri, dapat dibacaa oleh semua
b>. Jenis file CSV
softwaree pengolah data (spreadsheet) seperti Microso oft Excel dann OpenOffice
Calc. Speesifikasi dan penjelasan mengenai file CSV dapat ditemukan di Wikipediaa.
PHP meerupakan salah satu bahasa pemrograman yang mendukungg penanganaan file dengaan cukup
baik, terrmasuk file CSV.
C Bahkan mulai versi 4, PHP men nambahkan fungsi
f khusu
us untuk pen nanganan
file CSV,, yaitu fgetcssv() untuk baca file CSV dan fputcsvv() untuk meembuat (men nulis) file CSV
V. Dalam
tutorial ini akan dibaahas mengen nai bagaimanna baca tuliss file CSV den
ngan mengguunakan PHP.
Sebelum
m disajikan contoh
c programnya, adaa baiknya kitta pahami du
ulu mengenaai bagaimanaa bentuk
umum atau
a spesifikaasi dari fungssi fgetcsv() dan
d fputcsv().
a
array fgetcsv (
resource $handle
[, int $leength
[, string $
$delimiter = ','
[, string $enclosure
$ = '"'
[, string $escape
$ = '\\' ]]]]
)
Berikut ini
i penjelasaan masing‐masing parameter tersebu ut:
$handle. Merup pakan pointeer pembacaaan file, dapaat berupa hasil dari fun ngsi fopen(), popen()
mau upun fsockop pen().
$len ngth. Merupakan jumlah h atau panjaang karakter pembacaan n baris di filee CSV. Parammeter ini
haruus lebih besaar dari jumlaah karakter baris
b yang paaling panjang di file CSVV. Memang agak
a sulit
men nentukan paastinya, nam mun kita dap pat memperrkirakannya tanpa haruss benar‐ben nar tepat
sesuuai dengan baris
b terpanjang. Umum mnya parame eter ini cukuup diisi denggan 1000 attau 1024
denggan asumsi jumlah karakkter tiap bariis tidak lebih dari 1000 attau 1024 terrsebut.
$delimiter. Paraameter ini menentukan
m j
jenis pemisaah (delimiterr) field dalam
m file CSV yaang akan
dibaaca. Nilai deffault dari parrameter ini adalah
a koma (,). 1
$encclosure. Parameter ini menentukan
m engapit (enclosure) untu
karakter pe uk setiap field dalam
file CSV.
C Defaultt‐nya adalah tanda kutip‐‐dua (“).
$esccape. Parameter pilihan ini menentukan karakterr escape yang digunakan dalam file CSV. C
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.
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”.
1 <html>
2 <head><title>Input Nilai Mahasiswa (Demo Menulis File CSV) </title>
3 </head>
4 <body>
5 <h1>Input Nilai Mahasiswa</h1>
6 <form action="" method="post">
7 NIM : <input type="text" name="nim" maxlength="10"/><br/>
8 NAMA : <input type="text" name="nama" size="30"/><br/>
9 NILAI : <input type="text" name="nilai" size="5"/><br/>
10 <input type="submit" name="Simpan" value="Simpan"/>
11 <input type="reset" name="Reset" value="Reset"/>
12 </form>
13
14 <?php
15 if (isset($_POST['Simpan'])) {
16 //ambil data
17 $nim = $_POST['nim'];
18 $nama = $_POST['nama'];
19 $nilai = $_POST['nilai'];
20
21 $arrdata = array($nim, $nama, $nilai);
22
23 $fp = fopen('mahasiswa.csv', 'a+');
24
25 $tulis = fputcsv($fp, $arrdata);
26 2
27 if ($tulis) {
28 echo "<h2>Data berhasil disimpan</h2>";
29 } else {
30 echo "<h2>Data gagal disimpan</h2>";
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.
1 <html>
2 <head><title>Daftar Nilai Mahasiswa (Demo Baca File CSV)</title>
3 </head>
4 <body>
5 <h1>Daftar Nilai Mahasiswa</h1>
6
7 <table width="100%" border="1">
8 <tr>
9 <th>NO</th>
10 <th>NIM</th>
11 <th>NAMA</th>
12 <th>NILAI</th>
13 </tr>
14
15 <?php
16 if (($handle = fopen("mahasiswa.csv", "r")) !== FALSE) {
17 $row = 1;
18 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
19 echo "<tr>";
20 echo "<td>".$row++."</td>";
21 echo "<td>".$data[0]."</td>";
22 echo "<td>".$data[1]."</td>";
23 echo "<td>".$data[2]."</td>";
24 echo "</tr>";
25 } //end while
26 fclose($handle);
27 } //end if
28
29 ?>
30 </table>
31 <p><a href="tulis_csv_mahasiswa.php">Input Nilai Mahasiswa</a></p>
32 </body>
33 </html>
34 3
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.
‐oOo‐
Tentang Penulis
Lisensi Dokumen
Seluruh isi dalam dokumen ini dapat digunakan, dimodifikasi dan disebarluaskan secara bebas untuk
tujuan pendidikan, pembelajaran dan bukan komersial (non profit), dengan syarat tidak
menghilangkan, menghapus atau mengubah atribut penulis dokumen ini dan pernyataan dalam
lisensi dokumen yang disertakan di setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang
atau mengkomersialkan tutorial ini kecuali mendapatkan ijin terlebih dahulu dari penulis.