Create .dbf file with PostgreSql and Php

helloooo world…. 😀
Dapet ilmu baru lagi nih, dapet tugas baru jadi nambah ilmu baru juga deh(alhamdulillah).
Hmm tadinya sempet kebingungan juga sih gimana caranya, ada n’ga toolsnya, trus saya-nya sendiri bisa n’ga?? hehehee tapi dibawa sombong santai aja 😀 .

Bingung karena gatau?? yaa nanya, simple kan??
Lalu bertanyalah saya pada kawan(masternya) 😀 .Nih har(ngasih links) hehehe banyak soalnya link yang dikasih, loh?? kok cuma link?? hahahaa iya cuma link dan ga bisa protes lahh mau sampe kapan saya disuapin terus 😀 (beuhh gaya beud). Okehh link dapet, pelajari bentar, praktekin, dan ehh kagak jalan 😀 hahahahaa maklum ilmu masih cetek. Nah mumpung temen saya belom balik nih(sambil berharap juga dia ga bosen ditanyain terus) nanyain lagi ke dia & daripada ribet(padahal mah males 😀 ) langsung minta sourcenya dia aja deh(disuapin disuapin mulu dah gw)

Kenapa ini????lohh kok masih ga bisa??
Source samaan padahal, di-dia lancar filenya jadi(perfect)dah pokoknya 😀 .
Ehh ga lama di chat ama dia, har jangan lupa install extension-nya(ato aktipin di php.ini-nya).
Hahahaaa (kampret) pantes aje kagak bisa-bisa. Yaudah kita install aja extensionnya dulu :

$pecl install dbase

*maaf klo salah lupa soalnya cara install pake pecl gimana 😀

Nah itu tadi cara klo di fedora, kalo di windows download aja file nya di-sini-mungkin 😀 hehehee yaaa pokonya cari aja deh di google :p .
Abis itu buat file dbase.ini(kalo di fedora taro di /etc/php.d/) kalo di windows edit aja file php.ini terus tambahin ini :

extension=dbase.so

Sip, tools pendukung udah siap. Ayoo kita cobain source dari master yang tadi semoga lancar.

<?php

$dbname = 'folder/TEST.DBF';
$fields = array(
	array('name', 'C', 50),
	array('address', 'C', 50),
	array('email', 'C', 50)
);

$db = dbase_create($dbname, $fields);
if($db){
	for($i=0;$i<10;$i++){
		$add = dbase_add_record($db, 
			array(
				'hrydi',
				'jakarta',
				'hrydi@wordpress.com'
			)
		);
		if($add){
			echo 'Sukses tambah data';
		} else {
			echo 'Gagal tambah data';
		}
	}
	dbase_close($db);
} else {
	echo 'error mamen!!!!!!!!!';
}

?>

Gimana?? sukses?? berhasil bikin file .dbf nya??
Soalnya saya ga berhasil 😀 hahahaa, tapi jangan khawatirkan saya untunglah temen saya masih ada jadi saya mah masih bisa nanya lagi. Ternyata setelah ditelusur dan di-ingatkan akhirnya ketauan siapa biang kerok masalahnya. Hal sederhana namun dilupakan sebuah “hak akses folder” hehehee 😀 .

$chmod -R 777 folder

Testing kedua, dan…..alhamdulillah berhasil 😀 .Horayyy makasih pak.
Terus udah gini aja?? mana contoh pake PostgreSql nya??? eittss n’ga gini aja kok, tenang-tenang yaa ini masih berlanjut kok 😀 . Saya tidak akan melupakan kamu kok mba, poto kamu aja aku save kok(lohhh kok malah galau) hehehee.

Bermodalkan contoh tadi kita bisa kembangkan lagi, nah sesuai judul dan tugas saya, kita akan coba export data dari database PostgreSql ke dbf. Okehh langsung aja bisa dicek dibawah ini :

<?php

//Example Fields(dynamic fields) penamaan kolom ga boleh panjang2
//ambil data dari input post wiht array names
// $data[] = "Nim,C,100";
// $data[] = "Tanggal,D";
// $data[] = "Telp,C,100";

$data[] = "NIM,C,100";
$data[] = "TGLLHR,D";
$data[] = "TLPRMH,C,100";

//Example DataBase (using simple array)
// $array[] = array('01234234','2014-01-01','0984987978');
// $array[] = array('01234235','2014-01-01','0288987978');
// $array[] = array('01234233','','0988987979');
// $array[] = array('01234232','2014-01-01','0988987978');

//Using Real Database
class Koneksi extends PDO {
    private $dbnames     = "sekolah";
    private $host       = "localhost";
    private $user       = "postgres";
    private $password   = "password";
    private $port       = 5432;
    
    
    public function __construct() {
        try {
            parent::__construct("pgsql:host=$this->host;port=$this->port;dbname=$this->dbnames;user=$this->user;password=$this->password");
        } catch(PDOException $e) {
            echo    $e->getMessage();  
        }
    
    }
}

$dbh = new Koneksi();

$query = "select nim, tanggal_lahir, telp_rumah from mahasiswa where nim like '%2014%' order by nim";
$array = $dbh->query($query)->fetchALL(PDO::FETCH_ASSOC);

//Copy from here for view


//Check condition if empty then filled something(as string)
foreach($array as $key => $vals){

	foreach($vals as $key => $val){
	
		if($val == ""){
			$nval[] = "-";
		}else{
			$nval[] = $val;
		}
		
	}
	
	$arrays[] = $nval;
	$nval = array();
	
}

//DBase file name
$dbasename = 'x/TRAKM.DBF';

//Generate Fields
foreach($data as $keys => $recs){

	foreach(explode(',',$recs) as $row => $new){
		if((int)$new){
		  $b[] = (int)$new;
		}else{
		  $b[] = $new;
		}
	}
	$a[] = $b;
	$b = array();
	
}
///

//Debugging
// echo "<pre>";
// var_dump($a);
// echo "</pre>";
// die();

//Create DBase
$db = dbase_create($dbasename, $a);

//Count, using new array
$count = sizeof($arrays);

if($db){
	for($i=0;$i<$count;$i++){
		$add = dbase_add_record($db, $arrays[$i]);
		if($add){
// 			echo 'Sukses tambah data<br>';
		} else {
			echo 'Gagal tambah data';
		}
	}
	dbase_close($db);
} else {
	echo 'error!!!!!!!!!';
}

///Download file
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($dbasename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($dbasename));
// // ///
// 
// // ///
if(readfile($dbasename)){
	unlink($dbasename); //Hapus file temp
}

fiuhhh…akhirnya beres juga.
Bisa dilihat banyak yang saya kasih komentar-komentar, pengen dijelasin sekalian sih tapi males ahh udah ngantuk. Sok kalo mau diubah biar lebih keren lagi silahkan, dan kalo bisa sih saya dibagi juga biar bisa lebih keren juga dong :p .
Sampai jumpa dan have a nice dream mba 🙂

Advertisements
This entry was posted in php and tagged , , , . Bookmark the permalink.

2 Responses to Create .dbf file with PostgreSql and Php

  1. Nia says:

    makasih banyak master, bagus sekali tutorialnya sangat membantu saya membuat DBF untuk dikti di UNHAN.. 😀

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s