Baca Tulis File DBF dengan PHP

Setelah sebelumnya kita membahas mengenai bagaimana baca tulis file CSV dengan PHP, maka pada tutorial ini akan dibahas mengenai baca tulis file DBF. Tutorial ini menjawab pertanyaan salah satu pengunjung Achmatim.Net yang menanyakan bagaimana penanganan file DBF dengan PHP. Berikut ini kutipannya:

terima kasih pak artikelnya, mohon kami diberi sampel cara membaca file dbf dengan php beserta cara insert, delete dan update, serta kalau ingin menampilkan beberapa filed saja bagaimana terima kasih.

Format file DBF (Database File) merupakan format penyimpanan basis data yang bisa dibilang generasi pertama dari DBMS (database management system). DBF dikenalkan pertama kali sebagai format file database dari DBMS dBase, yang selanjutnya digunakan juga oleh Paradox, Clipper, FoxPro dan beberapa database lainnya.

PHP sebagai bahasa pemrograman populer saat ini juga mendukung baca tulis file DBF (dBase). PHP memiliki sekumpulan fungsi khusus terkait penanganan dBase. Untuk dapat menggunakan fungsi tersebut, library PHP seperti php_dbase.dll (di Windows) harus diaktifkan. Namun dalam tutorial ini kita tidak akan menggunakan fungsi terkait dBase tersebut, tapi kita akan menggunakan salah satu library (class) yang saya dapat dari situs kumpulan class php. Library tersebut bernama phpxbase dan dibuat oleh Erwin Kooi.

Membuat dan Menulis File DBF

Dalam tutorial ini kita akan membuat file DBF sederhana bernama “mahasiswa.dbf” dimana didalamnya berisi data mahasiswa beserta nilainya. Field data yang akan disimpan adalah nim, nama dan nilai. Data mahasiswa akan diisikan melalui sebuah form sederhana.

Nama File: tulis_dbf.php

  1. <html>
  2. <head><title>Input Nilai Mahasiswa (Demo Menulis File DBF) </title> </head>
  3. <body>
  4. <h1>Input Nilai Mahasiswa</h1>
  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.  
  13. <?php
  14.  
  15. if (isset($_POST['Simpan'])) {
  16. //ambil data
  17. $nim = $_POST['nim'];
  18. $nama = $_POST['nama'];
  19. $nilai = $_POST['nilai'];
  20.  
  21. /* load the required classes */
  22. require_once "phpxbase/Column.class.php";
  23. require_once "phpxbase/Record.class.php";
  24. require_once "phpxbase/Table.class.php";
  25. require_once "phpxbase/WritableTable.class.php";
  26.  
  27. /* definisikan field */
  28. $fields = array(
  29. array("nim" , DBFFIELD_TYPE_CHAR, 11),
  30. array("nama" , DBFFIELD_TYPE_CHAR, 50),
  31. array("nilai" , DBFFIELD_TYPE_NUMERIC, 3, 0)
  32. );
  33.  
  34. /* buat tabel baru */
  35. $tableNew = XBaseWritableTable::create("mahasiswa.dbf",$fields,false);
  36.  
  37. /* masukkan data */
  38. $r =& $tableNew->appendRecord();
  39. $r->setObjectByName("nim",$nim);
  40. $r->setObjectByName("nama",$nama);
  41. $r->setObjectByName("nilai",$nilai);
  42. $tableNew->writeRecord();
  43.  
  44. echo '<h2>Data berhasil disimpan</h2>';
  45. echo '<p>Klik <a href="baca_dbf.php">di sini</a> untuk menampilkan data</p>';
  46. /* tutup tabel */
  47. $tableNew->close();
  48.  
  49. } // end of if
  50. ?>
  51. </body>
  52. </html>

Membaca dan Menampilkan Isi File DBF

Untuk membaca file DBF, digunakan class XbaseTable dari library phpxbase yang kita gunakan. Berikut ini contoh pembacaan file DBF yang sudah dibuat di program sebelumnya. Data akan ditampilkan ke dalam bentuk tabel di browser.

Nama File: baca_dbf.php

  1. <html>
  2. <head><title>Daftar Nilai Mahasiswa (Demo Baca File DBF)</title></head>
  3. <body>
  4. <h1>Daftar Nilai Mahasiswa</h1>
  5.  
  6. <table width="100%" border="1">
  7. <tr>
  8. <th>NO</th>
  9. <th>NIM</th>
  10. <th>NAMA</th>
  11. <th>NILAI</th>
  12. </tr>
  13.  
  14. <?php
  15. /* load the required classes */
  16. require_once "phpxbase/Column.class.php";
  17. require_once "phpxbase/Record.class.php";
  18. require_once "phpxbase/Table.class.php";
  19.  
  20. /* buat object table dan buka */
  21. $table = new XBaseTable("mahasiswa.dbf");
  22. $table->open();
  23.  
  24. $row = 1;
  25. while ($record=$table->nextRecord()) {
  26. echo "<tr>";
  27. echo "<td>".$row++."</td>";
  28. foreach ($table->getColumns() as $i=>$c) {
  29. echo "<td>".$record->getString($c)."</td>";
  30. }
  31. echo "</tr>";
  32. } //end while
  33.  
  34. $table->close();
  35.  
  36. ?>
  37. </table>
  38. <p><a href="tulis_dbf.php">Input Nilai Mahasiswa</a></p>
  39. </body>
  40. </html>

Demo dan Download Contoh Program

Kesimpulan

Proses baca tulis file DBF di PHP dapat menggunakan fungsi-fungsi yang sudah tersedia di PHP, yaitu fungsi yang berhubungan dengan penanganan database dBase. Sebagai alternatif, kita juga dapat menggunakan beberapa library (class) yang dibuat khusus untuk penanganan file DBF (dBase), salah satunya PHPXBASE. Tutorial ini hanya menjelaskan mengenai proses baca tulis file DBF menggunakan library PHPXBASE tersebut secara sederhana, namun selanjutnya dapat dikembangkan menjadi aplikasi yang lebih kompleks.

Selamat mencoba dan maju terus ilmu pengetahuan Indonesia!

Berbagi itu indah...Share on Facebook2Share on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0Digg this

Achmad Solichin

Telah menjadi staff pengajar di Universitas Budi Luhur (Jakarta) sejak tahun 2005. Selain mengajar, dia juga menyusun berbagai tutorial praktis di bidang komputer dan sempat menulis beberapa buku gratis, semua dipublikasikan di situs resminya, Achmatim.Net

You may also like...

32 Responses

  1. snoutz says:

    Good Tutorial,+ csv nya keren bgt…keep writing bos!

  2. dezulmar says:

    jika kita ingin menambahkan query mysql  misalnya perintah select dengan beberapa kondisi tertentu caranya gimana??? maksudnya di tuliskan di bagian mana dari program di atas…..
     
    kalau bisa mohon penjelsan yang lebih lanjut tentang PHPXBASE…terima kasih…

  3. xstudio212 says:

    Pak,..
    saya udah coba, tapi bingung karena error :
    Warning: require_once(phpxbase/Column.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\lesson\dbf\tulis_dbf.php on line 23

    Fatal error: require_once() [function.require]: Failed opening required ‘phpxbase/Column.class.php’ (include_path=’.;C:\xampp\php\pear\’) in C:\xampp\htdocs\lesson\dbf\tulis_dbf.php on line 23


    file class.php-nya apa satu folder dengan file baca_dbf.php? atau ditaruh di folder tertentu?
    mohon jawabannnya.
     
    trims

  4. xstudio212 says:

    Pak,..saya udah coba, tapi bingung karena error : Warning: require_once(phpxbase/Column.class.php) [function.require-once]: failed to open stream: No such file or directory in C:xampphtdocslessondbf ulis_dbf.php on line 23 Fatal error: require_once() [function.require]: Failed opening required ‘phpxbase/Column.class.php’ (include_path=’.;C:xamppphppear’) in C:xampphtdocslessondbf ulis_dbf.php on line 23 file class.php-nya apa satu folder dengan file baca_dbf.php? atau ditaruh di folder tertentu?mohon jawabannnya.trims

  5. pakde_kge says:

    Pak ini harus create table baru ya?
    Kalau seumpamanya insert dari table yg sudah exiting gimana ya? soalnya saya coba pakai function openWrite tidak bisa, dan kalau pakai function create itu table yang lama tertindih dan datanya yg masuk tinggal yg terbaru saja
    Mohon penjelasannya
    Trims.

  6. Arul says:

    ada masalah pada datetime data type, jika kita konversi maka nilainya tidak sama dengan yang ada pada table.

  7. achmatim says:

    #Arul. Terima kasih atas koreksinya, memang jika data berhubungan dengan waktu harus dilakukan konversi karena DBF memiliki format tertentu.

  8. Arul says:

    udah saya liat2 kembali kode nya dan rupanya masalahnya adalah perbedaan waktu atau time zone pada class XBaseRecord->getDateTime() yang dapat diatasi dengan cara marubah baris ini:
    $inttime = $buf[1]
    menjadi:
    $dateTimeZoneHere = new DateTimeZone(date_default_timezone_get());
    $dateTimeHere = new DateTime(“now”, $dateTimeZoneHere);
    $timeOffset = $dateTimeHere->getOffset();
    $inttime = ($buf[1]/1000) – $timeOffset;

  9. ajonk says:

    great post  sangat membantu banget

  10. budies says:

    saya mencoba kok error pak, kemdian mencoba mengganti seperti saran mas arul, juga tetep error, ya gak tahu sih apa maksudnya

  11. bayu says:

    Pak saya bisa membaca file dbf tetapi ada salah satu file dbf yang tidak bisa terbaca. tetapi setelah saya googling ternyata dia itu beda versi dbfnya file dbf saya adalah versi terbaru. tapi kalau saya convert dengan memakai software dari dbf ke dbf lama bisa terbaca. apakah ada solusinya jika tidak memakai convert dbf atau adakah koneksi khusus untuk dbf jenis ini. mohon bantuannya

  12. surya says:

    salam hangat pak… saya mau tanya gmn query antar table(.dbf) jika lebih dari satu. terimakasih…

  13. surya says:

    salam hangat pak,..
    saya mau menanyakan bagaimana query antar table(.dbf) klo lebih dari 2 table.
    thanks

  14. ancha says:

    pak mau tanya nih klo import file .text atau .xlsx ke database sql make php gmn ya klo bisa sekalian contoh codenya pak?
    soalnya saya pernah baca2 make class phpexcelreader cuma bisa .xls aja.
     

  15. Saya biasa buat program basis xbase. dan sedang pelan2 beralih nih ke PHP, wah..Tutor bapak sangat bermanfaat nih buat saya, terimakasih pak.

  16. parno says:

    mas, saya sudah bisa create file dbf
    tapi kok saya buka di foxpro 9 tidak bisa ya?
    pesannnya memo file mahasiswa.dbt is missing or invalid 

  17. hary says:

    Informasinya amat membantu pak, apa ada juga trik untuk membuat form2 dari VFP menjadi form2 html secara mudah? Salam..

  18. adi says:

    Maaf pak, saya pakai wamp server, sudah saya tes kok ga bisa ya… seluruh fungsi class di folder phpxbase ga bisa dijalankan. Apakah karena saya pakai Wamp server ya… kira2 web server apa yg cocok untuk menjalankan script tsb pak… thanks sebelumnya

    • achmatim says:

      tidak ada web server khusus yang cocok hanya untuk aplikasi php tertentu, kalo settingan web server beda, bisa jadi. yang jelas harus dilihat apakah ada error yang ditampilkan? ga jalannya gimana?

      • adi says:

        OK, sudah bisa pak, ternyata masalahnya hanya di setingan PHP.ini, display error harus dimatikan dulu.

        Oh ya satu lagi masalahnya pak, bagaimana cara mengupdate (hapus/edit) tiap record di dbf. Apakah bisa dilakukan? klo bisa mohon dishare jg pak soalnya sudah saya utak-atik ga bisa2… he he

        Terimakasih banyak atas penjelasanya

  19. Masyita Anwar says:

    Saya mencoba untuk mengkonversi database FoxPro (. Dbf) file untuk file database mysql menggunakan PHP scrpit .. mohon bantuannya untuk mengkonversi file dbf ke file mysql menggunakan script PHP.

    Terima kasih sebelumnya …

  20. Myee says:

    Great Tutorial,
    Saya coba bisa semua, kalo mau dikategorikan per folder seperti folder dbf, “create(“mahasiswa.dbf”,$fields,false)” tinggal tambah dbf/mahasiswa.dbf.

    Boleh tau tutorial untuk export dan importnya ?

    Thank you so much !

  21. Mas bro terima kasih ya. Artikelnya sangat berguna karena sekarang saya lagi ada tugas convert data ke dbf.

    Matur thank you mas bro sekali lagi.

  22. Endip says:

    jempol deh mas hehehe

  23. masibeth says:

    kok webserver saya nddak bisa yh.., muncul error kayak ginian.
    “Fatal error: Class ‘XBaseTable’ not found in E:Documents and SettingsAdminMy DocumentsDownloadsCompressedUwAmpwwwaca_tulis_dbfaca_dbf.php”

    saya pakai wamp server 2.2.1

    mohon bantuannya..
    thanks sebelunya.

  24. mbahsarno says:

    terima kasih tutorialnya pak …

  25. eko says:

    terima kasih tutorialnya pa, kalo membaca hanya field tertentu dan menghapus record caranya bagaimana ya, saya masih bingun. tx

  26. nursidik says:

    Pak kok phpnya gak jalan semua yah..
    di baca_dbf.php ada pesan error
    Fatal error: Class ‘XBaseTable’ not found in D:\wamp\www\baca_tulis_dbf\baca_dbf.php on line 21

    gimana pak solusinya mohon pencerahannya.. saya pake wamp server, saya ilangin display errornya sama ajah malah pesan errornya ilang..

  27. sumi says:

    pak , mau tanya nih apakah panjang field terbatas atau tidk?

  28. deni says:

    Bos.. Foxpro juga hebat bos sekarang…. sudah ada versi Foxpro for Web nya..

Leave a Reply

Your email address will not be published. Required fields are marked *