[Yii Framework + Mongodb] Insert Value

Berikut adalah contoh melakukan insert data ke dalam mongodb dengan menggunkan Yii Framework. Sebelumnya perlu anda ketahui pada Yii Framework sendiri telah ada extension yang bagus digunakan untuk mengoneksikan Yii dengan Mongodb yaitu Yiimongodbsuite yang dapat anda lihat di http://www.yiiframework.com/extension/yiimongodbsuite/. Tetapi untuk postingan kali ini saya tidak menggunakan extension tersebut. Dengan begitu code ini dapat diimplementasikan baik di Yii, framework PHP lain, maupun menggunakan pure PHP.

Sebelum memulai, pastikan bahwa server anda telah memiliki driver untuk mongodb, jika belum silahkan install. Pertama-tama buatlah database, lalu collection seperti postingan ini. Lalu dengan mengacu collection tersebut, buatlah sebuah model pada Yii Framework dengan nama “SiswaForm”, masukkan code berikut :

<?php

class SiswaForm extends CFormModel
{
  public $name;
  public $jk;
  public $kota;
  public $alamat;
  public $createddate;

  public function rules()
  {
     return array(
        array('name', 'required'),
     );
  }

  public function attributeLabels()
  {
     return array(
        'name'=>'Name',
        'jk'=>'Sex',
        'kota'=>'City',
        'alamat'=>'Address',
        'createddate'=>'Crated Date',
     );
   }

  //digunakan untuk menyimpan data pada mongodb
  public function savemongo()
  {
     try {
       //memanggil class mongodb, secara default port mongodb adalah 27071. Jika portnya berbeda, maka 
       //anda perlu melakukan konfigurasi lagi pada code. Find it on google.
       $connection = new Mongo();
       //menentukan dataabase mana yang akan kita gunakan.
       $database = $connection->selectDB('belajar');
       //mendefinisikan suatu collection ke dalam variabel
       $collection = $database->selectCollection('siswa');
       // memasukkan nilai-nilai ke dalam collection
       // jika anda menggunakan code selain Yii. Just change the value with your value.
       $varsiswa = array(
          'name' => $this->name,
          'jk' => $this->jk,
          'kota'=>$this->kota,
          'alamat'=>$this->alamat,
          'createddate' => new MongoDate() // this is for insert an automatic date from mongodb
       );
       //save data
        $collection->insert($varsiswa,array('safe'=>true));
        return true;
     }
     catch(MongoConnectionException $e) { 
        //let you know when it failed connect to your database
        die("Failed to connect to database ".$e->getMessage());
     }
     catch(MongoException $e) {
        // let you know when we failed to insert data.
        die('Failed to insert data '.$e->getMessage());
     }
   }
}

Code di atas digunakan untuk menyediakan inputan data yang akan dimasukkan ke dalam mongodb collection. Juga terdapat fungsi “savemongo()” dimana fungsi tersebutlah yang akan menyimpan data ke dalam mongodb collection. Penjelasan dari code tersebut dapat anda lihat pada komentar nya.

Setelah itu buatlah sebuah action seperti berikut :

    public function actionSiswa()
    {
        $model=new SiswaForm;
        if(isset($_POST['SiswaForm']))
        {
            $model->name=$_POST['SiswaForm']['name'];
            $model->jk=$_POST['SiswaForm']['jk'];
            $model->kota=$_POST['SiswaForm']['kota'];
            $model->alamat=$_POST['SiswaForm']['alamat'];
            if($model->validate())
            {
                if($model->savemongo())
                {
                    $this->redirect(array('index'));
                }
            }
        }
        $this->render('siswa',array('model'=>$model));
    }

Lalu terakhir, buatlah view “siswa” dengan membuat viewnya dan masukkan code berikut :

<h1>Test Mongo - Siswa</h1>
<div>
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'contact-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
    ),
)); ?>

    <p>Fields with <span>*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

    <div>
        <?php echo $form->labelEx($model,'name'); ?>
        <?php echo $form->textField($model,'name'); ?>
        <?php echo $form->error($model,'name'); ?>
    </div>

    <div>
        <?php echo $form->labelEx($model,'jk'); ?>
        <?php echo $form->textField($model,'jk'); ?>
        <?php echo $form->error($model,'jk'); ?>
    </div>

    <div>
        <?php echo $form->labelEx($model,'kota'); ?>
        <?php echo $form->textField($model,'kota',array('size'=>60,'maxlength'=>128)); ?>
        <?php echo $form->error($model,'kota'); ?>
    </div>

    <div>
        <?php echo $form->labelEx($model,'alamat'); ?>
        <?php echo $form->textArea($model,'alamat',array('rows'=>6, 'cols'=>50)); ?>
        <?php echo $form->error($model,'alamat'); ?>
    </div>
    <div>
        <?php echo CHtml::submitButton('Submit'); ?>
    </div>
<?php $this->endWidget(); ?>
</div>

Selesai,.. Jalankan aplikasi anda. Untuk melihat apakah data yang diinsert berhasil atau tidak, lihatlah melalui command prompot anda (bila tidak tahu lihat tutorial saya sebelumnya)..

Happy coding..

[Mongodb] Create, Insert And Select Document In Collection

Pertama untuk mendefinisikan sebuah database masukkan code berikut kedalam command prompt anda :

use namadatabase

Lalu untuk memasukkan data baru ke dalam sebuah collection, buatlah code berikut ke dalam command prompt anda :

> db.siswa.insert({name:"Sabit Huraira",jk:"Laki-laki",kota:"1"})
> db.siswa.insert({name:"Fithri Selva",jk:"Perempuan",kota:"2"})
> db.siswa.insert({name:"Fariko",jk:"Perempuan",kota:"3",alamat:"Palembang"})

Dapat anda lihat pada baris 1 dan 2 kita menginput data dengan document yang sama. Sedangkan pada baris ke 3 kita menginput dengan document baru yaitu “alamat”. Itulah salah satu kelebihan mongodb..

Jika anda ingin melhat data yang telah diinput, masukkan command berikut :

> db.siswa.find()

Lalu akan muncul hasil seperti berikut :

 
{ "_id" : ObjectId("51cc2f21bd6570d7b8966faa"), "name" : "Sabit Huraira", "jk" :
 "Laki-laki", "kota" : "1" }
{ "_id" : ObjectId("51cc2f47bd6570d7b8966fab"), "name" : "Fithri Selva", "jk" :
"Perempuan", "kota" : "2" }
{ "_id" : ObjectId("51cc2fadbd6570d7b8966fac"), "name" : "Fariko", "jk" : "Perem
puan", "kota" : "3", "alamat" : "Palembang" }
>

Selesai.. Happy coding..

[MongoDB] Integrasi MongoDB pada PHP

Akhir-akhir ini di dunia IT telah populer  konsep NoSQL untuk urusan simpan menyimpan data pada database. Apalagi banyak pemain besar di dunia IT seperti Facebook, Twitter, foursquare, dll telah menggunakan NoSQL untuk penyimpanan data mereka sehingga membuat banyak orang penasaran akan noSQL.. yah, termasuk saya.. Walau sedikit, udah mulai oprek-oprek tentang mongodb.. Yah, hingga sekarang sejujurnya masih cukup bingung dan belum menemukan kenyamanan di dalamnya (udah kebiasaan pake SQL mungkin). Tapi ga ada salahnya saya share apa yang sudah pernah saya pelajari.. yaitu mengintegrasikan MongoDb pada PHP..

Pertama-tama yang harus kita lakukan adalah menginstal mongodb terlebih dahulu di computer kita.. Pertama silahkan download mongoDB di http://www.mongodb.org/. Setelah anda selesai mendownload nya, ekstrak file nya dan silahkan lakukan proses instalasi dengan mengikuti step-step pada dokumentasi mongodb di http://docs.mongodb.org/manual/installation/. Karena saya menggunakannya pada windows, saya mengikuti tutorialnya di http://www.mongodb.org/display/DOCS/Quickstart+Windows. Dari dokumentasinya, anda dapat menjalankan mongodb dengan memilih sebuah file yang terdapat pada hasil downloadan tadi yaitu file bernama “mongod.exe”. Setelah sudah jalan, anda dapat otak-atik mongodb anda dengan script command dengan memilih file “mongo.exe” dahulu sebelumnya.. Okeh, saya anggap sudah berhasil..

Setelah itu saya ingin menjalankan agar mongodb dapat diakses dari aplikasi PHP saya.. Pertama-tama yang harus kita lakukan adalah menginstal driver mongoDB untuk PHP..  Anda dapat ikuti tutorial disini : http://www.mongodb.org/display/DOCS/PHP+Language+Center. Saya sendiri akan menerangkan cara instalasi pada windows.. Sebenarnya sama dengan cara menginstal extension-extension PHP lainnya.. Pertama download terlebih dahulu driver nya pada link yang ada di atas. Setelah itu pindahkan file “php_mongo.dll” pada direktori server anda. Saya menggunakan Wamp server biasa direktorinya di “C:\wamp\bin\php\php5.3.5\ext”, jika anda menggunakan server lain silahkan sesuaikan path nya di server masing-masing.. Kemudian pada file php.ini tambahkan code berikut : “extension=php_mongo.dll”. Itu digunakan untuk mengaktifkan driver mongoDb pada server kita agar dapat dijalankan PHP. Selesai…

Restart server anda.. jika telah terinstal, maka saat membuat localhost, akan muncul tampilan wamp server seperti ini :

Anda dapat lihat pada list-list extensions terdapat sebuah extension dengan tulisan “mongo”. Nah, jika sudah berhasil itu artinya anda sudah dapat menjalankan mongodb pada PHP..

Agar lebih user friendly digunkan, kita dapat menggunakan AdminUi, yah mungkin sejenis phpMyAdmin atau pgAdmin nya postgresql.. Ada banyak admin UI di mongodb, berikut listnya http://www.mongodb.org/display/DOCS/Admin+UIs. Saya sendiri sudah coba beberapa, kalo yang berbasis web cukup nyaman menggunkana rockmongo.. http://rockmongo.com/.

Yah, bagaimana tertarik? saya sendiri baru mencicipi dasar-dasarnya saja.. Masih belum mendalami tahap “mengapa saya harus menggunakan mongodb”..  🙂 semoga ke depannya masih dapat menggali..

 

Bagi anda yang tertarik.. selamat mencoba..

Semoga membantu.. 🙂

%d bloggers like this: