Kamis, 26 Juli 2012

BEKERJA DENGAN FRAMEWORK : CODEIGNITER



CodeIgniter adalah salah satu framework yang dapat digunakan untuk membangun aplikasi web menggunakan PHP. Tujuan utamanya adalah agar developer dapat bekerja dengan cepat pada proyek yang dikerjakan daripada harus menulis kode dari awal. CodeIgniter telah menyediakan library yang untuk pekerjaan yang biasa dilakukan secara umum.
CodeIgniter menggunakan pendekatan MVC (Model View Controller) yang berarti adanya pemisahan antara logika aplikasi dan presentasinya kepada user.
Hal-hal yang dibahas dalam tutorial ini adalah dasar penggunaan CodeIgniter.
Hal-hal yang perlu dipersiapkan untuk menggunakan CodeIgniter adalah:
1.      CodeIgniter
CodeIgniter yang digunakan dalam tutorial ini adalah CodeIgniter V 1.7.2
PHP version 4.3.2 atau yang lebih baru
2.      Database
Database dibutuhkan untuk semua web programming. Database yang didukung oleh CodeIgniter antara lain MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, and ODBC. Dalam tutorial ini, kita akan bekerja dalam localhost. Aplikasi yang dipakai dalam tutorial ini adalah XAMPP 1.7.7.
3.      Netbeans 7.1
Aplikasi ini digunakan sebagai IDE.
1.     Buka file config.php yang berada pada direktori config. Kemudian isi array $config[‘base_url’] dengan http://localhost/namaProject. $config[‘base_url’] berguna untuk menetapkan halaman load utama.

Description: C:\Users\Ayunisa\Desktop\Training\config.jpg
Gambar 1. config.php
2.       Buka file routes.php yang berada pada direktori config. Kemudian isi array $route[‘default_controller’] dengan nama file controller yang kamu buat (misalkan nama file controller tersebut adalah ‘province’).
Description: C:\Users\Ayunisa\Desktop\Training\routes.jpgDescription: C:\Users\Ayunisa\Desktop\Training\routes.jpgDescription: C:\Users\Ayunisa\Desktop\Training\routes.jpg
Gambar 2. routes.php
3.  Buka file database.php yang terdapat pada direktori config. Kemudian isi $db[‘default’][‘hostname’] dengan lokasi kerja anda. Karena tidak bekerja menggunakan client server, lokasi kerja anda adalah localhost.
Isi array $db[‘default’][‘username’] dengan username phpmyadmin anda (misalkan username yang digunakan adalah root).
Isi array $db[‘default’][‘password’] dengan password yang digunakan pada phpmyadmin.
Isi array $db[‘default’][‘database’] dengan nama database yang digunakan (misalkan nama database yang digunakan adalah provincecity).

Description: C:\Users\Ayunisa\Desktop\Training\database.jpg
Gambar 3. database.php
4.       Buka file autoload.php yang berada pada direktori config. Kemudian isi array $autoload[‘libraries’] dengan library yang akan anda gunakan (diasumsikan library yang digunakan adalah database).
Isi array $autoload[‘model’] dengan model yang akan digunakan pada saat pembuatan aplikasi web (misalkan naam model adalah CityModel).
Description: C:\Users\Ayunisa\Desktop\Training\autoload.jpg
Description: C:\Users\Ayunisa\Desktop\Training\autoload.jpg
Gambar 4. autoload.php
Model adalah kelas PHP yang didesain untuk bekerja dengan informasi dalam database. Kelas ini dapat digunakan untuk memasukkan, update, dan memperoleh data menggunakan query atau menggunakan library yang telah disediakan CodeIgniter.
Secara sederhana, view adalah suatu halaman web, atau suatu fragmen halaman web seperti header, footer, sidebar, dll. View tidak pernah dipanggil secara langsung, harus di-load oleh suatu controller.
Controller adalah jantung dari aplikasi yang dibangun. Secara sederhana, controller adalah suatu class file yang dinamai sehingga dapat diasosiasikan dengan URI. Sebagai informasi, URI (Uniform Resource Identifier) mengidentifikasikan resource berdasarkan lokasi, atau nama, atau keduanya. Misalnya: example.com/index.php/blog/.

1.3.1    Menampilkan Data Dalam Tabel

Ikutilah langkah-langkah berikut untuk menampilkan data dalam table.
1.      Buat file baru dengan nama file yang sesuai dengan isi array $autoload[‘model’] pada file autoload.php. Nama yang digunakan adalah CityModel. File model harus berada dalam direktori models.
                                                       
Description: C:\Users\Ayunisa\Desktop\Training\Modeller.jpg
Gambar 5.CityModel.php
Isi dari file CityModel.php adalah sebagai berikut ini:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class CityModel extends Model{
       function CityModel(){
            parent :: Model();
       }
       function getCity(){
            $sql = 'select * from mst_city';
            $query = $this->db->query($sql);
            if($query->num_rows == 0){
                return null;
            }else{
                return $query->result();
            }
        }      
}

Kelas CityModel harus meng-extends class Model. Fungsi CityModel() merupakan konstruktor yang memanggil semua fungsi yang ada dalam class Model. Fungsi getCity() berfungsi untuk mengambil semua data dari table mst_city. Query $query = $this->db->query($sql); berfungsi untuk megeksekusi query $sql.
Potongan kode return $query->result(); berfungsi mengembalikan hasil query dalam bentuk array.

  1. Buat file baru dengan nama file yang sesuai pada nama controller yang sudah anda definisikan pada file routes.php. Pada konfigurasi di atas, nama controller yang digunakan adalah ‘province’. File controller harus berada pada direktori controller.

Description: C:\Users\Ayunisa\Desktop\Training\controller.jpg
Gambar 6. province.php

Isi dari file province.php adalah sebagai berikut:

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class Province extends Controller{
        function Province(){
            parent::Controller();
        }
        function index(){
            $data['title'] = ' - Training [Show City]';
            $data['city']=$this->CityModel->getCity();
            $this->load->view('show_data',$data);
        }       
    }

Ketika aplikasi pertama kali dijalankan, fungsi index() adalah fungsi yang pertama kali di-load. Kelas Province harus meng-extends kelas Controller.
Fungsi Province merupakan konstruktor yang memanggil semua fungsi yang ada pada kelas Controller.
Pada fungsi index() terdapat potongan kode $data[‘city’] = $this->CityModel->getCity(); yang berfungsi untuk menjalankan fungsi fungsi getCity() yang terdapat pada kelas CityModel. Kembalian dari fungsi tersebut ditampung dalam sebuah variabel array yang bernama $data[‘city’].
Pada fungsi index terdapat kode $this->load->view(‘show_data’,$data); yang berarti ketika aplikasi dijalankan, apa yang akan ditampilkan diatur oleh file show_data.php yang terdapat pada direktori view. Parameter $data pada potongan kode tersebut berarti variabel array $data[] telah dikirimkan ke view yang akan di-load.

  1. Buatlah file view sesuai dengan nama view yang di-load oleh controller (show_data). File ini harus diletakkan dalam direktori views.
Description: C:\Users\Ayunisa\Desktop\Training\views.jpg
Gambar 7. show_data.php
Untuk menampilkan  semua data yang telah diambil pada saat mendefenisikan file model dan controller dapat dilakukan dengan kode berikut ini.
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<html>
    <body>
        <div id="index">
          <table id="mainTable" align="center" CELLPADDING=0 CELLSPACING=0                    border="0"  width="1000">
       <tr>
<td width="1000" colspan="3" align="left" id="rightPart" style="vertical-align: top;padding-right: 40px">
<?
   echo "<table border=1 width=100%  id='tabel'>";
   echo "<tr>";
   echo "<th align='center' width='70'>ID City</th>";
   echo "<th align='center' width='70'>ID Province</th>";
   echo "<th align='center' width='120'>City Name</th>";
   echo "</tr>";
      if($city !=null){
         foreach($city as $row){
            echo "<tr>";
            echo "<td>".$row->id_city."</td>";
echo "<td>".$row->id_province."</td>";
echo "<td>".$row->cityname."</td>";
echo "<td align=center>";?>
echo "</tr>";
}    
?>
                        
       </td>    
      </tr>
     </table>
   </div>
  </body>
</html>


Keterangan :
·         if($city !=null){
variable $city di dapat dari variable array penampung pada saat pembuatan file controller. Lihat pada potongan kode yang telah di buat di controller berikut :
$data['city']=$this->CityModel->getCity();
Maka akan di periksa apakah isi dari table dengan spesifikasi yang telah di tentukan pada query yang dibuat ada atau tidak.
·         foreach($city as $row){
Fungsi dari potongan kode diatas yaitu mengeluarkan semua isi array $city dan ditampung pada variable $row.
·         echo "<td>".$row->id_city."</td>";
Fungsi dari potongan kode diatas yaitu menampilkan data pada field id_city.
·         echo "<td>".$row->id_province."</td>";
Fungsi dari potongan kode diatas yaitu menampilkan data pada field id_province.
·         echo "<td>".$row->cityname."</td>";
Fungsi dari potongan kode diatas yaitu menampilkan data pada field cityname.

4.         Hasil yang didapatkan dari implementasi kode di atas adalah:Description: C:\Users\Ayunisa\Desktop\Training\show_data.jpg










Gambar 8. Hasil implementasi kode

1.3.2    Menghapus Data

Ikutilah langkah-angkah berikut ini untuk melakukan pengahpusan data.
1.      Bukalah file dalam direktori model yang telah dibuat sebelumnya. Kemudian tambahkan kode di bawah ini.
1.
2.
3.
4.
function  deleteCity($id_city){
    $this->db->where('id_city',$id_city);
    $this->db->delete('mst_city');
}
Keterangan :
·         Fungsi yang ditambahkan dalam file tersebut disebut deleteCity($id_city). $id_city adalah parameter fungsi tersebut.
·         $this->db->where('id_city',$id_city);
Potongan kode diatas merupakan library yang sudah disediakan CodeIgniter untuk menetapkan kondisi. Kode ini sama artinya dengan “Where” pada query database biasa. Parameter pertama berisi field database yang akan di kondisikan, kemudian parameter yang kedua berisi value.
·         $this->db->delete('mst_city');
Potongan kode diatas berfungsi untuk menghapus data dari table mst_city.

2.      Buka file controller yang telah dibuat sebelumnya. Kemudian tambahkan kode berikut ini.
1.
2.
3.
4.
5.
6.
7.
8.
9.
function hapus_City($id_city){
      $this->CityModel->deleteCity($id_city);
       redirect(‘province/tampilkan_City’);
}
function tampilkan_City(){
            $data[‘city’] = $this->CityModel->getCity();
            $this->load->view(‘show_data’, $data);
}
Keterangan:
·         Fungsi yang ditambahkan dalam file tersebut adalah hapus_City($id_city). $id_city adalah parameter fugsi tersebut.
·         $this->CityModel->deleteCity($id_city);
Potongan kode diatas berfungsi untuk memanggil fungsi deleteCity($id_city) yang berada pada class CityModel.
·         redirect('province/tampilkan_City');
Potongan kode diatas berfungsi untuk  memanggil fungsi tampilkan_City() yang berada pada class Province.
·         Fungsi tampilkan_City() merupakan fungsi yang memiliki tugas yang sama dengan fungsi index() yaitu me-load file show_data.php.
3.      Tambahkan link hapus pada file show_data.php. Lihat potongan kode di bawah ini.
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.
30.
31.
32.
33.
34.
35.
36.
37.
<html>
   <body>
      <div id="index">
         <table >
          <tr>
         <td >
         <?      
            echo "<table border=1 width=100%    id='tabel'>";
echo "<tr>";
            echo "<th align='center' width='70'>ID City</th>";
            echo "<th align='center' width='70'>ID Province</th>";
            echo "<th align='center' width='120'>City Name</th>";
            echo "<th align='center' width='70'>Action</th>";
            tr>";
               if($city !=null){
                  foreach($city as $row){
                     echo "<tr>";
                     echo "<td>".$row->id_city."</td>";
                     echo "<td>".$row->id_province."</td>";
                     echo "<td>".$row->cityname."</td>";
                     <a href=' <?=base_url()?>  index.php/hapus_City/   <?=$row->id_city;?>'>        <div>Hapus</div></font></a> </td>
                     echo "<td align=center>";?>
                     echo "</tr>";                 
                } ?>
                        
        </td>    
       </tr>
      </table>
    </div>
  </body>
</html>
Keterangan:
<a href=' <?=base_url()?> index.php/hapus_City/   <?=$row->id_city;?>'>  <div>Hapus</div></font></a> </td>
Potongan kode diatas berfungsi untuk menampilkan link hapus pada view.
Fungsi base_url() merupakan url utama. index.php/hapus_City/  befungsi untuk memanggil fungsi hapus_City() pada file controller. $row->id_city berfungsi sebagai nilai parameter yang dibutuhkan fungsi hapus_City() , dimana nilai nya diambil dari field id_city pada tabel mst_city.
4.      Maka hasil yang akan didapatkan adalah sebagai berikut ini.




Description: C:\Users\Ayunisa\Desktop\Training\delete.jpg
Gambar 9. Link hapus data

1.3.3    Memasukkan Data Kedalam Database

Untuk memasukkan data ke dalam database, ikutilah langkah-langkah berikut ini:
1.      Untuk menambahkan data kota ke dalam tabel mst_city, kamu perlu membuat satu button  untuk membuka form penambahan data. Perhatikanlah kode berikut ini.
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.
<html>
<head>
   <title>Training<? echo $title; ?></title>
</head>
    <body>
    <table>     
   <tr>     
       <td width="1000">
               <?
                    echo "<table width=100%>";
                    echo "<tr><td> <a href='".base_url()."index.php/province/tambah_City'><button>Tambah City</button></a></td></tr>";
                    echo "</table>";
                    echo "<table border=1 width=100%  id='tabel'>";
     
                    echo "<tr>";
                    echo "<th align='center' width='70'>ID City</th>";
                    echo "<th align='center' width='70'>ID Province</th>";
                    echo "<th align='center' width='120'>City Name</th>";
                    echo "<th align='center' width='70'>Action</th>";
                    echo "</tr>";
Keterangan:
Bagian yang berwarna merah adalah kode yang menciptakan tombol yang akan mengeksekusi fungsi tambah_city() yang terdapat dalam file province.php.
Hasil yang didapatkan setelah kode tersebut di eksekusi ditunjukkan oleh gambar berikut.
Gambar 10. Button Tambah City
Untuk memasukkan data baru ke dalam database, buatlah suatu form yang berguna untuk memudahkan user untuk memasukkan data. Berikut ini adalah kode yang digunakan untuk membuat form insert dalam tutorial ini.
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
<html>
<head>
    <title>Toko Baju<? echo $title; ?></title>
   
</head>
    <body>
    <table>
       <tr>  
           <td>
               <form method="POST" action="<?php echo base_url()?>index.php/province/tambah_City">
              <table border="0" align ="left" style="border:#6699ff 1px solid; padding:10px;  border-radius: 7px 7px 7px 7px">
                  <tr>
                     <td colspan ="2"><b>Form Penambahan City</b></td>
                  </tr>
                    <tr>
                        <td colspan ="2"align="right">
                         <font color="#f00">
                            <?if ($this->session->flashdata('notification')) {
                         echo $this->session->flashdata('notification');
                         }?>
                         </font></td>
                    </tr>   
                  <tr>
                     <td colspan="2" style="border-top:#6699ff 2px solid;"></td>
                  </tr>
                    <tr>
                     <td style="vertical-align: top">
                         <label for="id_city">ID City</label>
                     </td>
                     <td>
                         <input type="text" size="45" name="id_city" id="text-field" placeholder="Masukkan Id City"></input>
                     </td>
                  </tr>
                    <tr>
                        <td width="150">
                         <label for="id_province">Id Province</label>
                     </td>
                         <td width="150">
                            <select name="id_province">
                                <?php
                                    foreach($province as $row){
                                        echo "<option  size='25' value='".$row->id_province."'>".$row->id_province."</option>";
                                    }
                                ?>
                            </select>
                        </td>
                    </tr>
                   
                  <tr>
                     <td style="vertical-align: top">
                         <label for="cityname">City Name</label>
                     </td>
                     <td>
                         <input type="text" size="45" name="cityname" id="text-field" placeholder="Masukkan nama kota"></input>
                     </td>
                  </tr>
                    </tr>   
                 
                   <tr align="center">
                     <td colspan="2" style="border-top:#6699ff 2px solid;" height="40">
                         <button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">
                           <span class="ui-button-text">Tambah</span>
                         </button>
                     </td>
                  </tr>
              </table>                 
</body>
</html>
Hasil pengeksekusian kode tersebut dapat dilihat pada gambar berikut.
Gambar 11. Form Penambahan City
2.      Pada file CityModel.php yang terdapat dalam direktori models, tambahkanlah kode berikut ini.
1.
2.
3.
4.
5.
6.
7.
8.
9.
function getProvince(){
   $sql = 'select * from mst_province';
   $query = $this->db->query($sql);
   if($query->num_rows == 0){
      return null;
   }else{
      return $query->result();
   }
}
Fungsi ini berguna untuk mengambil semua data yang terdapat dalam tabel mst_province.
Pada file dan direktori yang sama juga, tambahkan lagi kode berikut ini.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function checkCity($id_city){
   $sql  = "select * from mst_city";
   $sql .= " where id_city = '$id_city'";
   $query = $this->db->query($sql);
   if($query->num_rows() == 1){
      return true;
   }else{
      return false;
   }
}
Fungsi ini berguna untuk memeriksa apakah kota yang ditambahkan sudah ada sebelumnya. Apabila kota yang ditambahkan sudah ada, fungsi ini akan mengembalikan true dan akan mengembalikan false jika sebaliknya.
Tambahkan juga kode berikut ini pada file dan direktori yang sama.
1.
2.
3.
4.
5.
function addCity($id_city, $id_province, $cityname){
   $sql = array ('id_city '=>$id_city ,'id_province' =>$id_province,' cityname'=>$cityname);
   $this->db->insert('mst_city',$sql);
}
Fungsi addCity($id_city, $id_province, $cityname) tersebut berguna untuk memasukkan data ke dalam tabel mst_city. Parameter $id_city menampung kode kota yang dimasukkan, $id_province menampung kode provinsi yang dimasukkan, dan $cityname menampung nama kota yang dimasukkan. Variabel $sql adalah array yang menampung nilai semua parameter dalam fungsi tersebut. $this->db->insert('mst_city',$sql); adalah perintah yang memasukkan nilai array $sql ke dalam tabel mst_city.
3.      Pada file province.php yang terdapat dalam direktori controllers, tambahkan lah kode berikut ini.
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.
function tambah_City(){
      $data['title'] = " - Tambah City";
      $data['province'] = $this->CityModel->getProvince();
       $this->form_validation->set_rules ('id_city', 'required|trim |max_length[20]|css_clean');
      $this->form_validation->set_rules('id_province', 'required| trim |max_length[20]|css_clean');
      $this->form_validation->set_rules('cityname', 'required |trim| max_length[20]|css_clean');
           
      if($this->form_validation->run() == FALSE){
         $this->session->set_flashdata('notification','Data Tidak Boleh Kosong');
         $this->load->view("addCity", $data);
      }else{
         if ($this->CityModel->checkCity($this->input->post ('id_ city'))==true){
            $this->session->set_flashdata('notification','Id City tidak valid');
            $this->load->view("addCity", $data);
         }
         else{
            $this->CityModel->addCity($this->input->post('id_city') ,$this->input->post('id_province'),$this->input->post('cityname'));
            redirect("province/tampilkan_City");
         }
      }
}
Keterangan:
Kode yang berwarna merah adalah kode yang mengatur validasi nilai yang dimasukkan user. Field yang disediakan tidak boleh kosong dan jumlah karakter yang bisa dimasukkan adalah 20 karakter. Berikut ini adalah field yang disediakan.
Kode yang berwarna biru berarti bahwa apabila kondisi form validasi yang telah disebutkan tidak terpenuhi, suatu notifikasi akan dimunculkan kepada user.
Kode yang berwarna hijau berarti bahwa apabila kode city yang dimasukkan user salah, suatu nontifikasi akan diberikan kepada user yang menandakan bahwa id city yang dimasukkan salah. Dan file addCity.php yang berada dalam direktori views akan di-load.
Kode yang berwarna coklat akan dieksekusi apabila semua kondisi untuk memasukkan nilai city telah terpenuhi. Kode tersebut adalah kode yang akan memasukkan nilai city ke dalam tabel berdasarkan query yang ada pada fungsi addcity() yang ada dalam file CityModel.php. Setelah itu, semua data akan ditampilkan kepada user sesuai dengan fungsi tampilkan_City() yang berada dalam file province.php.

1.3.4    Mengubah Data

Untuk mengubah data yang ada dalam database, ikutilah langkah-langkah berikut ini.
1.      Untuk mengubah data, terlebih dahulu kita perlu menyedikan suatu link yang akan mengarahkan user ke form untuk mengubah data. Perhatikanlah kode berikut ini.
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.
<html>
if($city !=null){
                        foreach($city as $row){
                            echo "<tr>";
                            echo "<td>".$row->id_city."</td>";
                            echo "<td>".$row->id_province."</td>";
                            echo "<td>".$row->cityname."</td>";
                            echo "<td align=center>";
               ?>                                 <a href='<?=base_url() ?> index.php/province/ubah_City/<?=$row->id_city;?>'><div>Ubah</div></a>
               <a href='<?=base_url()?>index.php/province/hapus_City/<?=$row->id_city;?>'<div>Hapus</div></a>
                                    <a href='<?=base_url()?>index.php/province/tampilkan_City'></a>       
                                <?php
                            echo "</tr>";
                        }
                    }
                    echo "</table>";
               ?>
    </table>
  </body>
</html>
Potongan kode diatas adalah bagian dari file show_data.php yang terdapat dalam direktori views. Bagian yang berwarna merah berfungsi untuk membuat link kepada form untuk mengubah data. Salinlah kode yang berwarna merah di atas dan anda akan mendapatkan hasil seperti gambar berikut ini.
Gambar 12. Link ubah
Selanjutnya perlu dibuat suatu form untuk mengubah data. Berikut ini adalah kode yang digunakan untuk membuat form untuk mengubah data. Copy lah file berikut dan letakkan dalam satu file baru bernama ubahCity.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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
<html>
<body>
 <table id="mainTable" align="center" CELLPADDING=0 CELLSPACING=0 border="0"  width="1000">
         <tr>
             <td >
                 <table border="1" align="center" style="border:#aeaeae 1px solid; padding:20px;  border-radius: 8px 8px 8px 8px">
                     <tr> 
                        <td colspan ="2" align="center">
                            <?php foreach($cityid as $row){
                                    echo form_hidden('id_city', $row->id_city);
                            }?>
                            Ubah City
                        </td>
                     </tr>
                     <tr>
                        <td>
                              <? foreach ($cityid as $kat){
                                    echo form_open(base_url().'index.php/province/Ubah_City/'.$kat->id_city);
                               
                                }?>
                              Id City
                        </td>
                        <td>
                            <select name="kota">
                                <?php
                                    foreach($city as $rows){
                                        if($rows->id_city == $row->id_city)
                                            echo "<option  size='25' selected='selected' value='".$rows->id_city."'>".$rows->id_city."</option>";
                                        else
                                            echo "<option  size='25' value='".$rows->id_city."'>".$rows->id_city."</option>";
                                    }
                                ?>
                            </select>
                        </td>
                     </tr>
                     <tr>
                        <td>
                             Id Province
                        </td>
                        <td>
                              <select name="provinsi">
                                   <?php
                                    foreach($city as $rows){
                                        if($rows->id_province == $row->id_province)
                                            echo "<option  size='25' selected='selected' value='".$rows->id_province."'>".$rows->id_province."</option>";
                                        else
                                            echo "<option  size='25' value='".$rows->id_province."'>".$rows->id_province."</option>";
                                    }
                                ?>                     
                              </select>
                        </td>
                     </tr>
                     <tr>
                         <td>
                             City Name
                         </td>
                         <td>
                             <input type ="text" name="cityname" value="<? foreach ($cityid as $kat){echo $kat->cityname;}?>"></input>
                         </td>
                     </tr>
                     <tr>
                        <td>
                                <?echo validation_errors();?>

                                <div><?  echo form_submit(array('id'=>'submit','name'=>'submit'),'Update');?></div>
                                 
                                <?  echo form_close();?>
                                
                        
                          </td>
                    
                    </tr>
             </table>
        </td>
       </tr>
  </table>
</body>
</html>
Hasil dari eksekusi kode di atas dapat dilihat pada gambar berikut ini.
Gambar 13. Form update

2.      Tambahkanlah kode berikut ini pada file show_data.php yang terdapat dalam direktori models.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function getCity(){
            $sql = 'select * from mst_city';
            $query = $this->db->query($sql);
            if($query->num_rows == 0){
                return null;
            }else{
                return $query->result();
            }
        }
        function getCityId($cityid){
            $sql = 'select * from mst_city';
            $sql .= " where id_city ='$cityid'";
            $query = $this->db->query($sql);
            if($query->num_rows == 0){
                return null;
            }else{
                return $query->result();
            }
        }
Kedua fungsi yang diberikan diatas berfungsi untuk mengambil nilai yang tersimpan dalam tabel mst_city. Fungsi getCity() berguna untun mengambil semua nilai dalam tabel mst_city tanpa terkecuali. Sedangkan fungsi getCityId($cityid) berguna untuk mengambil nilai city berdasarkan id yang dispesifikkan oleh parameter $cityid.
3.      Pada controller, province.php, tambahkanlah kode berikut ini.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function toUbahCity($cityid){
           $data['city']=$this->CityModel->getCity();
           $data['cityid'] = $this->CityModel->getCityId($cityid);
           $this->load->view('ubahCity',$data);
        }
       

        function ubah_City($id_city){
            $this->db->where('id_city',$id_city);
            $this->db->update('mst_city',array('id_city'=>$this->input->post('kota'),'id_province'=>$this->input->post('provinsi'),'cityname'=>$this->input->post('cityname')));
            redirect('province/tampilkan_City');
        }
 Fungsi yang pertama kali di-load ketika link ubah diklik adalah fungsi toUbahCity($cityid). Fungsi ini berguna untuk me-load form untuk mengubah data.
Fungsi ubah_city($id_city) adalah fungsi yang akan mengubah nilai city berdasarkan id tertentu yang dispesifikkan oleh parameter $id_city. Setelah itu hasilnya akan ditampilkan kepada pengguna dengan mengeksekusi fungsi tampilkan_City() yang berada dalam file province.php.

1 komentar:

  1. pak, bisa buatkan saya tutorial lengkap dari dasar-lanjut tentang membuat aplikasi CRUD berbasis web responsive (bootstrap & codeigniter) mengunakan PHP & PostgreSQL?

    Saya ingin belajar, jika tutorialnya pak cocok buat saya, saya bersedia membeli turorial tersebut.

    Eddy, 0823 020 73513

    BalasHapus