Membuat Class Database Mysql dengan PHP

Posted: December 1, 2010 in Script Lanjutan
Tags: , , , ,

sebenarnya model class seperti ini sudah ada jika anda menggunakan framework MVC yang ada dipasaran, namun jika anda membuat sendiri program web dan berhubungan dengan database mysql “:D pa lagi database/ Querynya bnyk :D”. temen2 biasanya terbebani dengan pemanggilan / penulisan text query yang berulang-ulang.

disini kita akan mencoba membuat simple class database mysql, untuk memudahkan kita dalam menulis query mysql di PHP. scriptnya seperti ini ni :

class database
{
    var $koneksi ;
    var $selectDb;
    var $query ;
    var $result ;
    var $row;
    var $jumlah ;

    function database()
    {
      	        $nameSer = ""; //Nama Host
		$username =""; //username Host
		$pass = ""; //Passwrod Host
		$dbname = ""; //Database Name
		$koneksi = mysql_connect($names,$username,$pass)or die('error'.mysql_errno());

      $this->selectDb = mysql_select_db($dbname,$koneksi);
      if ( !$this->selectDb )
      {
        echo "gagal";
      }
    }

    function query($query)//fungsi query
    {
      $this->result = mysql_query($query);
    }

    function tampilkan()//fungsi menampilkan data
    {
      $this->row = mysql_fetch_array($this->result);
      return $this->row;
    }

	function view()//fungsi menampilkan data
    {
      $this->row = mysql_fetch_object($this->result);
      return $this->row;
    }

    function getJumlah()//fungsi menampilkan jumlah data
    {
      $this->jumlah = mysql_num_rows($this->result);
      return $this->jumlah;
    }

	 function get($table)//fungsi select
    {
      $this->result = mysql_query("SELECT * FROM ".$table);
    }

    function getJumlahFromTable($table)
    {
      $this->get($table);
      return $this->getJumlah();
    }

     function insert( $database , $data)//fungsi insert
    {
		$row = array();
		$nilai = array();
		foreach ( $data as $kolom =>$value )
               {
			$row[] = $kolom;
			$nilai[] = "'".$value."'";
		}

		$this->result = $this->query("INSERT INTO ". $database ."(". implode(',' ,$row) .")
						VALUES (". implode(',' , $nilai) .")");
     }

      function update($table , $data , $where)//fungsi update
      {
		foreach ( $data as $kolom => $row )
		{
			$set[]= $kolom."='".$row."'" ;
		}
		$set = implode(',',$set);
		$query = "UPDATE ".$table." SET ".$set." WHERE ".$where ;
		$this->query($query);
	}

	function delete($table , $where)//fungsi delete
	{
		$this->query("DELETE FROM ".$table." WHERE ".$where);
	}

}

oke, sekarang kita akan mencoba bagaimana memanfaatkan class database tersebut. disini kita anggap class database, berada dalam satu file dengan script php anda. kita coba untuk query standar select, insert, update delete.

untuk pengembangan lebih lanjut, anda bisa ngopreknya sendiri dunk😀

sebagai contoh saya pakai contoh tabel distributor , anda bisa mengembangkan dengan tabel dan database lain tentunya :

CREATE TABLE IF NOT EXISTS `distributor` (
  `id_distributor` int(11) NOT NULL AUTO_INCREMENT,
  `nama_distributor` char(25) NOT NULL,
  `alamat` varchar(100) NOT NULL,
  `tlp_fax` char(30) NOT NULL,
  `e_mail` varchar(50) NOT NULL,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  `tgl_daftar` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `nama_bank` varchar(100) NOT NULL,
  `no_rek` varchar(100) NOT NULL,
  `atas_nama` varchar(100) NOT NULL,
  `val_distributor` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id_distributor`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=8 ;

dengan contoh data :

INSERT INTO `distributor` (`id_distributor`, `nama_distributor`, `alamat`, `tlp_fax`, `e_mail`, `username`, `password`, `tgl_daftar`, `nama_bank`, `no_rek`, `atas_nama`, `val_distributor`) VALUES
(1, 'Roni Sianturi', 'Jl. Bukit Darmo Boulevard Blok B1-12', '03172310031', 'rafiqakhmad@yahoo.com', 'ronisianturi', '0f48b74111d2cd3ec8938337bdaace45', '2009-06-03 14:24:25', 'BCA Cabang Sidoarjo', '98789798879', 'Roni Sianturi', 1),
(2, 'AbdurRahman', 'Sidoarjo', '9708979687', 'abd@abd.com', 'abdur', '0f48b74111d2cd3ec8938337bdaace45', '2010-07-26 05:04:02', 'BNI Cabang Waru', '97987968687', 'Abdurahman', 1),
(3, 'Kurniawan Dwi', 'Brak tebaloan', '9798797', 'kurniawan@gmail.com', 'distributor', '0f48b74111d2cd3ec8938337bdaace45', '2010-07-23 02:04:56', 'BCA Cabang Sidoarjo', '9700360023', 'Kurniawan Dwi Hermanto', 1),
(4, 'SDFSDF', 'SDFSDF', 'SDFSDF', 'XXX@XXXX.COM', 'XXXXX', '0f48b74111d2cd3ec8938337bdaace45', '2010-07-26 05:05:55', '', '', '', 0);

Untuk Query dan memanfaatkan class database yang kita buat tadi contoh seperti ini :

  1. Select database
    $resultx = new database;
    $resultx->query("SELECT * FROM distributor");
    
  2. Insert database
    $insert = new database;
    $data['nama_distributor'] ="Joko";
    $data['alamat'] = "Botol";
    $data['tlp_fax'] = "911";
    $data['e_mail'] = "kurniawandwi.h@gmail.com";
    $data['username'] ="jin";
    $data['val_distributor'] = 0;
    $data['password'] =  md5("jin");
    $insert ->insert("distributor",$data);
    
  3. Update database
    $ubah = new database;
    $id_distributor =1;
    $data['nama_distributor'] ="Joko";
    $data['alamat'] = "Botol";
    $data['tlp_fax'] = "911";
    $data['e_mail'] = "kurniawandwi.h@gmail.com";
    $data['username'] ="jin";
    $data['val_distributor'] = 0;
    $data['password'] =  md5("jin");
    $ubah->update("distributor",$data,"id_distributor = '".$id_distributor."'");
    
  4. Delete database
    $hapus = new database;
    $id_distributor =1;
    $hapus ->delete("distributor","id_distributor = '".$id_distributor."'");
    

Ok semoga membantu😀 CMIIW…………….:D

Comments
  1. bet365 says:

    Good day I was luck to search your theme in digg
    your topic is quality
    I learn a lot in your website really thanks very much
    btw the theme of you blog is really admirable
    where can find it

  2. maulana says:

    untuk menampilkan hasil dari selctnya gimana ya?

    • kurniawandwi says:

      $resultx = new database;
      $resultx->query(“SELECT * FROM distributor”);

      nah kan bs langsung pake standar penulisannya mysql di php :

      while ($rowx=$resultx->view()) {

      }

      atau pake

      while ($rowx=$resultx->tampilkan()) {

      }

      script diatas sama seperti

      while($rowx = mysql_fetch_array($resultx)){

      }

  3. firman says:

    thanks tutorialnya gan..
    kerennn baget berguna untuk newbie sepertii sya😀
    oia sya mau tnya nie
    itu pas insert data itu ditentuin dari awal apa mang ngambil dari form??..
    mohon pencerahn cos eror nie pas sya coba😀

    • kurniawandwi says:

      terserah firman mau dr form atau dari awal..

      kan itu cm struktur classnya, biar mudah ndak pake nulis script banyak2..

      kalo dari form mau GET/POST kan tinggal

      $insert = new database;
      $data[‘nama_distributor’] =$_POST[nama_distributor];
      $data[‘alamat’] = $_POST[alamat];
      $insert ->insert(“distributor”,$data);

      tinggal pengalamatan dan penamaan dan methodnya aj disesuaiin…

      CMIIW…😀

  4. Lanang says:

    makasi bang, akhirnya say tertolong juga

  5. afry says:

    kalau membuat 2 query gimana, masa harus menggunakan ini $resultx = new database; 2 kali.

    misal :

    $resultx->query(‘select…..from table1’);
    $resultx ->query(‘ select….from table2’);

    ngewhilenya gimana mas…mohon pencerahannya..

  6. phuad says:

    mas..itu klo mw insert 2 table sekaligus gk bisa ya??

    $insert = new database;
    $data[‘nama_distributor’] =”Joko”;
    $data[‘alamat’] = “Botol”;
    $data[‘tlp_fax’] = “911”;
    $data[‘e_mail’] = “kurniawandwi.h@gmail.com”;
    $data[‘username’] =”jin”;
    $data[‘val_distributor’] = 0;
    $data[‘password’] = md5(“jin”);
    $insert ->insert(“distributor”,$data);

    trus bikin object lagi buat simpen table lainya..

    $simpan = new database;
    $data[‘nama_distributor’] =”Joko”;
    $data[‘alamat’] = “Botol”;
    $data[‘tlp_fax’] = “911”;
    $data[‘e_mail’] = “kurniawandwi.h@gmail.com”;
    $data[‘username’] =”jin”;
    $data[‘val_distributor’] = 0;
    $data[‘password’] = md5(“jin”);
    $simpan ->insert(“distributor2”,$data);

    • kurniawandwi says:

      kalo model gt pasti bs, kan inisialisasi classnya masing2. keliatan dr $simpan = new database; $insert = new database;

      anda bikin dua inisialisasi pasi bisa, yang ndak bisa tuh kalo inisialisasinya cuma satu trus dipakai beberapa kalo tanpa ada fungsi yg meng-cut tiap aksi.

      tapi kekurangan di script yang mas tulis tuh, masalah Array-nya…

      kalo inisialisasi arraynya tiap object ndak dibedain ntar bacanya bisa terus-menerus tanpa kepotong, kalau ndak da pemisah aksi.

      tp kalo tak liat seklias bisa kok jalan, soalnya array inisnya satu2 dan di tindih nilainya ntar..😀

  7. aditya says:

    gan bisa minta ym nya ngak,,, hehehe ane pengen belajar dari agan,,,

  8. rahmat1929 says:

    gan mksh ya gan infonya ini sya msh bru bgd blajar bginian mhn bantuan ya gan dan minta ijin copy classnya dan add ymnya gan..salam [ rahmat1929 ]

  9. rohim says:

    nice tutorial gan,,

    tapi ane mau tanya neh gan,,

    gan ko di tiap fungsi bisa dapet $koneksi ane ga paham gan makasih

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