Tuesday, 9 June 2015

[CRUD] Membuat Blog Sederhana dengan PHP + MongoDB


Pada tutorial sebelumnya saya pernah menulis mengenai cara menginstall mongodb dan ngulik sedikit , pada tutorial ini saya akan coba membahas bagaimana mongodb ini dalam membuat aplikasi. Sedikit mengulas mengenai mongodb, mongodb bersifat collection oriented, data-data disimpan dalam bentuk collection, saya asumsikan driver mongodb telah terinstall di webserver, jika belum dapat baca di sini.
Dalam tutorial kali ini kita akan membuat beberapa file yaitu :
  1. config.php => berisi skrip untuk melakukan koneksi ke database mongodb
  2. list_artikel.php => berisi daftar-daftar artikel yang ada di collection blog
  3. add_artikel.php => untuk melakukan penambahan artikel
  4. edit_artikel.php => untuk melakukan pengeditan artikel
  5. delete_artikel.php => untuk menghapus artikel

config.php

1
2
3
4
5
6
7
8
<?php   
    //mongo connection
    $connection=new Mongo();
    $db= $connection->selectDB('Blogdb');
     
    //collection Blogdb
    $blog = $connection->Blogdb->artikel;
?>
untuk membuat koneksi database dan membuat database di mongodb cukup simple, variabel $connection berisi object baru dari mongodb, variabel koneksi kemudian di gunakan untuk membuat database dengan method selectDb('nama_db'), selanjutnya kita akan membuat collection bernama 'Artikel', dimasukkan ke variabel $blog, selanjutnya...

list_artikel.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head></head>
<body>
<a href="add_artikel.php">Tambah Artikel</a><br/>
<?php
    include('config.php');
    $listartikel= $db->artikel->find();
    foreach($listartikel as $id=>$b){
        echo "<h2>".$b['judul']." </h2><a href='edit_artikel.php?id=".$id."'>[Edit]</a> | "."<a href='delete_artikel.php?id=".$id."'>[Delete]</a>";
        echo "<p>".$b['tanggal']."<br/>".$b['isi']."</p>";
         
         
    }
?>
</body>
</html>
Data dari database mongodb diakses menggunakan method 'find()', jika mengkases 1 data 'findOne()', jika kita membutuhkan kondisi data yang diakses kita bisa menambahkan kondisi dalam bentuk array contoh : 'find(array('judul'=>'titan'))' dan ini case sensitive, untuk proses query lebih lengkapnya bisa di liat di manual mongodb. 
kembali kepenjelasan kode diatas, data di foreach dan variabel $id untuk mengambil id atau primary key klo dalam istilah RDBMS dalam mongodb konsep primary key berupa id unik dari object yang telah di encrypt, dengan key object ['_id']. Selanjutnya data di ambil sesuai dengan key array. untuk memberikan kondis pada primary key ini harus bersifat object contoh : array( '_id' => new MongoId($id))

add_artikel.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<head></head>
<body>
    <h1>Tambah Artikel</h1>
    <form action="add_artikel.php" method="POST">
        <label>Judul</label> : <input type="text" name="judul"/><br/>
        <label>Artikel</label> : <textarea name="isi" cols='20' rows='10'></textarea><br/>
        <input type='submit' value='Post'/>
    </form>
</body>
</html>
<?php
    include('config.php');
    if(!empty($_POST)){
        $date=date('d/F/Y');
        $judul=$_POST['judul'];
        $isi=$_POST['isi'];
        $new_artikel= array('judul'=>$judul,'isi'=>$isi,'coments'=>'','tanggal'=>$date);
        $blog->insert($new_artikel);
        header('Location: http://10.2.2.234/ngulik/blogmongodb/list_artikel.php');
    }
     
?>
file ini berisi form untuk menambahkan artikel berserta pemorosesnya, proses pengambilan data seperti biasa menggunakan method 'POST', pada file config.php kita telah membuat variabel '$blog' berisi koneksi yang menuju database 'blogdb' dan collection 'artikel'. variabel ini kita gunakan untuk menujuk method mongodb agar lebih simple pada proses insert data, '$blog->insert()', Data yang dimasukkan ke collection artikel dalam bentuk array, pada file add_artikel.php menggunakan variabel '$new_artikel', setelah proses insert database berhasil halaman kemudian di redirect ke list_artikel.php

edit_artikel.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<html>
<head></head>
<body>
<?php
    include('config.php');
    $id= new MongoId($_GET['id']);
    $detil=$blog->findOne(array('_id'=>$id));
     
?>
    <h1>Edit Artikel</h1>
    <form action="edit_artikel.php" method="POST">
        <input type="hidden" name="id" value="<?php echo $_GET['id']?>"/>
        <label>Judul</label> : <input type="text" name="judul" value="<?php echo $detil['judul']?>"/><br/>
        <label>Artikel</label> : <textarea name="isi" cols='20' rows='10'><?php echo $detil['isi']?></textarea><br/>
        <input type='submit' value='Post'/>
    </form>
</body>
</html>
<?php
    if(!empty($_POST)){
        $id=$_POST['id'];
        $date=date('d/F/Y');
        $judul=$_POST['judul'];
        $isi=$_POST['isi'];
        $blog->update(array( '_id' => new MongoId($id)),array( '$set' => array( 'judul' => $judul,'isi'=>$isi,'tanggal'=>$date)));
        header('Location: http://10.2.2.234/ngulik/blogmongodb/list_artikel.php');
    }
     
?>
dalam proses editing data di mongodb, tetap kita membutuhkan primary key dari data tersebut, kita menyisipkan variabel $id dalam method GET pada link edit artikel, method untuk melakukan proses updating data menggunakan method 'update(array(kondisi),array('$set'=>array('judul'=>'isi'=>$artikel)))'. ada beberapa tipe update dalam mongodb '$set' untuk memperbaharui data atau menambahkan data baru pada data tersebut. '$push' untuk menyisipkan data pada array mongodb., pada proses editing ini kita menggunakan tipe $set karena bertujuan untuk mengupdat data

delete_artikel.php

1
2
3
4
5
6
<?php
    include('config.php');
    $criteria = array('_id'=> new MongoId($_GET['id']));
    $blog->remove($criteria);
?>
untuk melakukan proses penghapusan data sangat simpel menggunakan method 'remove($kondisi)'. 
saya coba benchmark sendiri simple crud menggunakan database mongodb ini, ternyata memang perfomance yang dihasilkan lebih cepat dibnding menggunakan rdbms sperti mysql atau yg lainnya. Akan tetapi mungkin penerapan mongodb ini harus tepat sasaran, karena mongodb mungkin sulit digunakan pada sistem yang membutuhkan integritas data tinggi.

No comments:

Post a Comment