Achmatim.Net



« | »

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!

Posted by on March 17, 2010.

Tags:

Categories: PHP

29 Responses

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

    by snoutz on Apr 16, 2010 at 15:49

  2. 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…

    by dezulmar on May 20, 2010 at 14:30

  3. 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

    by xstudio212 on Jul 24, 2010 at 10:52

  4. 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

    by xstudio212 on Jul 24, 2010 at 10:54

  5. 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.

    by pakde_kge on Oct 6, 2010 at 14:14

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

    by Arul on Oct 26, 2010 at 17:21

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

    by achmatim on Oct 27, 2010 at 03:14

  8. 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;

    by Arul on Oct 27, 2010 at 12:10

  9. great post  sangat membantu banget

    by ajonk on Feb 11, 2011 at 14:45

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

    by budies on Mar 31, 2011 at 19:06

  11. @budies. mungkin boleh tau dimana errornya? atau akan lebih baik kirim screen shootnya ke email saya

    by achmatim on Apr 1, 2011 at 04:17

  12. 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

    by bayu on May 22, 2011 at 10:55

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

    by surya on Jul 4, 2011 at 17:17

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

    by surya on Jul 4, 2011 at 17:19

  15. 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.
     

    by ancha on Jul 11, 2011 at 13:44

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

    by DWI PURBOYUSTIAN on Dec 6, 2011 at 09:45

  17. 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 

    by parno on Dec 28, 2011 at 20:22

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

    by hary on Jun 13, 2012 at 19:48

  19. 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

    by adi on Jun 15, 2012 at 22:43

  20. 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?

    by achmatim on Jun 19, 2012 at 01:13

  21. 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

    by adi on Jul 11, 2012 at 17:53

  22. 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 …

    by Masyita Anwar on Jul 18, 2012 at 23:50

  23. 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 !

    by Myee on Aug 28, 2012 at 14:42

  24. 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.

    by Aditya Darmawan on Dec 5, 2012 at 11:58

  25. jempol deh mas hehehe

    by Endip on Jul 19, 2013 at 14:30

  26. 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.

    by masibeth on Oct 3, 2013 at 01:13

  27. Itu terjadi karena ada library yang tidak disertakan, silahkan coba program secara utuh.

    by Achmad Solichin on Oct 3, 2013 at 11:00

  28. terima kasih tutorialnya pak …

    by mbahsarno on Aug 29, 2014 at 13:25

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

    by eko on Dec 23, 2014 at 10:30

Leave a Reply

 

« | »




Recent Posts


Pages