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.

Rabu, 23 Mei 2012

5 Adat Pernikahan Paling Aneh di Dunia

Pernikahan dapat menjadi sebuah momen indah dan penuh kebahagiaan yang menandai penyatuan dua insan. Uniknya, pernikahan seringkali dilangsungkan dengan berbagai adat.

Bahkan tak jarang di tengah kebahagiaan tersebut, pasangan harus melewati prosesi adat yang aneh dan irasional. Ada beberapa tradisi pernikahan yang dianggap paling aneh di dunia. Simak lima di antaranya berikut ini:

5. Menculik pengantin wanita di Roma
Image

Kebanyakan malam pengantin dihabiskan dengan cara romantis tetapi tidak dengan adat pernikahan di Roma. Pengantin pria diharuskan 'menculik' pengantin wanitanya. Budaya ini kental pada kehidupan kaum gipsi Romawi. Bila seorang pria berhasil menculik seorang gadis dan menyembunyikannya selama dua-tiga hari, ia akan resmi menjadi istri. woooowww


4. Menikahi hewan di India
Image

India tak asing dengan berbagai cerita takhayul, termasuk dalam pernikahan. Suku Santhal di India percaya, jika seorang bayi perempuan tumbuh gigi di bagian atas gusi terlebih dulu, itu sebuah pertanda ia akan dimakan harimau dalam waktu dekat. Karena itu, ia harus menikah dengan seekor anjing untuk menghapus pengaruh buruk tersebut. wooooooowwww

Kisah ini dialami seorang anak usia sembilan tahun, Karnamoni Handsa, yang menikah dengan seekor anjing. Pernikahan ini dibuat meriah dan dihadiri 100 orang tamu. Setelah upacara pernikahan 'mengusir setan' selesai si gadis dapat menikah dengan pemuda manusia.

3. 'Menghitamkan' pengantin wanita di Skotlandia

Image
Ada kebiasaan unik dalam adat pernikahan di Skotlandia. Saat pernikahan, pasangan pengantin memakan isi perut domba dan pengantin prianya memakai pakaian sejenis rok. Selanjutnya, pengantin pria, keluarga dan teman-teman akan menyirami pengantin wanita dengan telur mentah, air kotor, saus dan susu basi. Kebiasaan 'menghitamkan pengantin wanita' merupakan ritual pernikahan yang sangat tua yang dilakukan setelah ikrar pernikahan. wooooooowwww

2. Pengantin wanita harus gemuk
Image
Beda dengan standar kecantikan umumnya, di Mauritania wanita cantik adalah wanita berukuran besar. Bila seorang wanita akan menikah, mereka akan ditempatkan pada sebuah kampung yang disebut 'penampungan lemak' untuk 'menghilangkan' keriput dan lebih menarik. wooooooowww

Ritual 'Leblouh' dalam bahasa lokal mewajibkan gadis yang akan menikah menyantap segala macam makanan agar gemuk dengan cepat. Menu makanan harian terdiri dari dua kilogram daging dan lima galon susu unta tiap hari. Jika mereka memuntahkannya, petugas pengawas akan menyiksa mereka.

1. Pengantin dilarang buang hajat
Image

Tradisi di semenanjung Kalimantan ini tak kalah aneh. Setelah ritual pernikahan yang membahagiakan, suku Tidung mewajibkan pasangan pengantin harus menunda membuang kotoran besar maupun kecil selama 72 jam atau sekitar tiga hari tiga malam. Sehingga, pasangan pengantin akan dibatasi makan dan minum dan diawasi agar tidak ke toilet. Jika menjalani ritual ini, pasangan akan menjalani pernikahan bahagia, dianugerahi anak yang banyak dan sehat. woooooowwww



source : http://terselubung.blogspot.com/2012/05 ... dunia.html

Jangan Lupakan Tuhan

Jangan Lupakan Tuhan

Ayat bacaan: Ayub 38:4
===================
"Di manakah engkau, ketika Aku meletakkan dasar bumi? Ceritakanlah, kalau engkau mempunyai pengertian!"

jangan lupakan TuhanTidak ada seorang pun manusia yang ingin hidupnya dipenuhi problem. Tidak ada yang mau berada dalam tumpukan persoalan. Tapi namanya hidup, tentu ada saat-saat dimana kita tidak bisa mengelak dari hal tersebut. Benar, itu tidak nyaman, bisa menyakitkan,  apalagi kalau datangnya tidak satu-satu melainkan sekaligus, beruntun dan bertumpuk. Titik terang penyelesaiannya pun tidak terlihat, seolah kita tiba-tiba berada di sebuah lorong gelap tanpa ada cahaya apapun. Dalam situasi seperti ini ada saat-saat kita menjadi lemah akibat tertekan beban berat, dan pada saat seperti itu jika tidak hati-hati kita bisa lupa kepada tuhan. Kita tidak lagi ingat bahwa kuasa dan kemampuan Tuhan tidak terbatas, juga lupa kepada kebaikan, kasih setiaNya dan janji-janjiNya. Himpitan masalah penuh penderitaan berkepanjangan akan mulai mengaburkan pandangan kita tentang kebaikan Tuhan, dan mulai menganggap bahwa Tuhan mungkin sudah tidak lagi peduli dengan hidup kita, atau bahkan mulai mempertanyakan keberadaanNya. Di saat-saat seperti itu kita perlu diingatkan kembali akan keajaiban kuasa Tuhan yang tidak terbatas, seperti Tuhan mengingatkan Ayub di saat penderitaan yang ia alami berada pada titik puncak.

Ayub mengalami serangkaian pengalaman tragis dalam hidupnya yang terjadi dalam waktu sangat singkat. Membaca kisah Ayub berarti membaca bagaimana kehidupan seseorang bisa jungkir balik dalam sekejap, bagaikan roda yang berguling cepat, sedetik sebelumnya di atas lalu sedetik kemudian berada pada bagian terbawah. Pada awal kitab Ayub kita bisa mengetahui siapa Ayub sebelumnya. Ayub dikenal saleh, jujur, takut akan Allah dan menjauhi kejahatan. (Ayub 1:1). Ia disebut sebagai orang yang terkaya di sebelah timur (ay 3). Hidupnya sangatlah nyaman dan sempurna. Tetapi tiba-tiba semuanya jungkir balik. Ribuan ternaknya musnah (ay 16-17), anak-anaknya tewas (ay 19), hartanya habis ludes dan jika itu belum cukup, penyakit kulit mengerikan menimpa sekujur tubuhnya. (2:7). Selesaikah? Ternyata tidak. Istrinya sendiri mengutuki dia, dan teman-temannya mengolok-olok apa yang terjadi atas dirinya. Lengkap sudah penderitaannya. Kita mungkin akan shock jika tiba-tiba mengalami itu semua tanpa disangka-sangka, Ayub pun demikian. Awalnya ia masih bisa menerima dengan pasrah, tetapi kemudian ia terperangkap dalam pikirannya sendiri bahwa Tuhan telah bertindak tidak adil. Ayub yang sedang sengsara dalam kesakitan luar biasa baik secara fisik maupun mental lupa siapa Tuhan itu sebenarnya dan seperti apa besarnya kuasa Tuhan. Dan yang terjadi kemudian, Tuhan kembali mengingatkan Ayub mengenai kuasanya. Mari kita lihat beberapa diantaranya.

1. Tuhan yang meletakkan dasar bumi.
"Di manakah engkau, ketika Aku meletakkan dasar bumi? Ceritakanlah, kalau engkau mempunyai pengertian!" (38:4)
2. Tuhan yang menetapkan batas samudera.
"Siapa telah membendung laut dengan pintu, ketika membual ke luar dari dalam rahim?" (ay 8)
3. Tuhan menerbitkan matahari pagi.
"Pernahkah dalam hidupmu engkau menyuruh datang dinihari atau fajar kautunjukkan tempatnya" (ay 12).
4. Tuhan berkuasa atas hidup dan mati.
"Apakah pintu gerbang maut tersingkap bagimu, atau pernahkah engkau melihat pintu gerbang kelam pekat?" (ay 17)
5. Tuhan mendatangkan salju (ay 22), hujan (26), bahkan membekukan air (30).
6. Tuhan membuat rumput-rumput bertunas lewat hujan (26-27)
7. Tuhan memberi hikmat dan kebijaksanaan (ay 36)
8. Tuhan menetapkan masa mengandung dan melahirkan bagi hewan (39:4)
dan seterusnya.

Semua ini diingatkan Tuhan kepada Ayub, agar Ayub tidak lupa kepada kuasa Tuhan meski ia tengah berada pada titik terendah dalam kehidupannya di dunia. Tuhan bagaikan berkata: "Hai Ayub, lupakah engkau terhadapku? Apakah engkau tidak lagi menyadari siapa Aku sebenarnya, dan sebesar apa kuasaKu?" Kita tahu apa akhir dari cerita ini. Hidup Ayub dipulihkan sepenuhnya, bahkan ia kemudian memperoleh lebih dari apa yang ia peroleh sebelum ia mengalami situasi menyakitkan itu.

Seperti kepada Ayub, pesan ini pun berlaku kepada kita semua. Benar bahwa dosa-dosa yang kita lakukan bisa membawa kita masuk kepada penderitaan, tetapi ada juga saat dimana Tuhan mengijinkan hidup kita dimasuki berbagai masalah dan kesulitan untuk alasan tertentu. Namun itu bukan berarti bahwa Dia sedang mengabaikan atau bersikap kejam menyiksa kita. Ada tujuan-tujuan tertentu dibalik semua itu, dan pada akhirnya kita akan menyadari bahwa semua itu membawa kebaikan bagi kita. Dikala lemah, segala yang diingatkan Tuhan ini menjadi pesan penting agar kita tidak melupakan kebaikan Tuhan dan berhenti untuk mengucap syukur kepadaNya. Dalam Mazmur kita bisa melihat bahwa tidak peduli dalam keadaan apapun, baik atau buruk, Tuhan tetap ada bersama kita, dan kuasaNya selalu turut serta di dalamnya. "Jika aku mendaki ke langit, Engkau di sana; jika aku menaruh tempat tidurku di dunia orang mati, di situpun Engkau. Jika aku terbang dengan sayap fajar, dan membuat kediaman di ujung laut, juga di sana tangan-Mu akan menuntun aku, dan tangan kanan-Mu memegang aku. Jika aku berkata: "Biarlah kegelapan saja melingkupi aku, dan terang sekelilingku menjadi malam," maka kegelapanpun tidak menggelapkan bagi-Mu, dan malam menjadi terang seperti siang; kegelapan sama seperti terang." (Mazmur 139:8-12). Lihatlah bahwa sesungguhnya dalam keadaan seperti apapun, seberat dan sepahit apapun yang terjadi dalam hidup kita pada saat-saat tertentu, Tuhan tidak pernah meninggalkan kita sendirian. Dia tetap ada bersama anak-anakNya yang begitu Dia kasihi. Mungkin hari ini ada diantara teman-teman yang tengah berada di bawah serangkaian pergumulan berat, jangan putus asa dan kehilangan pegangan, sebaliknya peganglah baik-baik pesan Tuhan hari ini. Jangan pernah lupa kepadaNya, jangan pernah ragu akan kuasaNya yang mampu membuat segala sesuatu yang mustahil menjadi mungkin, jauh melampaui kemampuan daya pikir dan akal budi kita. Tuhan tidak akan meninggalkan anak-anakNya yang selalu taat kepadaNya, dan Tuhan sudah menjanjikan bahwa tidak akan pernah berkekurangan orang-orang yang takut akan Dia. (Mazmur 34:10). Dalam kondisi yang paling tidak kondusif sekalipun, tetaplah bersyukur dan pegang teguh iman yang percaya kepada Tuhan sepenuhnya.

Jangan lupakan dahsyatnya kuasa Tuhan mengatasi segalanya


source 

Jumat, 11 Mei 2012

LOVE

On my wedding day, I carried my wife in my arms. The bridal car stopped in front of our one-room flat. My buddies insisted that I carry her out of the car in my arms. So I carried her into our home. She was then plump and shy. I was a strong and happy bridegroom.

 This was the scene of ten years ago. The following days were as simple as a cup of pure water. We had a kid, I went into business and tried to make more money. When the assets were steadily increasing, the affections between us seemed to ebb. She was a civil servant. Every morning we left home together and got home almost at the same time. Our kid was studying in a boarding school. Our marriage life seemed to be enviably happy. But the calm life was more likely to be affected by unpredictable changes.

Dew came into my life.

 It was a sunny day. I stood on a spacious balcony. Dew hugged me from behind. My heart once again was immersed in her stream of love. This was the apartment I bought for her. Dew said, "You are the kind of man who best draws girl's eyeballs." Her words suddenly reminded me of my wife. When we just married, my wife said "Men like you, once successful, will be very attractive to girls." Thinking of this, I became somewhat hesitant. I knew I had betrayed my wife. But I couldn't help doing so.

 I moved Dew's hands aside and said, "You go to select some furniture, O.K.? I've got something to do in the company." Obviously she was unhappy, because I had promised her to go and see with her. At the moment, the idea of divorce became clearer in my mind although it used to be something impossible to me. However, I found it rather difficult to tell my wife about it. No matter how mildly I mentioned it to her, she would be deeply hurt. Honestly, she was a good wife. Every evening she was busy preparing dinner. I was sitting in front of the TV. The dinner was ready soon. Then we watched TV together or, I was lounging before the computer, visualising Dew's body. This was the means of my entertainment.

One day I said to her in a slight joking way. "Suppose we divorce, what will you do?" She stared at me for a few seconds without a word. Apparently she believed that divorce was something too far away from her. I couldn't imagine how she would react once she got to know I was serious.

 When my wife went to my office, Dew had just stepped out. Almost all the staff looked at my wife with a sympathetic eye and tried to hide something while talking with her. She seemed to have got some hint. She gently smiled at my subordinates. But I read some hurt in her eyes.

 Once again, Dew said to me. "He Ning, divorce her, O.K.?" Then we live together. I nodded. I knew I could not hesitate any more.

 When my wife served the last dish, I held her hand. "I've got something to tell you". She sat down and ate quietly. Again I observed the hurt in her eyes. Suddenly I didn't know how to open my mouth. But I had to let her know what I was thinking. I want to divorce. I raised the serious topic calmly. She didn't seem to be much annoyed by my words, instead she asked me softly, "Why?" I'm serious. I avoided her question. This so-called answer turned her angry. She threw away the chopsticks and shouted at me. "You are not a man!" At that night, we didn't talk to each other. She was weeping. I knew she wanted to find out what had happened to our marriage. But I could hardly give her a satisfactory answer, because my heart had gone to Dew.

 With a deep sense of guilt, I drafted a divorce agreement which stated that she could own our house, our car, and 30% stake of my company. She glanced at it and then tore it into pieces. I felt a pain in my heart. The woman who had been living ten years with me would become a stranger one day. But I could not take back what I had said. Finally she cried loudly in front of me, which was what I had expected to see. To me her cry was actually a kind of release. The idea of divorce which had obsessed me for several weeks seemed to be firmer and clearer.

 A late night, I came back home after entertaining my clients. I saw her writing something at the table. I fell asleep fast. When I woke up, I found she was still there. I turned over and was asleep again. She brought up her divorce conditions. She didn't want anything from me, but I was supposed to give her one month's time before divorce, and in the month's time we must live as normal life as possible. Her reason was simple. Our son would finish his summer vacation a month later and she didn't want him to see our marriage broken. She passed me the agreement she drafted, and then asked me, "He Ning, do you still remember how I entered our bridal room on the wedding day?" This question suddenly brought back all those wonderful memories to me. I nodded and said, "I remember." "You carried me in your arms." She continued, "So, I have a requirement, that is, you carry me out in your arms on the day when we divorce. From now to the end of this month, you must carry me out from the bedroom to the door every morning." I accepted with a smile. I knew she missed those sweet days and wished to end her marriage with a romantic form.

 I told Dew about my wife's divorce conditions. She laughed loudly and thought it was absurd. "No matter what tricks she does, she has to face the result of divorce." She said scornfully. Her words more or less made me feel uncomfortable.

 My wife and I hadn't had any body contact since my divorce intention was explicitly expressed. We even treated each other as a stranger. So when I carried her out for the first day, we both appeared clumsy. Our son clapped behind us, daddy is holding mummy in his arms. His words brought me a sense of pain. From the bedroom to the sitting room, then to the door, I walked over ten meters with her in my arms.

She closed her eyes and said softly. "Let us start from today, don't tell our son." I nodded, feeling somewhat upset. I put her down outside the door. She went to wait for bus, I drove to office.

 On the second day, both of us acted much more easily. She leaned on my chest. We were so close that I could smell the fragrance of her blouse. I realised that I hadn't looked at this intimate woman carefully for a long time. I found she was not young any more. There were some fine wrinkles on her face.

 On the third day, she whispered to me, "The outside garden is being demolished. Be careful when you pass there."

 On the fourth day, when I lifted her up, I seemed to feel that we were still an intimate couple and I was holding my sweetheart in my arms. The visualisation of Dew became vaguer.

On the fifth and sixth day, she kept reminding me something, such as, where she put the ironed shirts, I should be careful while cooking, etc. I nodded. The sense of intimacy was even stronger. I didn't tell Dew about this. I felt it was easier to carry her. Perhaps the everyday workout made me stronger.

 I said to her, "It seems not difficult to carry you now." She was picking her dresses. I was waiting to carry her out. She tried quite a few but could not find a suitable one. Then she sighed, "All my dresses have grown fatter." I smiled. But I suddenly realised that it was because she was thinner that I could carry her more easily, not because I was stronger. I knew she had buried all the bitterness in her heart. Again, I felt a sense of pain. Subconsciously I reached out a hand to touch her head. Our son came in at the moment. "Dad, it's time to carry mum out." He said. To him, seeing his father carrying his mother out had been an essential part of his life. She gestured our son to come closer and hugged him tightly. I turned my face because I was afraid I would change my mind at the last minute. I held her in my arms, walking from the bedroom, through the sitting room, to the hallway. Her hand surrounded my neck softly and naturally. I held her body tightly, as if we came back to our wedding day. But her much lighter weight made me sad.

On the last day, when I held her in my arms I could hardly move a step. Our son had gone to school. She said, "Actually I hope you will hold me in your arms until we are old." I held her tightly and said, "Both you and I didn't notice that our life was lack of such intimacy."

 I jumped out of the car swiftly without locking the door. I was afraid any delay would make me change my decision. I walked upstairs. Dew opened the door. I said to her, "Sorry, Dew, I won't divorce. I'm serious." She looked at me, astonished. Then she touched my forehead, "You got no fever." I moved her hand off my head. "Sorry, Dew. I can only say sorry to you.

 I won't divorce. My marriage life was boring probably because she and I didn't value the details of life, not because we didn't love each other any more. Now I understand that since I carried her into the home, she gave birth to our child, I am supposed to hold her until I am old. So I have to say sorry to you."

Dew seemed to suddenly wake up. She gave me a loud slap and then slammed the door and burst into cry. I walked downstairs and drove to the office.

When I passed the floral shop on the way, I ordered a bouquet for my wife which was her favourite. The salesgirl asked me to write the greeting words on the card. I smiled and wrote. "I'll carry you out every morning until we are old." 

source