CRUD PDO + RSUD

Halo semua, apa kabar? kali ini penulis akan membahas tutorial CRUD PHP Data Object dengan fitur Search, Upload, Download dan Report PDF. Tutorial ini adalah artikel lanjutan dari Tutorial PDO CRUD Dasar. Tools tambahan yang akan kita gunakan untuk membuat Report PDF adalah Dompdf yang dapat kita unduh secara bebas di GitHub Dompdf dan sudah saya unggah disini agar dapat dengan mudah diintegrasikan. Sekarang kita mulai langkah-langkahnya...

                Pertama, kita buat database yang akan kita gunakan, nama databasenya pdo_data_crudrsud :

CREATE TABLE `m_data` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` text NOT NULL,
  `kelas` text NOT NULL,
  `jurusan` text NOT NULL,
  `tempat_lahir` text NOT NULL,
  `foto` text NOT NULL,
  `tanggal_lahir` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

Kedua, kita buat folder pada htdocs untuk project kita, misalnya folder pdo. Kemudian buat struktur folder dan file seperti berikut :

Catatan :

Hasil unduhan dari http://fileman.ariefsetya.com/dompdf.zip dapat langsung di ekstrak ke folder /pdocrudrsud/__class/dompdf/

Selanjutnya kita mulai koding dari file ke file dan saya sertakan penjelasan di bawahnya J

crud.pdo.class.php

engine   = 'mysql';
        $this->host     = 'localhost';
        $this->database = 'pdo_data_crudrsud';
        $this->user     = 'root';
        $this->pass     = '';
        $dns = $this->engine.':dbname='.$this->database.";host=".$this->host;
        parent::__construct( $dns, $this->user, $this->pass );
    }
       
    public function insert($table,$rows=null)
    {
            $command = 'INSERT INTO '.$table;
            $row = null; $value=null;
            foreach ($rows as $key => $nilainya)
            {
              $row  .=",".$key;
              $value        .=", :".$key;
            }
            $command .="(".substr($row,1).")";
            $command .="VALUES(".substr($value,1).")"; 
            $stmt =  parent::prepare($command);
            $stmt->execute($rows);
            $rowcount = $stmt->rowCount();
            return $rowcount;
    }
       






    public function delete($tabel,$where=null)
    {
            $command = 'DELETE FROM '.$tabel;

            $list = Array(); $parameter = null;
            foreach ($where as $key => $value)
            {
              $list[] = "$key = :$key";
              $parameter .= ', ":'.$key.'":"'.$value.'"';
            }
            $command .= ' WHERE '.implode(' AND ',$list);
       
            $json = "{".substr($parameter,1)."}";
            $param = json_decode($json,true);
                           
            $query = parent::prepare($command);
            $query->execute($param);
            $rowcount = $query->rowCount();
   	      return $rowcount;
    }
       
    public function update($tabel, $fild = null ,$where = null)
    {
        $update = 'UPDATE '.$tabel.' SET ';
        $set=null; $value=null;
        foreach($fild as $key => $values)
        {
             $set .= ', '.$key. ' = :'.$key;
             $value .= ', ":'.$key.'":"'.$values.'"';
        }
        $update .= substr(trim($set),1);
        $json = '{'.substr($value,1).'}';
        $param = json_decode($json,true);

        if($where != null)
        {
        $update .= ' WHERE '.$where;
        }

        $query = parent::prepare($update);
        $query->execute($param);
        $rowcount = $query->rowCount();
    	  return $rowcount;
    }
       
    public function select($table, $rows, $where = null, $order = null, $limit= null)
    {
        $command = 'SELECT '.$rows.' FROM '.$table;
        if($where != null)
            $command .= ' WHERE '.$where;
        if($order != null)
            $command .= ' ORDER BY '.$order;            
        if($limit != null)
            $command .= ' LIMIT '.$limit;
                       
            $query = parent::prepare($command);
            $query->execute();
           
            $posts = array();
            while($row = $query->fetch(PDO::FETCH_ASSOC))
            {
                     $posts[] = $row;
            }
            return $this->result = $posts;
    }

    public function getResult()
    {
        return $this->result;
    } 
       
}
 
?>


Penjelasan :

class pdo_class extends PDO

kita membuat class bernama pdo_class dengan menurunkan class PDO yang sudah ada pada sistem PHP

private $engine;
private $host;
private $database;
private $user;
private $pass;

private $result;

kita membuat private variable untuk kita gunakan sebagai variabel global

public function __construct()
   {
   $this->engine   	= 'mysql';
   $this->host       	= 'localhost';
   $this->database 	= 'pdo_data_crudrsud';
   $this->user     	= 'root';
   $this->pass     	= '';   
   $dns = $this->engine.':dbname='.$this->database.";host=".$this->host;
   parent::__construct($dns, $this->user, $this->pass);
   }

Kita membuat function __construct() yaitu function parent yang pasti di eksekusi ketika class dipanggil

public function insert($table,$rows=null)
    {
            $command = 'INSERT INTO '.$table;
            $row = null; $value=null;
            foreach ($rows as $key => $nilainya)
            {
              $row  .=",".$key;
              $value        .=", :".$key;
            }
            $command .="(".substr($row,1).")";
            $command .="VALUES(".substr($value,1).")";
            
            $stmt =  parent::prepare($command);
            $stmt->execute($rows);
            $rowcount = $stmt->rowCount();
            return $rowcount;
    }

Kita membuat function yang akan digunakan untuk menambah data ke dalam table

Contoh penggunaan :

insert('m_data',$data); 
?>

Class pdo_class dipanggil untuk di masukkan ke variabel db kemudian dilakukan proses insert data menggunakan $db->insert($string, $array);. Variabel string didalam kurung berisi nama tabel yang akan kita insert datanya, kemudianvariabel array berisi data-data yang disimpan dalam array untuk di masukkan ke tabel.

$data['nama_field'] = $_POST['nama_inputan']; data di dalam array pertama berisi nama field dan data nama_inputan adalah name dari input, textarea atau select yang digunakan pada form

public function delete($tabel,$where=null)
    {
            $command = 'DELETE FROM '.$tabel;
           
            $list = Array(); $parameter = null;
            foreach ($where as $key => $value)
            {
              $list[] = "$key = :$key";
              $parameter .= ', ":'.$key.'":"'.$value.'"';
            }
            $command .= ' WHERE '.implode(' AND ',$list);
       
            $json = "{".substr($parameter,1)."}";
            $param = json_decode($json,true);
                           
            $query = parent::prepare($command);
            $query->execute($param);
            $rowcount = $query->rowCount();
    return $rowcount;
    }

Kita membuat function yang digunakan untuk menghapus data dari table

Contoh penggunaan :

delete('m_data',$data);
?>

Kita menggunakan $db->delete($string,$array); untuk menghapus data dengan variabel string berisi nama tabel dari data yang akan dihapus dan variabel array adalah kriteria data yang akan dihapus

 

$data['nama_field'] = $_GET['data_kriteria'];

Disini terlihat jelas pada kolom pertama digunakan untuk mengisi nama field, kemudian pada data_kriteria berisi data dari field yang di deklarasikan pada kolom pertama sebagai kriteria dari data yang akan di hapus, misalnya id=‘6’, atau kode=‘ASP’

public function update($tabel, $fild = null ,$where = null)
    {
        $update = 'UPDATE '.$tabel.' SET ';
        $set=null; $value=null;
        foreach($fild as $key => $values)
        {
             $set .= ', '.$key. ' = :'.$key;
             $value .= ', ":'.$key.'":"'.$values.'"';
        }
        $update .= substr(trim($set),1);
        $json = '{'.substr($value,1).'}';
        $param = json_decode($json,true);

        if($where != null)
        {
        $update .= ' WHERE '.$where;
        }

        $query = parent::prepare($update);
        $query->execute($param);
        $rowcount = $query->rowCount();
        return $rowcount;
    }

Kita membuat function yang akan digunakan untuk mengupdate data pada table

Contoh penggunaan :

update('m_data',$data,"id='".$_POST['id']."'");
?>

Sedikit berbeda dengan tambah dan hapus, untuk mengupdate data ada 3 kolom dalam function yang harus kita isi seperti $db->update('m_data',$data,"id='".$_POST['id']."'");$db->update($string, $array, $criteria);. Untuk variabel string berisi nama tabel dari data yang akan di update, kemudian variabel array berisi data-data yang disimpan dalam array untuk dimasukkan ke dalam table, sedangkan variabel criteria berisi kriteria dari data yang akan di update, misalnya id=’7’, atau kode=’ASP’

public function select($table, $rows, $where = null, $order = null, $limit= null)
    {
        $command = 'SELECT '.$rows.' FROM '.$table;
        if($where != null)
            $command .= ' WHERE '.$where;
        if($order != null)
            $command .= ' ORDER BY '.$order;            
        if($limit != null)
            $command .= ' LIMIT '.$limit;
                       
            $query = parent::prepare($command);
            $query->execute();
           
            $posts = array();
            while($row = $query->fetch(PDO::FETCH_ASSOC))
            {
                     $posts[] = $row;
            }
            return $this->result = $posts;
    }

    public function getResult()
    {
        return $this->result;
    }

Kita membuat function yang akan kita gunakan untuk memanggil data secara keseluruhan atau sesuai kriteria dari $rows, $where, atau dari $limit

Contoh penggunaan :

select("m_data","*","kode=’ASP’","id desc","5");
$data = $db->getResult();
?>

Keterangan :

“m_data” adalah nama tabel
“*” adalah field yang ingin di munculkan, tanda bintang untuk memunculkan semua field
“kode=’ASP’” adalah kriteria untuk mengisi WHERE
“id desc” adalah fungsi dari ORDER BY
“5” adalah limit dari data yang dimunculkan

 

cari.php

 

Hasil Pencarian ""

select("m_data","*",'nama like "%'.$_POST['data'].'%"'); $data = $db->getResult(); for($i=0;$i

No.NamaKelasJurusanTempat LahirTanggal LahirTindakan
LihatUbahHapus
Data not found

Penjelasan :

 

Hasil Pencarian ""

Digunakan untuk menampilkan data teks yang di POST dari form pencarian

$db->select("m_data","*",'nama like "%'.$_POST['data'].'%"');
$data = $db->getResult();

Digunakan untuk memanggil data dari tabel sesuai kriteria

for($i=0;$i

melakukan perulangan untuk menampilkan data hasil pencarian

Salah satu cara menampilkan data pada tabel, dimana variabel i sebagai index pada array yang dihasilkan oleh query dan ‘nama’ sebagai nama field yang ingin ditampilkan

onclick="return confirm('Apakah Anda yakin ingin menghapus data ?')"

meminta konfirmasi untuk penghapusan data sebelum di eksekusi ke halaman lain

if(sizeof($data)=="0")

apabila data yang di cari tidak ada, maka akan tampil pesan Data Not Found

 

data.php

 

Semua Data

select("m_data","*"); $data = $db->getResult(); for($i=0;$i

No.NamaKelasJurusanTempat LahirTanggal LahirFotoTindakan
UnduhLihatUbahHapus
Data not found

Penjelasan hampir sama seperti pada file cari.php

File ini digunakan untuk menampilkan semua data yang ada pada tabel

lihat.php

select("m_data","*","id=".$_GET['id']);
$data = $db->getResult();
$row = $data[0];
echo "Detail Data

"; ?>

Nama
Kelas
Jurusan
Tempat Lahir
Tanggal Lahir
Foto

Tindakan : Ubah atau Hapus atau Unduh Foto

Penjelasan :

Pada file lihat.php hanya terdapat fungsi untuk menampilkan data saja. Penjelasannya sama seperti pada file cari.php dan data.php

tambah.php

 

Tambah Data

Nama 
KelasX ( Sepuluh )XI ( Sebelas )XII ( Dua Belas )
JurusanRekayasa Perangkat LunakPemasaranAdministrasi PerkantoranAkuntansi
Tempat Lahir 
Tanggal Lahir 
Foto 
 SimpanKosongkan

Penjelasan :

 

Digunakan sebagai form untuk mengirim data melalui metode POST

enctype="multipart/form-data"

menggunakan enctype karena form ini digunakan juga untuk mengirim file gambar dari input yang bertipe file seperti

Simpan

Digunakan untuk melakukan eksekusi POST data, jadi setelah button di klik maka halaman dan data-data akan dikirim pada alamat yang tertera pada action contohnya action="proses/save.php"

Kosongkan

Digunakan untuk mereset/mengosongkan data pada input ketika di POST

 

ubah.php

select("m_data","*","id=".$_GET['id']);
$data = $db->getResult();
$row = $data[0];
?>

Ubah Data

Nama 
Kelasvalue="X">X ( Sepuluh )value="XI">XI ( Sebelas )value="XII">XII ( Dua Belas )
Jurusanvalue="RPL">Rekayasa Perangkat Lunakvalue="PM">Pemasaranvalue="AP">Administrasi Perkantoranvalue="AK">Akuntansi
Tempat Lahir 
Tanggal Lahir 
Foto
 UbahKosongkan

Penjelasan :

Formnya sama seperti tambah.php, hanya saja pada form ini data-data yang akan diubah dimunculkan terlebih dahulu pada input dan ditambahkan 1 input untuk mengisi id dari data yang akan diubah seperti . Input ini cukup di hidden saja, tapi jangan di disable, karena apabila input di disable datanya tidak akan terkirim melalui form.

$row = $data[0];

Karena hasil dari getResult berupa array bercabang, maka kita hanya ambil data array pertama saja karena itulah data yang menjadi hasil query.

 

value="X">X ( Sepuluh )

Pada option, data yang sudah dipilih akan di munculkan dengan cara nambahkan statement “selected” pada tag option agar data terpilih otomatis pada form

 

download.php

Penjelasan :

Ini adalah file dimana proses download berlangsung. File yang ingin di download dimasukkan kedalam baris ini header('Content-Disposition: attachment; filename='.basename($file)); dan dimasukkan juga ukuran dari file tersebut header('Content-Length: ' . filesize($file)); dan file pun akan terdownload secara otomatis.

export.php

select("m_data","*");
$data = $db->getResult();
ob_start();
?>

Rekap Siswa SMK Negeri 10 Jakarta

No.NamaKelasJurusanTempat LahirTanggal LahirFoto
Data not found
Copyrights © tutorial.ariefsetya.com

load_html($html); $dompdf->set_paper("A4", "Potrait"); $dompdf->render(); $dompdf->stream("dompdf_out.pdf", array("Attachment" => false)); ?>

Penjelasan :

require_once("../__class/dompdf/dompdf_config.inc.php");

Memanggil file dompdf_config.inc.php agar functionnya dapat digunakan

ob_start();
ob_get_clean();

ob_start atau ob_get_clean adalah salah satu function di php yang artinya Output Buffering yaitu menyimpan terlebih dahulu script html atau php yang nanti akan di tampilkan pada pdf setelah diberi function ob_get_clean();

hapus.php

delete('m_data',$data);
	header("location:../index.php");
}
?>

Penjelasan :

Pada file ini akan dilakukan eksekusi penghapusan data sebelum di lanjutkan ke halaman index

save.php

insert('m_data',$data);
	header("location:../index.php");
}
?>

Penjelasan :

Pada file ini akan dilakukan eksekusi penyimpanan data yang dikirim dari form kemudian diarahkan ke halaman index

move_uploaded_file($_FILES['foto']['tmp_name'], "../foto/".$_FILES['foto']['name']);

ini adalah proses pemindahan file dari temporary file ke server dengan format move_uploaded_file(‘file source’,’tujuan file’);

 

update.php

update('m_data',$data,"id='".$_POST['id']."'");
	header("location:../index.php");
}
?>

Penjelasan :

Pada file ini dilakukan proses update data yang dikirim dari form update kemudian diarahkan ke index

css.css

input, textarea{
	padding:3px;
	width:100%;
}
select{
	width:103%;
	padding:3px;
}
button{
	padding:7px;
	color: white;
	background-color: #0099ee;
	border:1px solid #0077ee;
	font-size: 13pt;
	margin-right: 5px;
}
a{
	text-decoration: none;
}
body{
	margin: 0;
	clear: both;
}
*{
	outline: none;
	font-family: 'Candara';
}
table{
	width:100%;
}
.container-menu{
	min-width: 1000px;
	height:60px;
	background-color:#0099ee;
	overflow: hidden;
}
.box-menu{
	width: 1000px;
	height: 60px;
	margin: 0 auto;
}
.menu{
	border-top:7px solid #0099ee;
	width: auto;
	height: 60px;
	float: left;
	text-align: center;
	cursor: pointer;
	padding-top:10px; 
	color:white;
	font-size: 15pt;
	padding-left: 10px;
	padding-right: 10px;
	transition:background-color .2s, border-top .2s, color .2s, transform .2s;
}
.menu:hover{
	border-top:7px solid #66FF66;
	transition:background-color .2s, border-top .2s, color .2s, transform .2s;
}
.menu:active{
	border-top:7px solid #0099ee;
	background-color: #66FF66;
	color:black;
	transition:background-color .2s, border-top .2s, color .2s, transform .2s;
}
.container-body{
	width: 100%;
}
.container{
	width: 1000px;
	margin: 10px auto;
}
.footer{
	height: 50px;
	background-color: #0099ee;
}
.teks-footer{
	padding-top: 15px;
	text-align: center;
	color: white;
}

Penjelasan :

Ini adalah file css yang digunakan untuk memanggil style-style yang sudah di deklarasikan pada class di tag html

index.php



PDO Project

Error 404 : Page Not Found :(

Penjelasan :

 

Menandakan bahwa file ini dan yang di include didalamnya support dengan HTML5

 

PDO Project

Memberi title aplikasi web

 

Memanggil file css

if(!isset($_GET['m']))

mencari kriteria mengenai parameter m yang digunakan

include "hal/data.php";

memanggil file untuk ditampilkan

 

Kita telah selesai membuat sebuah web  dengan menggunakan PHP Data Object yang dilengkapi dengan fitur Search, Upload, Download dan Report PDF. Dibawah ini akan saya sertakan tampilan hasil dari kodingan yang sudah kita buat diatas.

 




Thursday, 17 Sep 2015 11:03 AM Arief Setya
Sign In
Sign In to Your Account :)
Sign In or Sign Up
 
Follow Us on Twitter
Find Us on Facebook