Friday 31 May 2013

YII FRAMEWORK URL REWRITER GOOD SEO!

Standard
Banyak orang awam jarang memikirkan fungsi dari url rewriter sebagai SEO website mereka. Ketika orang sudah membuat website di YII Framework maka yang mereka pikirkan adalah dimana dan bagaimana cara mempublish website tersebut agar di kenal orang bahkan dapat menghasilkan rupiah. Pemikiran ini wajar apabila di pikirkan oleh setiap orang sebab hal utama yang di cari adalah memang itu tanpa memikirkan kualitas SEO website yang mereka buat. Disini saya akan memaparkan bagaiman membuat URL rewriter yang GOOD SEO untuk website YII Framework. Kelebihan URL SEO ini di bandingkan dengan tutorial yang beredar di dunia maya adalah dapat membaca url dari primary key integer maupun string, Berikut langkah kerjanya:

Friday 24 May 2013

YII Mencegah Input Redudance Data (Data Ganda/ Double)

Standard

Pernahkan anda menjumpai error duplicate key value violates unique pada yii seperti gambar diatas? Pesan error diatas menjelaskan bahwa dalam database sudah terdapat data dengan yang anda inputkan sekarang. Dengan syarat pesan ini muncul ketika field database merupakan primary key atau unique sehingga ketika data ke-2 yang di inputkan sama maka akan tampil pesan error tersebut. Saya contohkan apabila dalam database terdapat data nomor 123A pada field no_pendaftaran kemudian anda menginputkannya lagi dengan nomor yang sama yaitu 123A maka akan tampil pesan error tersebut. Berikut ini akan saya paparkan 3 buah cara untuk mencegah terjadinya data ganda/ double :
1. Penggunaan try-catch
Contoh codenya seperti berikut:
Dalam lingkup try bernilai benar sedangkan dalam catch adalah value error yang akan di tampilkan.
Script ini hanya menampung error dalam sebuah tampilan gui message flash saja. Cara ini kurang cantik bila di gunakan untuk validasi sebuah kriteria. Cara yang ke-2 ini adalah rekomendasi dari Muhammad Rifki Mockie agar validasi lebih baik dan lebih cantik sesuai prosedur dari doc yii framework. Berikut ini tips ke-2:
2. Penggunaan validasi dari Rule di Model
Step-1
Buatlah file proctected/components/CompositeUniqueKeyValidator.php
Kemudian isikan script seperti berikut ini:
<?php
/**
 * CompositeUniqueKeyValidator class file.
 */
class CompositeUniqueKeyValidator extends CValidator {
    /**
     * @var string comma separated columns that are unique key
     */
    public $keyColumns;
 
    public $errorMessage = '"{columns_labels}" are not unique';
 
    /**
     * @var boolean whether the error message should be added to all of the columns
     */
    public $addErrorToAllColumns = false;
 
    /**
     * @param CModel $object the object being validated
     * @param string $attribute if there is an validation error then error message
     * will be added to this property
     */
    protected function validateAttribute($object, $attribute) {
        $class = get_class($object);
        Yii::import($class);
        $keyColumns = explode(',', $this->keyColumns);
        if (count($keyColumns) == 1) {
            throw new CException('CUniqueValidator should be used instead');
        }
        $columnsLabels = $object->attributeLabels();
 
        $criteria = new CDbCriteria();
        $keyColumnsLabels = array();
        foreach ($keyColumns as &$column) {
            $column = trim($column);
            $criteria->compare($column, $object->$column);
            $keyColumnsLabels[] = $columnsLabels[$column];
        }
        unset($column);
        $criteria->limit = 1;
 
        if ($class::model()->count($criteria)) {
            $message = Yii::t('yii', $this->errorMessage, array(
                '{columns_labels}' => join(', ', $keyColumnsLabels)
            ));
            if ($this->addErrorToAllColumns) {
                foreach ($keyColumns as $column) {
                    $this->addError($object, $column, $message);
                }
            }
            else {
                $this->addError($object, $attribute, $message);
            }
        }
    }
}
?>
Step-2
Tambahkan validasi pada method rule di model anda:
<?php
public function rules(){
   return array(
   array('no_karyawan', 'CompositeUniqueKeyValidator', 'keyColumns' => 'no_karyawan, id_tempat'));
} ?>
Maksud dari rule ini adalah memvalidasi field no_karyawan dan id_tempat yang keduanya merupakan primary key agar menjadi field unique key.

3. Pengecekan database
Step 1 - Membuat coditional field apa yang ingin dicek, contohnya seperti kode program berikut:
$isExist = Mhs::model()->exists(
 array('condition'=>'nim = :nim',
 'params'=>array(
  ':nim'=>$_POST['NilaiKknPpl']['nim']
 ),
));
Kemudian buat kondisi untuk membaca kode program diatas. Yaitu seperti kode berikut ini:
if($isExist){
 //True atau ada dalam database
}else{
 //False atau tidak ada dalam database
}
Untuk saya pribadi lebih menganjurkan anda untuk memakai cara ke-3 karena langsung melakukan pengecekan pada database, apakah data sudah ada atau tidak. Cara pertama yaitu try... catch tidak cocok untuk pengecekan redudance data. Berbeda dengan cara kedua yang masih error dalam proses updatenya karena validasinya masih membaca primary key sebagai data yang sudah ada dalam database sehingga proses updatenya gagal walaupun proses createnya sudah oke dalam masalah validasi.

Friday 8 February 2013

APLIKASI JAVA MENGGUNAKAN TIPE DATA DAN OPERATOR PERBANDINGAN

Standard
aplikasi-java-sederhana-aimagu Pernahkan anda melihat aplikasi java yang menggunakan kotak dialog sebagai informasi dari suatu inputan yang di berikan oleh user. Pada tutorial kali ini akan di bahas cara pembuatan aplikasi java menggunakan komponen jOptionPane (Kotak dialog) dan menggunakan tipe data operator perbandingan.
Sedikit gambaran untuk aplikasi java sederhana ini yaitu user melakukan inputan pada form yang di sediakan yaitu memasukkan 3 buah angka. Program akan mendeteksi apakah ketiga angka tersebut merupakan angka yang sama atau berbeda dan akan menampilkan karakter angka 1, angka 2, angka 3 dari inputan yang sudah kita proses. Sistem ini dapat anda realisasikan dalam dunia nyata untuk registrasi suatu form, dll.
Berikut ini langkah pembuatan program aplikasi java menggunakan tipe data dan operator perbandingan yang di namai program Prak4_Latihan2.
  • Buat project Prak4 – klik kanan project – pilih New – Klik jFrame Form
  • Tambahkan jLabel, jTextField dan jComboBox ke dalam jFrame. Kemudian atur posisinya seperti gambar berikut :
aplikasi-java-netbeans1
  • Ubah properties Text komponen tersebut :
jLabel 1 > MASUKKAN 3 ANGKA YANG SAMA
jTextField > Kosong
jButton1 > PROSES
aplikasi-java-netbeans2
  • Sebelum memasukkan script, terlebih dahulu pilih Inspector > Klik kanan Other Components > Pilih Add From Palette > Pilih Swing Windows > Klik Option Pane, seperti gambar berikut ini:
aplikasi-java-netbeans3
  • Akan tampil hasil jOptionPane1 pada Other Components seperti gambar berikut:
aplikasi-java-netbeans4
  • Klik kanan pada jButton1 > Events > Mouse > Mouse Clicked
aplikasi-java-netbeans5
  • Masukkan script berikut ini :
aplikasi-java-netbeans6
  • Compile (F11) dan Jalankan program (F6).
aplikasi-java-netbeans7

Pembahasan Hasil Program

aplikasi-java-netbeans8 aplikasi-java-netbeans9
Analisa : Apabila kita meberi inputan pada jTextField1 dengan angka 111 kemudian mengeklik button PROSES maka akan muncul kotak dialog Message Nilai Angka=111 | Nilai Satuan=1 | Nilai Puluhan=1 | Nilai Ratusan=1 seperti script yang telah kita tanamkan tadi. Apabila kita klik ok maka akan muncul kotak dialog kedua yaitu ‘Anda telah memasukkan 3 angka yang sama’ dengan script perulangan if...else yang berada di dalamnya.
aplikasi-java-netbeans9 aplikasi-java-netbeans10
Apabila kita memberi inputan dengan angka berbeda yaitu 123 maka akan tampil seperti diatas dan muncul kotak dialog berbeda yaitu ‘Angka tidak memasukkan 3 angka yang sama.
Cukup mudah bukan? Untuk pengembangan lebih lanjut anda bisa memberikan batasan untuk inputan hanya bisa di inputkan angka saja (huruf/ karakter tidak boleh) dan batasan inputan hanya boleh 3 angka saja (maks 3 karakter).
*** Selamat Mencoba ***

Copyright © AIMAGU. Jasa Pembuatan Website. All Rights Reserved
Design by Automattic | Blogger Theme by NewBloggerThemes | Official: www.aimagu.com