Labels

Showing posts with label code igniter. Show all posts
Showing posts with label code igniter. Show all posts

Tuesday, October 18, 2011

Membuat Paging di CodeIgniter

Mengapa kita perlu menggunakan paging pada sebuah applikasi web? Anda mungkin akan bertanya-tanya tentang hal itu. Paging adalah salah satu cara untuk melakukan optimasi query. Dalam sebuah kasus saya pernah mengerjakan project yang datanya dalam satu tabel itu sampai ratusan ribu record. Seandainya data tersebut di tampilkan pada sebuah halaman web saja, maka akan menghabiskan tempat. Dan akan terasa tidak enak untuk dilihat. Oleh karena itu digunakan paging untuk mengantisipasi hal itu.
CodeIgniter mempunyai class pagination untuk mengatasi hal tersebut dan penggunaannya pun juga sangat mudah. Untuk lebih jelasnya mari kita praktekkan saja.
Disini nanti kita akan buat sebuah controller dengan nama admin.php dan disimpan pada folder application/controllers. Masukkan code berikut ini kedalam file tersebut.
view plaincopy to clipboardprint?

<?php
class admin extends Controller {
 
    function admin()
    {
        parent::Controller();
        $this->load->model('admin_model');                
    }
     
    function artikel() {                            
        $data=$this->admin_model->artikel();
        $this->load->view('mypaging',$data);              
    }
}
?>

Kemudian buatlah file admin_model.php dan simpan ke dalam folder application/models kemudian masukkan code berikut ini :
view plaincopy to clipboardprint?

<?php
class admin_model extends Model{  
     
    function admin_model(){  
        parent::Model();
    }
     
    function artikel(){
        $string_query       = "select * from artikel order by artikelid";
        $query          = $this->db->query($string_query);            
        $config['base_url']     = base_url().'index.php/admin/artikel/';
        $config['total_rows']   = $query->num_rows();
        $config['per_page']     = '30';
        $num            = $config['per_page'];
        $offset         = $this->uri->segment(3);
        $offset         = ( ! is_numeric($offset) || $offset < 1) ? 0 : $offset;
         
        if(emptyempty($offset))
        {
            $offset=0;
        }
         
        $this->pagination->initialize($config);        
         
        $data['query']      = $this->db->query($string_query." limit $offset,$num");  
        $data['base']       = $this->config->item('base_url');
     
        return $data;
    }
}
?>

Kemudian buatlah file mypaging.php dan simpan kedalam folder application/views. Masukkan code berikut ini ke dalam file tersebut.
view plaincopy to clipboardprint?

<html>  
<head>  
<title>My Paging</title>  
</head>  
<body>
<table>
<thead>
    <tr>      
        <th>Artikel ID</th>                              
        <th>Judul</th>
        <th>Date</th>
        <th>Post by</th>                                
        <th>View</th>
    </tr>
</thead>
<tbody>
    <?    
    foreach($query->result() as $row)
    {                    
        echo  
        "<tr>          
            <td>$row->artikelid</td>
            <td>$row->title</td>
            <td>$row->artikeldate</td>                    
            <td>$row->postby</td>                                        
            <td>$row->view</td>
        </tr>";        
    }
    ?>        
</tbody>
</table>
<p align="center"><?=$this->pagination->create_links();?></p>
</body>
</html>

Tiga file sudah kita buat, selanjutnya akan saya jelaskan code-code pada masing-masing file tersebut. Di dalam controller admin.php tedapat constructor yang memanggil file admin_model.php. Dibawahnya lagi terdapat code berikut:
view plaincopy to clipboardprint?

function artikel() {                            
    $data=$this->admin_model->artikel();
    $this->load->view('mypaging',$data);              
}

Fungsi artikel ini akan memanggil fungsi artikel() yang ada pada admin_model dan menyimpan return valuenya ke dalam variable $data. Setelah itu fungsi ini akan memanggil file mypaging.php yang ada di folder views dengan memberikan parameter $data.
Di dalam admin_model.php sendiri terdapat fungsi artikel. Di dalam fungsi ini kita akan melakukan query untuk mengambil data di table artikel. Berikut ini scriptnya:
view plaincopy to clipboardprint?

$string_query   = "select * from artikel order by artikelid";
$query      = $this->db->query($string_query);

Kita juga akan melakukan konfigurasi untuk paging yang kita buat.
    $config['base_url'] = base_url().'index.php/admin/artikel/';
Script di atas digunakan untuk mengatur arah link dari paging yang kita buat.
    $config['total_rows'] = $query->num_rows();
Script di atas digunakan untuk mengetahui total record dari query yang kita jalankan.
    $config['per_page'] = '30';
Script di atas digunakan untuk mengatur jumlah baris yang akan di tampilkan dalam satu halaman.

Sekarang kita akan melihat script dalam file mypaging.php di folder view. Di situ terdapat script untuk menampilkan paging.
    <?=$this->pagination->create_links();?>
Script ini akan membuat paging secara otomatis
Continue Reading »

Monday, October 17, 2011

Validasi di CodeIgniter

Masalah keamanan adalah masalah klasik yang selalu menghantui semua pengguna dan pengembang website, dan untuk mencegah agar tidak terjadi hal-hal yang tidak kita inginkan salah satunya adalah dengan melakukan validasi data. CodeIgniter mempunyai sebuah class untuk melakukan validasi yaitu form_validation. Validasi biasa dilakukan ketika user mengisikan data pada sebuah form.
            Baik langsung saja saya jelaskan bagaimana caranya menggunakan class form_validation.
Buat sebuah controller dengan nama form.php dan masukkan kode berikut ini.
view plaincopy to clipboardprint?

<?php
class Form extends Controller {
    function form()
    {
        parent::Controller();
        $this->load->library('form_validation');
    }

    function index()
    {      
        $this->form_validation->set_rules('username', 'Username', 'required');
        $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|valid_email');
       
        if($this->input->post("submit"))
        {      
            if ($this->form_validation->run() == FALSE)
            {
                $this->load->view('myform');
            }
            else
            {
                echo "data yang anda masukkan sudah valid";
            }
        }
        else
        {
            $this->load->view("myform");
        }
    }
}
?>

Simpan file form.php tersebut dalam folder application/controllers.
Kemudian buatlah file myform.php dan masukkan kode berikut ini.
view plaincopy to clipboardprint?

<html>
<head>
<title>My Form</title>
</head>
<body>

<?=$this->form_validation->error_string(); ?>
<form method="post" action="<?=$base;?>form" >
<h5>Username</h5><input type="text" name="username" value="<?=$this->form_validation->set_value("username");?>" 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="<?=$this->form_validation->set_value("email");?>" size="50" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Simpan file myform.php tersebut dalam folder application/views.
Sekarang saya akan menjelaskan arti dari code-code tersebut. Di dalam class Form.php tadi terdapat constructor yang di dalamnya terdapat code
$this->load->library('form_validation');
Code ini digunakan untuk memanggil class form_validation yang berada pada folder library. Setelah itu di bawah constructor terdapat fungsi index(). Di dalam fungsi ini rule/aturan validasi di definisikan. Di situ di tuliskan ada 4 field yang diberi masing-masing role, antara lain :
view plaincopy to clipboardprint?

$this->form_validation->set_rules('username', 'Username', 'required');
$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|valid_email');

Fungsi untuk memberikan role validation adalah $this->form_validation->set_rules();
Fungsi ini memiliki 3 parameter. Parameter pertama adalah nama field yang akan diberi role. Parameter kedua adalah label dari field tersebut. Label disini digunakan ketika terjadi error maka label tersebut akan tampil sebagai error message. Parameter ketiga adalah role itu sendiri. CodeIgniter menyediakan banyak role, antara lain seperti contoh di atas adalah required yang artinya bahwa field tersebut tidak boleh kosong. Contoh yang lain adalah valid_email yang artinya field tersebut harus berisi alamat email. Dan masih banyak lagi role-role yang lain. Anda bisa membacanya di http://codeigniter.com/user_guide/libraries/form_validation.

Kembali pada topik cara memberikan role validation. Di sini anda bisa memberikan lebih dari satu role, yaitu dengan menambahkan tanda | pada parameter ketiga. Anda dapat melihat contoh di atas pada baris yang ke empat, yaitu memberikan role required dan valid_email pada field email.

Lalu anda bertanya, Bagaimana kalau saya punya fungsi sendiri untuk melakukan validasi? Jawabnya mudah, CodeIgniter mendukung fungsi yang anda buat sendiri. Lalu bagaimana caranya memanggil fungsi validasi yang telah saya buat? Yaitu dengan menggunakan fungsi callback. Contoh pada field username saya melakukan pengecekan tambahan.

$this->form_validation->set_rules('username','Username','required|callback_username_check');

Maka secara otomatis system akan memanggil fungsi username_check().
view plaincopy to clipboardprint?

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;
    }
}


Letakkan fungsi username_check() di dalam controller.

Code selanjutnya adalah pengecekan penekanan tombol, jika tombol ditekan maka akan melakukan validasi. Fungsi untuk melakukan validasi adalah $this->form_validation->run() . Fungsi ini akan mengembalikan nilai TRUE jika tidak ada kesalahan pada waktu input. Dan mengembalikan nilai FALSE jika ada kesalahan pada waktu input.

Selanjutnya kita lihat file myform.php, di dalam file ini terdapat code <?=$this->form_validation->error_string(); ?>. Code ini digunkan untuk menampilkan semua error yang akan terjadi pada waktu input data. Jika anda ingin memisahkan error message tersebut per field sangat mudah. Yaitu dengan menggunakan fungsi <?=$this->form_validation->error(‘nama_field');?>. Di dalam fungsi ini terdapat sebuah parameter yang berisikan nama field yang akan ditampilkan error messagenya.

Di dalam file myform.php juga terdapat code ="<?=$this->form_validation->set_value("username");?>. Code ini digunakan untuk menampilkan nilai yang telah diinputkan sebelumnya. Namun itu hanya berlaku untuk tag input form atau textarea saja. Untuk tag checkbox ,select dan radio menggunakan fungsi yang berbeda-beda.

Continue Reading »

Sunday, October 16, 2011

Getting Started Create a Website with CodeIgniter

CodeIgniter has a concept of MVC (Model View Controller) in the creation of websites. MVC concept has many maanfaat among others split between logic and presentation, thus making the website could be more structured. Models are typically used to query the database for example insert, update, delete or select. While the View is used to display the output of existing processes. Controller is used to connect between the Model and View. Controllers can also be used to validate input before the data entered into the database. Next let's start creating a simple application example showing the words "hello world".




<?php
class Helloworld extends Controller {
    function Helloworld()
    {
        parent::Controller();
        $this->load->model('helloworld_model');  
    }

    function index()
    {
        $data = $this->helloworld_model->data();
        $this->load->view('output',$data);
    }
}
?>



explanation:
Remember the naming class must use capital letters at the beginning.
The script $ this-> load-> model ('helloworld_model') is used to access files named helloworld_model model.
The script $ data = $ this-> helloworld_model-> data (); used to call the function data () that existed at helloworld_model. Function has a return value that was then in the capacity into the variable $ data.
The script $ this-> load-> view ('output', $ data); used to call the view that output is accompanied by a variable named $ data in it.

4.Buatlah a model file and name it helloworld_model.php and place it in a folder system / application / models. Fill the file is as follows:




<?php
class Helloworld_model extends Model {
    function Helloworld_model()
    {
        parent::Model();
    }

    function data()
    {
        $data['test'] = 'Hello World !!';
        return $data;
    }
}
?>

5.Make a view file and name it output.php and place it in a folder system / application / view. Fill the file is as follows:

<html>
<head>
<title>Hello World !!</title>
</head>
<body>
<h1><?=$test;?></h1>
</body>
</html>


6. Please access your browser eg http://localhost/CodeIgniter/
Continue Reading »