Aplikasi CRUD ( Create, Read, Uppdate, Delete ) Sederhana Dengan PHP OOP PDO bagian 3

Selamat Siang,

Akhirnya kelar juga, setelah 2 hari muter-muter gg karuan karena coding yang gg genah arah dan tujuannya. Dan sekarang saatnya saya publikasikan apa yang telah saya pelajari kemarin. Artikel ini berhubungan dengan Post sebelumnya yang membahas tentang CRUD. Jadi jika anda penasaran coba deh liat dulu artikel saya sebelumnya tentang crud bagian 2.

Perbedaan yang mendasar adalah untuk kali ini saya buat, class CRUD terlihat sedikit lebih dinamis untuk mempermudah pemakaian kode dalam programin nantinya.

Nb : Penulis masih newbie, jadi jika ada kesalahan mohon untuk mengkoreksi bagaimana benerna.

Okey, langsung saja pada topiknya, susunan directori yang kita butuhkan adalah :
  • index.php
  • database.php
  • insert.php
  • select.php
  • update.php
  • update-proses.php
  • delete.php
1. persiapan database
Seperti artikel sebelumnya, kita buat  Database dulu
CREATE TABLE IF NOT EXISTS 'alamat' (
    'id' int(5) NOT NULL AUTO_INCREMENT,
    'nama' varchar(125) NOT NULL,
    'alamat' varchar(1024) NOT NULL,
    PRIMARY_KEY ('id'),
    )
    ENGINE=MyISAM DEFAUTL CHARSET=latin1 AUTO_INCREMENT ;

2. database.php
Disinilah kita akan membuat suatu class yang berisi code untuk memanipulasi data tersebut. class ini berisi function yang digunakan untuk CRUD.
<?php
class Database extends PDO {
    protected $dsn = 'mysql:dbhost=localhost;dbname=project1'; // server dan dnname
    protected $user = 'root'; // user db
    protected $password = ''; // password db
    public $tabel_name;
    public $column_name;
   
    public function __construct(){
        // koneksi db
        $this->dbh = new PDO($this->dsn,$this->user,$this->password);
    }
   
    public function Tabel($tabel_name){
        // selecting table
        $this->tabel_name = $tabel_name;
    }
       
    public function Select($column_name='*'){
        $stmt = $this->dbh->prepare('SELECT '.$column_name.' FROM '.$this->tabel_name);
        $stmt->execute();
        return $stmt->fetchAll();
    }

    public function Where($column_name,$key,$value){
        // kondisi nama tabel
        if($column_name==null){
            $column_name='*';
        }
        // test $where = ' WHERE id=1';
        $stmt = $this->dbh->prepare('SELECT '.$column_name.' FROM '.$this->tabel_name. ' WHERE '.$key.'='.$value);
        $stmt->execute();
        return $stmt->fetchAll();
    }
   
    public function Insert($data){
        // data dalam bentuk array()
        $key = implode(',', array_keys($data)); // mengambil nilai key dalam array
        $value = implode('","',$data); // mengambil nilai value dalam array
        $stmt = $this->dbh->prepare ('INSERT INTO '.$this->tabel_name.'('.$key.') VALUES("'.$value.'")');
        $stmt->execute();
    }
   
    public function Update($data,$key_name,$value_id){
        // mengambil key dan nilai dalam tiap indek dan memasukkannya ke dalam array
        foreach($data as $key => $value){
            $arg[] = $key .'="'.$value.'"';
        }
        $set = implode(',',$arg); // mengambil key dan nilai dalam array $arg
        $stmt = $this->dbh->prepare('UPDATE '.$this->tabel_name.' SET '.$set.' WHERE '.$key_name.'='.$value_id);
        $stmt->execute();
    }
   
    public function Delete($key,$value){
        $stmt = $this->dbh->prepare('DELETE FROM '.$this->tabel_name.' WHERE '.$key.'='.$value);
        $stmt->execute();
    }
}

// instansi class Database
$test = new Database;
$test->Tabel('alamat'); // memilih tabel dalam db

3. insert.php
Di file ini terdapat form yang digunakan untuk memasukan data. Dan data tersebut nantinya kan di proses dimasukan kedalam database.
<?php
require('database.php');
// variabel data harus dalam bentuk array
$nama = isset($_GET['nama']) ? $_GET['nama'] : '';
$alamat = isset($_GET['alamat']) ? $_GET['alamat'] : '';
$kirim = isset($_GET['kirim']) ? $_GET['kirim'] : '';
$data = array(
'nama' => $nama,
'alamat' => $alamat
);

// kondisi ketika data berhasil di insert
if($kirim=='Kirim'){
    $test->Insert($data);
    echo 'Dada berhasil di masukan';
}
?>

<p><b>Input Alamat Penduduk</b></p>
<form action="" method="get">
  <table border="0">
    <tr>
      <td>Nama</td>
      <td>:</td>
      <td><input type="text" value="" name="nama" /></td>
    </tr>
    <tr>
      <td>Alamat</td>
      <td>:</td>
      <td><input type="text" value="" name="alamat" /></td>
    </tr>
    <tr>
      <td><input type="submit" value="Kirim" name="kirim" /></td>
    </tr>
  </table>
</form>
<p>=> <a href="select.php">Lihat Data +</a></p>

4. select.php
File inilah yang nantinya akan digunakan untuk menampilkan data yang diambil dari database sesuai keinginan kita.
<?php
require('database.php');
?>
<b>Daftar Alamat Penduduk</b>
<table border="1" style="border-collapse:collapse;text-align:left;" width="500px;">
<tr>
<th>Nama</th>
<th>Alamat</th>
<th colspan="2">Action</th>
</tr>
<?php foreach($test->Select() as $value){ ?>
<tr>
<td><?php echo $value['nama']; ?></td>
<td><?php echo $value['alamat']; ?></td>
<td><a href="update.php?id=<?php echo $value['id']; ?>">Edit</a></td>
<td><a href="delete.php?id=<?php echo $value['id']; ?>">Delete</a></td>
</tr>
<?php } ?>
</table>

5. update.php
Perlu di ingat setelah data dimasukan ke database, dan di tampilkan. Ada kalanya kita ingin mengubah data tersebut. Maka file inilah yang akan bertugas. Data akan di ambil berdasakan klausa WHERE dan memasukannya ke dalam form edit.

<?php
require('database.php');
$value = isset($_GET['id']) ? $_GET['id'] : '';
$update = $test->Where(null,'id',$value);

foreach($update as $value){
    $id = $value['id'];
    $nama = $value['nama'];
    $alamat = $value['alamat'];
}   
?>

<b>Edit Alamat Penduduk</b>
<form action="update-proses.php" method="get">
  <input type="hidden" value="<?php echo $id; ?>" name="id" />
  <table border="0">
    <tr>
      <td>Nama</td>
      <td>:</td>
      <td><input type="text" value="<?php echo $nama; ?>" name="nama" /></td>
    </tr>
    <tr>
      <td>Alamat</td>
      <td>:</td>
      <td><input type="text" value="<?php echo $alamat; ?>" name="alamat" /></td>
    </tr>
    <tr>
      <td><input type="submit" value="Update" name="update" /></td>
    </tr>
  </table>
</form>
<p>=> <a href="select.php">Lihat Data +</a></p>

6. update-proses.php
Setelah data di edit dan di submit, maka file ini akan bekerja. Data yang ada di database akan di edit oleh kode ini.
<?php
require('database.php');
$id = isset($_GET['id']) ? $_GET['id'] : '';
$nama = isset($_GET['nama']) ? $_GET['nama'] : '';
$alamat = isset($_GET['alamat']) ? $_GET['alamat'] : '';
// variabel data dalam bentuk array
$data = array(
'nama' => $nama,
'alamat' => $alamat
);
$update = isset($_GET['update']) ? $_GET['update'] : '';
if($update=='Update'){
    $test->Update($data,'id',$id);
    header('location:select.php');// direct halaman
}
?>
<p>=> <a href="select.php">Lihat Data +</a></p>


 7. delete.php
Setelah data tersebut sudah tidak digunakan, adakalanya kita ingin menhapusnya.
<?php
require('database.php');
$value = isset($_GET['id']) ? $_GET['id'] : '';
$test->Delete('id',$value);
?>
<script type="text/javascript">
window.setTimeout('window.location="select.php"; ',3000); // redirect halaman
</script>
Data telah di hapus
<p>=> <a href="select.php">Lihat Data +</a></p>

8. index.php
Kode di atas  sebenarnya sudah selasai, dan dapat di - run.
<?php
require('select.php');
?>
<p>=> <a href="insert.php">Add Data +</a></p>

Akhirnya kelar juga nih posting nulisnya setelah susah payah dalam menghadapi pertempuran yang sengit. Hihii............... Mohon dikoreksi yuahh, andai aja ada yang salah.

Salam Newbie:)

2 komentar :

tombol share icon
tombol kembali ke atas
Wait . . . !!!
tampilan ads aktif