Skip to main content

PHP: dbClass

Sebelumnya, tiap bikin program dengan PHP aku selalu memanfaatkan PEAR:DB, soalnya sebelumnya Arif udah makai. Meski sangat membantu dan banyak keuntungan, tapi kalau ada error di sana aku jadi bingung.

Makanya untuk proyek ERP yang lagi dikerjakan, aku rencana untuk membuat kelas sendiri, khusus menangani database. Jadi nantinya kalaupun ada perubahan database yang dipakai (misal dari PosgreSQL ke MySQL), perubahan hanya dilakukan di kelas tersebut.

Dillah aku "daulat" untuk ngoprek dan buat kelas tersebut, dan lumayan juga. Ternyata nggak serumit yang kubayangkan. Setelah aku periksa, aku buat beberapa perbaikan, sedikit sih. Kodingnya seperti ini.


class dbClass {

var $strConn; // connection string
var $dbCon;
var $dbError;

// fungsi untuk mengambil connection string
// data disimpan dalam strConn
function getConnString() {
$this->strConn = "host=localhost port=5432 dbname=aska user=mahawan password=mahawan";
}

//fungsi untuk konek ke database postgre
//parameternya adalah gabungan string dari nama host,port,dbname,user, dan password
function connect() {
//$conn_string = "host=localhost port=5432 dbname=aska user=mahawan password=mahawan";
$this->getConnString();
$this->dbCon = pg_connect($this->strConn);
if (!$this->dbCon) {
$this->dbError = "Cannot connect to database!";
return false;
} else {
return true;
}
}

///fungsi untuk mengeksekusi perintah SQL
///parameter yang diperlukan adalah nilai string dari SQL tersebut
function execute($stringSQL) {
//$exec = $this->connect($this->conn_string) ;
$result = pg_exec($this->dbCon, $stringSQL);
if ($result) {
return $result;
}else{
$this->dbError = "Error executing query!";
return false;
}
}

//mengambil data dari tiap record
//parameter yang diperlukan adalah hasil dari query
function fetchrow($res) {
//$res = this->execute($stringSQL);
$resFetch = pg_fetch_object($res);
if(!$resFetch){
$this->dbError = "Error executing query!";
return false;
} else {
return $resFetch;
}
}

//mengetahui jumlah record dari hasil query
//parameter yan diperlukan adalah hasil dari query
//hasil dari fungsi ini INTEGER
function numrows($resExecute)
{
$intJmlBrs = pg_numrows($resExecute);
return $intJmlBrs;
}

function close()
{
$tutupKoneksi = pg_close($dbCon);
return 0;
}
} // end of class db


Karena yang dipakai adalah PostgreSQL, maka sintaksnya memakai sintaks pg. Contoh manggil programnya seperti ini:


connect()) {
die($dB->dbError);
} else {

//$dB->execute($isiSQL,$dbConfig);
$tempExec = $dB->execute($isiSQL) ;
$totalBaris = $dB->numrows($tempExec);
echo "$totalBaris aja deh";
echo "";
echo "";
echo "";

while ($data = $dB->fetchrow($tempExec)) {
echo "";
echo "";
}
echo "";
echo"
KodeKeterangan
$data->id$data->name
";

//$dB->close($dbConfig);
echo "hai ";
}

?>



Not perfect, but I think it will be usefull. Masih ada beberapa tambahan yang perlu dilakukan, terutama untuk membaca konfigurasi. Well, I think this just a first step. Keep coding, dude!!!

Comments

Popular posts from this blog

PostGreSQL :: Hitung Umur

Ternyata untuk menghitung umur dari data yang disimpan di PostGreSQL sangat gampang. PostGreSQL sendiri sudah menyediakan fungsi yang mendukung. Beberapa fungsi yang bisa dipakai adalah AGE dan EXTRACT. AGE dipakai untuk menghitung umur dari sebuah data, dibandingkan dengan hari ini, atau dengan data lain (tipenya timestamp). Misal: age(timestamp '1980-09-27'), akan menghasilkan nilai (bertipe interval) "24 years 1 mon 25 days". Nah, kalau mau mengambil nilai tahunnya saja, tinggal menggunakan EXTRACT Contoh: EXTRACT(year FROM AGE(timestamp '2001-09-27')), hasilnya akan jadi 24.

PHP :: Selisih Jam

Setelah kemarin kesulitan untuk melakukan increment ataupun decrement terhadap variabel waktu (date/time) di PHP, kali ini nemuin masalah untuk mencari selisih waktu (dari satu jam ke jam tertentu), yang perlu untuk ngitung lembur karyawan. Tadinya kepikiran untuk buat fungsi sendiri, yang flow -nya kira-kira begini: - masing-masing dipisah menjadi jam, menit, detik - bandingkan antara keduanya. - lakukan pengurangan terhadap masing-masing komponen (jam, menit dan detik) - gabungkan hasil perhitungan ... (selisih jam + selisih menit + selisih detik) Tapi waktu aku ingat kasus Next Date, ... muncul ide untuk menggunakan cara yang sama, yaitu memanfaatkan format UNIX timestamp, terus nyoba mencari selisihnya. TERNYATA BERHASIL !!! Flownya seperti ini: - masing-masing dipisah menjadi jam, menit,detik - ubah masing-masing ke format timestamp, gunakan fungsi mktime() - kurangkan kedua jam - hasilnya dibagi 60 (karena satuannya pakai menit), sementara selisih timestamp itu dalam detik Algori

Delphi :: Split String

Akhirnya ketemu juga cara untuk melakukan split string. (Terbiasa pakai PHP sih, yang sangat memanjakan dalam pengelolaan string.) Di sini memanfaatkan TStringList, unit Classes. // procedure untuk split string procedure Split (const Delimiter: Char; // delimiter charachter Input: string; // input string const Strings: TStrings) ; // list of string result begin Assert(Assigned(Strings)) ; Strings.Clear; Strings.Delimiter := Delimiter; Strings.DelimitedText := Input; end; // contoh pemakaian procedure TForm1.Button1Click(Sender: TObject) ; var A: TStringList; begin A := TStringList.Create; try Split(' ', 'your delphi guide', A) ; ShowMessage(a[0]) ; //your ShowMessage(a[1]) ; //delphi ShowMessage(a[2]) ; //guide finally A.Free; end; end; Source : http://delphi.about.com/cs/adptips2002/a/bltip1102_5.htm Wheew .. akhirnya. One step ahead!!