Facebook
RSS

Form Validation – CodeIgniter

-
Pramadya Puspa


Cuilan juga ni Sob…(^_^)
CodeIgniter menyediakan form validation yang luas dan kelas persiapan data yang membantu meminimalkan code yang kita tulis. (Form Validation merupakan suatu kelas/library)

$this->load->library('form_validation');

Skenario ideal bagi sebuah validasi ketika user login sbb:
1. Form muncul.
2. User memasukkan data dan mengirimnya.
3. Jika yang dikirim data tidak valis, form akan memunculkan data tadi kembali dan memberikan pesan error dan mendescribsikan error tersebut .
4. Proses ini terus berulang sampai user memasukkan data yang benar.
Sehingga, pada script harus mencakup:
1. Memeriksa data.
2. Mem-verifikasi data apakah tipe data nya sudah benar dan memberikan kriteria data yang benar. Contohnya tentang panjangnya karakter yang dimasukkan.
3. Membersihkan data dari pengamanan.
4. Mengatur format tipe data terlebih dahulu jika perlu.
5. Menyimpan data pada database.
Dalam mengimplementasikan form validation saya membutuhkan 3 hal:
1. Sebuah view yang berisi form.
2. Sebuah view yang berisi ‘pesan berhasil’ untuk ditampilkan jika user berhasil login.
3. Sebuah function pada controller untuk menerima dan memproses data yang masuk.


Contoh Project :
Buat form.php pada Controller:


<?php
class form extends CI_Controller{
   
    function  index(){
        $this->load->helper(array('form', 'url'));
       
        $this->load->library('form_validation');
       
        $this->form_validation->set_rules('username', 'name', 'callback_username_check');
        $this->form_validation->set_rules('password', 'Password', 'required');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
       $this->form_validation->set_rules('email', 'Email', 'required');
       
        if ($this->form_validation->run()==FALSE){
            $this->load->view('myform');
        }
       
        else {
            $this->load->view('formsuccess');
        }
    }
   
    public function username_check($str)
       {
              if ($str == 'test')
              {
                     $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
                     return FALSE;
              }
              else
              {
                     return TRUE;
              }
       }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
?>


Buat Myform.php pada View

<html>
    <head>
        <title>My Form</title>
       
    </head>
   
    <body>
        <?php echo form_open('form'); ?>
       
        <? echo validation_errors();?>      
       
     
        <h5>Username</h5>
        <input type="text" name="username" value="" size="50"/>
       
        <h5>Password</h5>
        <input type="text" name="password" value="" size="50"/>
       
         <h5>Password Confirm</h5>
        <input type="text" name="passconf" value="" size="50"/>
       
         <h5>Email Address</h5>
        <input type="text" name="email" value="" size="50"/>
       
        <div><input type="submit" value="Submit"/></div>
    </body>
</html>

Dan formsuccess.php pada view

<html>
    <head>
        <title>My Form</title>
    </head>   
    <body>     
 <h3>Your form was successfully submitted!</h3>
        <p><? echo anchor('form','try it again');?></p>
    </body>
</html>

Penjelasan
Untuk lebih jelas lihat pada project:
Pada view:

<?php echo form_open('form'); ?>

Tentang Form Open dan kawan-kawannya - lihat, Secuil Form-Helper CodeIgniter

Kode pada controller/form.php

$this->load->helper(array('form', 'url'));

Black Note:
Gampangnya jika kita tak menggunakan helper ini, setelah kita klik tombol submit untuk validasi, form tidak mau load ulang (halaman baru), jadi ya yang tadi kita pakai yang terus ditampilkan…
Lagi, jangan lupa catet kode ini setiap kita akan menggunakan form helper.
Selanjutnya,
<? echo validation_errors();?>


Setting Validation Rules
CodeIgniter memungkinkan kita untuk men-set banyak validasi untuk satu field, dan diproses dalam satu waktu.
Nah, Set Validasi ini bernama, set_rules() function.
Function ini memiliki 3 variabel:
$this->form_validation->set_rules('username', 'name', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
1.       Field Name : nama field yang akan diberikan pada form field.
2.       Nama yang akan ditampilkan pada error message.
3.       Validation Rules. (yang sukses maupun tidak)
Set pada Controller/form.php/
$this->form_validation->set_rules('username', 'name', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');

Tampilan:
































CallBacks!!! : Your own Validation Functions
Sistem Validasi mendukung callbacks untuk fungsi validasi ala kita-kita.. :-D Yah, jadi bisa di-custom-custom gitu lah.
Pada set_rules controller/form.php jika diubah :
 


$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
Sedangkan untuk function-nya:
public function username_check($str)
       {
              if ($str == 'test')
              {
                     $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
                     return FALSE;
              }
              else
              {
                     return TRUE;
              }
                }


Sehingga jika kita ketikkan test pada username, akan muncul message: 'The %s field can not be the word "test"'

Untuk function:

if ($this->form_validation->run()==FALSE){
            $this->load->view('myform');
        }
       
        else {
            $this->load->view('formsuccess');
        }
    }


Kita arahkan, jika validasi tadi bernilai FALSE, myform.php akan di-load kembali.
Jika TRUE diarahkan ke formsuccess.php.

Referensi:
Artikel:

30 Responses so far.

  1. sangeb says:

    untuk form pemesanan toko tas milik saya tas branded murah

  2. erimakasih banyak tangkai informasinya, semoga bermanfaat jatah pembaca. sentosa sehat! cara mengobati penyakit usus buntu

  3. Chimikofu says:

    Untuk merubah pesan error nya gimana gan?
    Default nya berbahasa inggris.

    Thank's from Chimikofu

  4. thanks I was impressed with your blog full of useful information thank you once again very helpful to me
    Jam Dinding Karakter

  5. trimakasih.
    informasi yang sangat menarik bagi kita
    salam sukses

    bio hair obat penumbuh rambut
    selaput dara
    vimax canada original

  6. sarana penangkal santet dengan doa, mantra dan ilmu anti santet, agar terhindar dari dukun santet
    santet
    santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet |

  7. sarana penangkal santet dengan doa, mantra dan ilmu anti santet, agar terhindar dari dukun santet
    santet
    santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet |

  8. sarana penangkal santet dengan doa, mantra dan ilmu anti santet, agar terhindar dari dukun santet
    santet
    santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet | santet
    santet | santet | santet | santet | santet | santet | santet | santet | santet

Leave a Reply