Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Membandingkan string pada php

9:00 PM Add Comment
Selamat datang kawan kawan di blog saya yang sederhana ini. Oke sebelumnya saya ingin mengingatkan kepada kalian semua untuk melakukan social distancing karena itu dapat menghambat penyebaran virus corona, supaya tidak bosan saat kalian berdiam diri di rumah. kalian dapat belajar Bahasa Pemrograman yang akan saya jelaskan ini, oke langsung saja masuk kedalam materi



Oke saya kali ini akan berbagi mengenai fungsi dari strcmp di php . apa sih strcmp() fungsinya ? fungsi strcmp() itu menbandingan dua buah string jika stringnya sama maka akan menghasilnya nilai 0 dan jika berbeda maka akan meghasilkan selain 0 bisa 1,2,3 pokonya selain 0 . Oke sekarang gimana sih saya menggunakannya ? oke langsung akan kita coba .

Baca Juga : Validasi dengan php

<?php
$tes=strcmp("rahasia","rahasia");
echo $tes;
?>

Karena itu sama maka akan menghasilkan nilai 0 . dan kalo kita bedakan misal gini .

<?php
$tes=strcmp("rahasia","rahasia12");
echo $tes;
?>

akan menhasilkan nilai -2 karena string yang kedua lebih banyak dari string1 . kalo yang string 1 lebih banyak dari string dua akan menhasilkan nilai 1 . Bro kalo itu lebih tepatnya membandingkan jumlah string satu dengan string 2 ? bukan gitu karena dari awal ada sama sampai ke huruf a terakhir , coba kalo kita ganti dari huruf awalnya salah

<?php
$tes=strcmp("rahasia","salahdariawal");
echo $tes;
?>

Baca Juga : Keunggulan PHP 7

nah huruf awal string pertama adalah r dan string kedua adalah huruf s jadi sudah bedakan , maka akan menghasilkan nilai -1 . Bro emang keuntungan membandingkan dua string ini untuk apa ya ? membandingkan dua string ini penting terutama untuk login , jadi menyamakan yang di inputkan user dan juga yang ada di database , jika ada yang sama maka berhasil login dan jika berbagi maka akan menampilkan bahwa password atau id salah .

Oke mungkin itu dia cara untuk membandingkan string di php . Semoga menambah wawasan dan juga tentunya bermanfaat . Sampai jumpa di artikel yang lainnya yang lebih menarik dan juga lebih bermanfaat .

Session dan cookie di php

9:30 PM 2 Comments
Selamat datang kawan kawan di blog saya yang sederhana ini . Oke sebelumnya saya ingin mengingatkan kepada kalian semua untuk melakukan social distancing karena itu dapat menghambat penyebaran virus corona, supaya tidak bosan saat kalian berdiam diri di rumah. kalian dapat belajar Bahasa Pemrograman yang akan saya jelaskan ini, oke langsung saja masuk kedalam materi 



Oke sekarang saya akan kembali lagi membahas mengenai php . Kali ini saya akan membahas mengenai session dan cookie di php . Bro bukanya cookie itu makanan ? memang sih makanan tapi di php juga ada yang jelas kalo di php bukan makanan .

Apa itu session dan cookie ?


Oke kalo gitu apa itu cookie? cookie adalah informasi yang berupa file kecil yang ditanam pada komputer client. Cookies biasanya tidak cocok digunakan untuk login kalo di php , dengan waktu yang ditentukan oleh  developer . Kalo  session apa? kalo session sama dengan cookie hanya kalo cookie waktunya di tentukan oleh developer dan kalo session ini berakhir ketika browser di tutup tetapi lebih aman di banding dengan cookie karena disimpan di sisi server , kalo cookie disimpan di sisi client di browsernya .

Baca Juga : Array pada Java

Bagaimana penulisanya ?

Oke kawan kawan sudah mengenal dan mengetahui apa itu session dan cookie dan sekarang , pertanyaannya adalah bagaimana cara penulisannya / penggunaannya ? kita akan mulai bahas yang pertama dulu yaitu session .

Cara menggunakan session 

Oke untuk menggunakan session kita harus menuliskan memulai session dulu yaitu session_start(); lalu diikuti dengan global variablenya . Oke gimana caranya ? langsung aja kecontonnya 

<?php 
session_start(); //untuk memulai sessionnya 
$_SESSION['tes']="aku adalah session";
echo "kamu siapa ? ".$_SESSION['tes'];
?>


Bro katanya session itu global variable ? oke kalo mau di buktikan kita buat lagi file baru .

<?php
session_start();
echo "oh jadi kamu ".$_SESSION['tes'];
?>



hanya perlu memangil si $_SESSION['tes'] dan juga memulai sessionnya session_start(); , perlu diingat kalo mau memulai session harus di paling atas . Session akan terhapus jika browser di tutup , nah pernyaannya adalah kan kalo di web web ada login dan logout , nah loguot itukan tinggal clik lalu kehapus sessionnya , nah cara menghapus session tanpa harus sih client tertutup gimana  ? Oke kita akan buat file baru yang berfungsi menhapus session .

<?php
session_start();
unset($_SESSION['tes']);
echo $_SESSION['tes'];
?>



Jadi untuk menghapus session dengan cara unset($_SESSION['namasession']) maka session akan terhapus . Gimana mudahkan cara menggunakan session itu tinggal ketik ketik ketik selesai .

Baca Juga : Java Membuat Variable

Cara menggunakan cookie

Oke tadi saya sudah bahas session sekarang kita bahas cookie . Ingat jangan pada lapar kalo mengebahas cookie , karena cookie di php itu gak enak . Oke langsung aja cara menggunakannya gimana ?

<?php 
setcookie("tes","cookie",time()+3600,"/");
echo "apa kamu lapa ? makan ".$_COOKIE['tes'];
?>

Cara menulis cookie dengan cara setcookie("nama_cookie","nilainya",lama_waktunya,path_sebuah_cookie);

jadi kalo di baca set cookie dengan nama = tes dan nilainya=cookie selama=3600 server cookie=/ . dan kita tinggal memanggilnya dengan cara $_COOKIE['nama_cookie']; . Seperti pernah saya bilang cookie itu tersimpan di sisi client atau browsernya mana sih buktinya ? coba kita lakuan inspect elemen dan lihat di bagian resources lalu cookie . Dan akan ada cookie tes dengan nilainya .


Oke sekarang bagaimana cara menghapus cookienya , sama seperti session dengan cara unset untuk mengosongkan global variablenya dan waktunya di ubah jadi sebelumnya atau minus , caranya ?

<?php
unset($_COOKIE['tes']);
setcookie("tes","cookie",time()-3600,"/");
?>

Coba inspect element lagi dan cookie yang namanya tes akan hilang .

Gimana mudah bukan menggunakan cookie dan juga session itu . Oke semoga menambah wawasan dan juga tentunya bermanfaat . Terimakasih telah berkenan membaca artikel ini . Sampai jumpa di artikel yang lainnya yang lebih menarik dan juga lebih bermanfaat .

keunggulan php 7

3:30 AM Add Comment

Keunggulan PHP 7

Ada berbagai keunggulan yang ditawarkan PHP 7.2 dibandingkan dengan versi sebelumnya. Dikutip dari  sumber php.net, ada beberapa fitur yang merupakan perbaikan dari versi sebelumnya seperti Scalar type declarations, Return type declarations, Anonymous classes, Generator Return Expressions dan sebagainya. Selain itu dikutip dari sumber  Dev.to, PHP 7.2 memiliki sistem security yang lebih baik karena sudah memasukkan Modern Cryptography di dalamnya. PHP 7.2 telah support Argon2 serta Libsodium untuk mengamankan password. Perlu diketahui bahwa Libsodium merupakan software library untuk enkripsi, dekripsi, signature serta password hashing.

Baca Juga : Pengertian Cisco Packet Tracer

Jika sebelumnya anda menggunakan php yang lama kemudian terjadi error dengan koneksi ke database anda bisa lakukan dengan contoh di bawah ini.
Contoh Untuk koneksi ke database dengan menggunakan php 7


Keunggulan PHP 7


Koneksi ke Database dengan Script PHP

<?php
//mendefenisikan nama server. dafault server lokal anda adalah 'localhost'
define("SERVER","localhost");

define("USER","root");
//mendefenisikan nama user pada database MySQL. dafault user server lokal adalah 'root'

define("PASS","");
//mendefenisikan password pada database MySQL. dafault pass server lokal adalah kosong.

$connect=mysqli_connect(SERVER, USER, PASS);
if (mysqli_connect_errno())
{
//Jika koneksi gagal, tampilkan pesan ini
echo "Koneksi Gagal: " . mysqli_connect_error();
}

//Jika koneksi sukses, tampilkan pesan ini
echo "Koneksi Sukses";
?>

Dikutip dari beberapa sumber

IF pada pemrograman javascript

9:37 PM Add Comment
Logo IF

IF adalah keyword dalam bahasa pemrograman untuk menyatakan kondisi. bahasa enaknya jika ini benar maka ini kalau salah ya ini. 

di javascript if mirip sekali denga pemrograman lainnya

sintaks dasar
if(kondisi){

  statement

}
contoh 
var i = 5
if(i == 5){
  alert("variabel i adalah angka 5");
}
penjelasannya jika variabel i terisi 5, maka statement alert akan dijalankan. yaitu akan muncul jendela peringatan. jika tidak maka tidak menjalankan statement apapun. untuk menambahkannya
ditambahkan else

sintaks

if(kondisi){

  statement jika benar

}

else{

  statement jika salah

}

contoh


var i = 5

if(i > 10){

  alert("Angka lebih dari 10");

}

else{

  alert("bukan angka lebih dari 10");

}
maka outputnya adalah jendela peringatan yang isinya bukan angka lebih dari 10, karena tidak memenuhi status kondisi.

selain itu ada juga sintaks if yang dikhususkan untuk pengkondisian yang kecil

sintaks 

(i >= 0) ? statement benar : statement salah");

contoh
var i = 5

(i >= 0) ? alert("angka lebih dari 0") : alert("angka kurang dari 0");

semoga bermanfaat

Cara Membuat CRUD AJAX CodeIgniter (Penjelasan + jQuery + Material Dashboard) Lengkap

5:09 AM Add Comment
Codeigniter

Pada Aplikasi web, didalamnya pasti tidak terlepas dari manajemen data. Manajemen tersebut berupa menampilkan, menambah, mengedit, dan menghapus data (CRUD)

Pada artikel sebelumnya, kita sudah belajar mengenai dasar-dasar bagaimana cara membuat halaman CRUD database. Baca: Menampilkan data (CRUD) dari database. Pada artikel ini kita akan belajar membuat CRUD database didalam template Material Dashboard dan menggunakan sistem AJAX, yang berarti melakukan aktifitas CRUD tanpa refresh halaman.

Ajax adalah singkatan dari Asynchronous Javascript And Xmlhttp. Ajax dapat membuat request dan mendapatkan response dari belakang layar (background process) tanpa melakukan refresh pada halaman. 

Download source code ada dibawah.

Pada artikel ini, kita akan membuat halaman CRUD seperti berikut:




Menyiapkan Project

  • Menyiapkan Database
    • Masuk ke PhpMyAdmin, buat database dan tabelnya seperti berikut.
      (nama database: perpustakaandb)
    • Isi tabel tersebut, 1 atau 2 buah data, Isi kolom data terserah anda
  • Mengkonfigurasi Project CI
    • Kita akan menggunakan templating yang sudah dibuat pada artikel sebelumnya.
    • Ganti nama foldernya, (pada artikel ini kita namai "ciajax")
    • Buka file config.php pada application/config, rubah isi base_url menjadi alamat yang benar (localhost/ciajax)
    • Tambahkan library database pada application/config/autoload.php


    • Masih pada folder yang sama, buka database.php, isi parameter database sesuai dengan database yang telah kita buat



Membuat Model


  • Buka folder application/models, buat file bernama BukuModel.php. Isikan dengan kode berikut: 

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class BukuModel extends CI_Model {
 public $table = 'buku';
  
 public function show($limit, $offset)
 {
  $query = $this->db->get($this->table, $limit, $offset);
  $data['object'] = $query->result();
  $data['array'] = $query->result_array();
  $data['count'] = $query->num_rows();
  return $data;
 }

 public function single($id)
 {
  $query = $this->db->get_where($this->table, array('id' => $id));
  $data['object'] = $query->row();
  $data['array'] = $query->row_array();
  $data['count'] = $query->num_rows();
  return $data;
 }

 public function insert($data)
 {
  return $this->db->insert($this->table, $data);
 }

 public function update($data, $id)
 {
  return $this->db->update($this->table, $data, array('id' => $id));
 }

 public function delete($id)
 {
  return $this->db->delete($this->table, array('id' => $id));
 }
}

/* End of file BukuModel.php */
/* Location: ./application/models/BukuModel.php */
?>

Penjelasan

  1. Model  ini memuat fungsi dasar CRUD seperti
    show untuk menampilkan data banyak
    single untuk menampilkan 1 data
    insert, update dan delete
  2. Pada method model show() dan single(), nilai kembalian dari method tersebut berupa array yang juga memuat count atau jumlah data.


Membuat Tampilan
  • Membuat controller
    • Buat controller Data.php, kemudian buat method buku() 
    • Sesuai dengan artikel sebelumnya, tetapkan elemen dinamisnya dan load view ke data/buku/list.php. Source Code Method seperti berikut:

 public function buku()
 {
  // Judul
  $data['ui_app_name'] = 'Perpus-Sys';
  $data['ui_title'] = 'Perpus-Sys - Data Buku';

  // CSS & JS
  $data['ui_css'] = array('custom/css/default.css');
  $data['ui_js'] = array();

  // Navigasi
  $data['ui_sidebar_nav'] = array(
   'Data|book' => array(
    'Data Buku|book|' .site_url('data/buku'),
    'Data Siswa|face|#',
   )
  );
  $data['ui_sidebar_active'] = 'Data|Data Buku';
  $data['ui_top_nav'] = array(
   'Buku|book|' .site_url('data/buku'),
   'Pegawai|face|#'
  );
  $data['ui_top_nav_active'] = 'Buku';
  $this->load->view('data/buku/list', $data);
 }

  • Membuat view
    • Pada folder application/views buat file list.php dan letakkan pada folder data/buku/list.php
    • Pada artikel sebelumnya, sudah dijelaskan bahwa struktur utama UI view seperti berikut, copy code berikut kedalam file view anda

<?php $this->view('template/header.php')?>
<?php $this->view('template/navigation.php')?>

<!-- KONTEN UTAMA DISINI -->

<?php $this->view('template/js_script.php') ?>
<script type="text/javascript">

//  Kode Javascript jQuery disini

</script>
<?php $this->view('template/footer.php')?>

    • Kita buat tampilan UI pada konten utama, isikan kode view html bootstrap berikut pada bagian konten

<div class="row">
  <div class="col-sm-12">
    <div class="card mb-0">
      <div class="card-body pt-0">
        <form>
          <div class="row justify-content-center">
            <div class="col-2 col-sm-auto">
              <div class="form-group mb-0 pb-0" style="margin-top: 20px">
                <button id="filter-previous_page" class="btn btn-white btn-round btn-just-icon" type="button" data-toggle="tooltip" data-placement="top" title="Halaman sebelumnya">&laquo;</button>
              </div>
            </div>
            <div class="col-4 col-sm-1 pr-0">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Page</label>
                <input type="number" id="filter-page" class="form-control" data-toggle="tooltip" title="Halaman maksimum: 42" value="1">
              </div>
            </div>
            <div class="col-4 col-sm-1 pl-0">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Limit</label>
                <input type="number" id="filter-limit" class="form-control" value="50">
              </div>
            </div>
            <div class="col-2 col-sm-auto pl-0">
              <div class="form-group mb-0 pb-0" style="margin-top: 20px">
                <button id="filter-next_page" class="btn btn-white btn-round btn-just-icon" type="button" data-toggle="tooltip" data-placement="top" title="Halaman selanjutnya">&raquo;</button>
              </div>
            </div>
            <div class="col-9 col-sm-4 pr-0">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Cari Judul Buku</label>
                <div class="input-group">
                  <input type="text" id="filter-cari" class="form-control">
                </div>
              </div>
            </div>
            <div class="col-auto pl-0 col-sm-auto">
              <div class="form-group mb-0 pb-0" style="margin-top: 20px">
                <button class="btn btn-white btn-round btn-just-icon" type="button" data-toggle="tooltip" data-placement="top" title="Halaman selanjutnya">
                  <i class="material-icons">search</i>
                </button>
              </div>
            </div>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>
<div class="row">
  <div class="col-sm-12">
    <div class="card">
      <div class="card-header card-header-tabs card-header-primary">
        <div class="nav-tabs-navigation">
          <div class="nav-tabs-wrapper">
            <h4 class="card-title nav-tabs-title">Data Buku</h4>
            <ul class="nav nav-tabs justify-content-end">
              <li class="nav nav-item">
                <a class="nav-link" href="#" data-toggle="modal" data-target="#modal-tambah_buku">
                  <i class="material-icons">add</i>
                  Tambah Buku
                </a>
              </li>
            </ul>
          </div>
        </div>
      </div>
      <div class="card-body">
        <div class="table-responsive">
          <table class="table table-striped table-hover">
            <thead class="text-primary">
              <tr>
                <th>No</th>
                <th>Judul</th>
                <th>Pengarang</th>
                <th>Penerbit</th>
                <th>Tahun</th>
                <th>Jumlah Buku</th>
                <th>Jumlah Eksemplar</th>
                <th>Kategori</th>
                <th></th>
              </tr>
            </thead>
            <tbody id="data-load-buku">
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="modal fade" id="modal-tambah_buku">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title">Tambah data buku</h4>
        <button class="close" data-dismiss="modal" type="button">&times;</button>
      </div>
      <div class="modal-body">
        <form id="form-tambah_buku">
          <div class="row">
            <div class="col-12">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Judul Buku</label>
                <input type="text" name="judul" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-5">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Pengarang</label>
                <input type="text" name="pengarang" class="form-control">
              </div>
            </div>
            <div class="col-sm-5">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Penerbit</label>
                <input type="text" name="penerbit" class="form-control">
              </div>
            </div>
            <div class="col-sm-2">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Tahun</label>
                <input type="number" name="tahun" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-6">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Jumlah Buku</label>
                <input type="number" name="jumlah_buku" class="form-control">
              </div>
            </div>
            <div class="col-sm-6">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Jumlah Eksemplar</label>
                <input type="number" name="jumlah_eksemplar" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Kategori</label>
                <input type="text" name="kategori" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              <div class="form-group">
                <input type="submit" name="submit" class="btn btn-block btn-primary" value="Tambah">
              </div>
            </div>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

<div class="modal fade" id="modal-edit_buku">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title">Edit Data</h4>
        <button type="button" class="close" data-dismiss='modal'>&times;</button>
      </div>
      <div class="modal-body">
        <form id="form-edit_buku">
          <input type="hidden" name="id">
          <div class="row">
            <div class="col-12">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Judul Buku</label>
                <input type="text" name="judul" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-5">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Pengarang</label>
                <input type="text" name="pengarang" class="form-control">
              </div>
            </div>
            <div class="col-sm-5">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Penerbit</label>
                <input type="text" name="penerbit" class="form-control">
              </div>
            </div>
            <div class="col-sm-2">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Tahun</label>
                <input type="number" name="tahun" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-6">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Jumlah Buku</label>
                <input type="number" name="jumlah_buku" class="form-control">
              </div>
            </div>
            <div class="col-sm-6">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Jumlah Eksemplar</label>
                <input type="number" name="jumlah_eksemplar" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              <div class="form-group bmd-form-group">
                <label class="bmd-label-floating">Kategori</label>
                <input type="text" name="kategori" class="form-control">
              </div>
            </div>
          </div>
          <div class="row">
            <div class="col-sm-12">
              <div class="form-group">
                <input type="submit" name="submit" class="btn btn-block btn-primary" value="Edit">
              </div>
            </div>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

Penjelasan



  1. Tampilan UI secara umum terdiri dari filter data (berupa tombol dan input) dan  tabel
  2. Pada tabel di tag tbody, ditambahkan id #data-load-buku. Pada tbody inilah data dimuat oleh ajax
  3. Selain itu juga terdapat tombol Tambah Buku. Tombol berikut memiliki atribut bootstrap untuk membuka modal berisi tambah data.
Membuat Method untuk ajax

Sama dengan view, ajax juga mengakses method controller untuk mendapatkan data dari database. Singkatnya ajax dapat mengakses controller. Seperti yang kita tahu jika kita bisa mengakses controller, kita bisa mengakses segalanya termasuk model database.


  • Kita pisahkan method untuk menampilkan halaman dengan method untuk melayani ajax.
  • Karena untuk menampilkan data dari database lebih rumit dari yang lain (seperti ada filter, paginasi dll), maka kita pisahkan methodnya menjadi read_buku() untuk menampilkan sementara write_buku() untuk menambah, edit, dan hapus buku.
  • Secara keseluruhan, method tersebut seperti berikut (tambahkan kedalam controller Data.php)

public function read_buku($mode = 'single', $ui = FALSE, $pagination = FALSE)
{
 $this->load->model('BukuModel');

 // -----------------------------
 // Ambil semua data
 // -----------------------------
 if ($mode == 'show') {
  $this->db->start_cache();

  // Pagination
  $data['limit'] = $this->input->get('limit');
  if ($data['limit'] == '') {
   $data['limit'] = 0;
  }
  $data['page'] = $this->input->get('page');
  if ($data['page'] == '') {
   $data['page'] = 1;
  }
  $data['offset'] = ($data['page'] - 1) * $data['limit'];
  $this->db->stop_cache();

  // Pencarian Judul
  $cari = $this->input->get('cari');
  if ($cari != '') {
   $this->db->like('judul', $cari, 'BOTH');
  }

  // Pengurutan Data
  $order = $this->input->get('order');
  if ($order != '') {
   $this->db->order_by('id', $order);
  }

  // Pengambilan Data
  $data['data_buku'] = $this->BukuModel->show($data['limit'], $data['offset']);
  $this->db->flush_cache();

  // Route ke Pagination atau data
  if ($pagination != FALSE) {
   $data_buku_all = $this->BukuModel->show(0, 0);
   $pagination_data['limit'] = $data['limit'];
   $pagination_data['offset'] = $data['offset'];
   $pagination_data['page'] = $data['page'];
   $pagination_data['total_data'] = $data_buku_all['count'];
   $pagination_data['total_page'] = floor($pagination_data['total_data'] / $pagination_data['limit']);
   if (($pagination_data['total_data'] % $pagination_data['limit']) > 0) {
    $pagination_data['total_page']++; 
   }
   echo json_encode($pagination_data);
  }
  else {
   $this->load->view('data/buku/' .$ui, $data);
  }
 }

 // -------------------------------------
 // Ambil 1 Data
 // -------------------------------------
 else if ($mode == 'single') {
  $id = $this->input->get('id');
  $data = $this->BukuModel->single($id);
  echo json_encode($data);
 }
}

public function write_buku($mode)
{
 $this->load->model('BukuModel');
 if ($mode == 'insert') {
  if ($this->input->is_ajax_request()) {
   $data = array(
    'judul' => $this->input->post('judul'),
    'pengarang' => $this->input->post('pengarang'),
    'penerbit' => $this->input->post('penerbit'),
    'tahun' => $this->input->post('tahun'),
    'jumlah_buku' => $this->input->post('jumlah_buku'),
    'jumlah_eksemplar' => $this->input->post('jumlah_eksemplar'),
    'kategori' => $this->input->post('kategori')
   );
   $result = $this->BukuModel->insert($data);
   echo json_encode($result);
  }
 }
 else if ($mode == 'update') {
  if ($this->input->is_ajax_request()) {
   $id = $this->input->post('id');
   $data = array(
    'judul' => $this->input->post('judul'),
    'pengarang' => $this->input->post('pengarang'),
    'penerbit' => $this->input->post('penerbit'),
    'tahun' => $this->input->post('tahun'),
    'jumlah_buku' => $this->input->post('jumlah_buku'),
    'jumlah_eksemplar' => $this->input->post('jumlah_eksemplar'),
    'kategori' => $this->input->post('kategori')
   );
   $result = $this->BukuModel->update($data, $id);
   echo json_encode($result);
  }
 }
 else if ($mode == 'delete') {
  if ($this->input->is_ajax_request()) {
   $id = $this->input->post('id');
   $result = $this->BukuModel->delete($id);
   echo json_encode($result);
  }
 }
}

Penjelasan


  1. Pada method read_buku() terbagi 3 parameter, 
    1. pertama parameter mode yang berisi show atau single.
      show
       berfungsi untuk menampilkan data banyak,
      didalamnya kita bisa tambahkan filter seperti pencarian (db->like), order (db->order) dll.
    2. Parameter ui.
      Pada bagian show, saya tambahkan parameter ui untuk mendefinisikan view mana yang akan digunakan.
    3. Parameter pagination.
      jika parameter ini di isi, maka akan menampilkan data paginasi, seperti maksimum halaman, baris / halaman dll. 
  2. Jika Ajax mengakses ciajax/read_buku/show/ajax-list-1, maka akan muncul data buku pada view ajax-list-1.php
  3. Berbeda pada method write_buku(), didalamnya mempunyai parameter mode yang berisi insert, update atau delete

  • Langkah selanjutnya, kita buat view untuk ajax. pada folder application/views/data/buku buat file ajax-list-table.php. Copy kode berikut:

<?php 
 if ($data_buku['count'] > 0) {
  $no = 0 + $offset;
  foreach ($data_buku['object'] as $buku) {
   $no++;
?>
<tr>
 <td><?=$no?></td>
 <td><?=$buku->judul?></td>
 <td><?=$buku->pengarang?></td>
 <td><?=$buku->penerbit?></td>
 <td><?=$buku->tahun?></td>
 <td><?=$buku->jumlah_buku?></td>
 <td><?=$buku->jumlah_eksemplar?></td>
 <td><?=$buku->kategori?></td>
 <td>
  <a href="#" class="edit-data text-primary" data-id="<?=$buku->id?>">
   <i class="material-icons">edit</i>
  </a>
  <a href="#" class="hapus-data text-danger" data-id="<?=$buku->id?>">
   <i class="material-icons">delete</i>
  </a>
 </td>
</tr>
<?php
  }
 }
?>

Penjelasan


  1. Ingat saat membuat halaman view tadi?, kita sudah menyiapkan tabel dan mengosongkan isi dari <tbody>. File inilah yang akan ditempatkan didalam <tbody>
  2. File tersebut berisi baris tabel (<tr>)
  3. View ini dipanggil dari method read_buku() yang pada method tersebut kita sudah dapatkan data dari database dan ditampilkan di view ini menggunakan foreach.
  4. Yang paling inti adalah pada bagian link edit dan delete. Masing-masing memiliki atribut data-id yang berisi id setiap baris data. Id inilah yang nantinya diolah lewat script jQuery untuk mengedit dan menghapus data.
    Selain itu juga memiliki class edit-data dan hapus-data agar dapat dipanggil oleh jQuery nanti



  • Method + View untuk melayani ajax selesai, anda bisa akses ke (localhost/ciajax/data/read_buku/show/ajax-list-table?limit=50&page=1) . Maka akan muncul tampilan seperti berikut. Itu berarti, data berhasil didapatkan berupa kumpulan <tr> siap diakses oleh ajax



Membuat Script jQuery untuk setiap elemen

Disinilah inti dari tutorial ini. Semua elemen seperti tombol, inputan, load data buku di lakukan oleh Javascript. Pada bagian ini, langkah langkah dibawah saya buat terpisah agar anda dapat memahami dengan mudah
  • Masih berada di view anda, kode jQuery ini terletak pada bagian bawah setelah load template js_script.php


        ... kode ui sebelumnya
    </div>
</div>

<?php $this->view('template/js_script.php') ?>
<script type="text/javascript">

//  Kode Javascript jQuery disini

</script>
<?php $this->view('template/footer.php')?>


  •  Tambahkan kode dibawah ini, kedalam bagian kode jquery

// -------------------------------------
// Pemanggilan Ajax
// -------------------------------------
var read_buku = {
 limit: 50,
 page: 1
}
function refresh_buku() {
 $.ajax({
  url: '<?=site_url('data/read_buku/show/ajax-list-table/pagination')?>',
  type: 'GET',
  dataType: 'json',
  data: read_buku,
 })
 .done(function(data) {
  if (read_buku.page == 1) {
   $("#filter-previous_page").addClass('disabled');
  }
  else {
   $("#filter-previous_page").removeClass('disabled');
  }
  if (read_buku.page == data.total_page) {
   $("#filter-next_page").addClass('disabled');
  }
  else {
   $("#filter-next_page").removeClass('disabled');
  }
  $("#filter-page").attr('max', data.total_page);
  $("#filter-page").attr('title', 'Halaman Maksimum: ' + data.total_page);
  $("#filter-page").attr('data-original-title', 'Halaman Maksimum: ' + data.total_page);
  $.ajax({
   url: '<?=site_url('data/read_buku/show/ajax-list-table')?>',
   type: 'GET',
   dataType: 'html',
   data: read_buku,
  })
  .done(function(data) {
   $("#data-load-buku").fadeOut(100, function() {
    $.getScript('<?=site_url('assets/custom/js/default.js')?>');
    $("#data-load-buku").html(data).fadeIn(100);
    event_buku();
   });
  });
 });
}
refresh_buku();

// -------------------------------------
// Event setelah data buku dimuat
// -------------------------------------
function event_buku() {

 // ----------------------------------------
 // Event klik edit buku
 // ----------------------------------------
 ctx_modal_edit_buku = $("#modal-edit_buku");
 $(".edit-data").click(function(e) {
  id = $(this).data('id');
  $.ajax({
   url: '<?=site_url('data/read_buku/single')?>',
   type: 'GET',
   dataType: 'json',
   data: {id: id},
  })
  .done(function(data) {
   $("#form-edit_buku input[name='id']").val(data.object.id);
   $("#form-edit_buku input[name='judul']").val(data.object.judul);
   $("#form-edit_buku input[name='pengarang']").val(data.object.pengarang);
   $("#form-edit_buku input[name='penerbit']").val(data.object.penerbit);
   $("#form-edit_buku input[name='tahun']").val(data.object.tahun);
   $("#form-edit_buku input[name='jumlah_buku']").val(data.object.jumlah_buku);
   $("#form-edit_buku input[name='jumlah_eksemplar']").val(data.object.jumlah_eksemplar);
   $("#form-edit_buku input[name='kategori']").val(data.object.kategori);
   ctx_modal_edit_buku.modal('show').on('shown.bs.modal', function(e) {
    $("#form-edit_buku input[name='judul']").focus();
   });
  });
 });

 // ----------------------------------------
 // Hapus Data Buku
 // ----------------------------------------
 $(".hapus-data").click(function(e) {
  e.preventDefault();
  id = $(this).data('id');
  if (confirm("Anda yakin?")) {
   $.ajax({
    url: '<?=site_url('data/write_buku/delete')?>',
    type: 'POST',
    dataType: 'json',
    data: {id: id},
   })
   .done(function(data) {
    if (data) {
     refresh_buku();
     buat_notifikasi({
      icon: 'done_outline',
      message: "Data berhasil dihapus",
      type: 'success'
     });
    }
   });
  }
 });

}

// -------------------------------------
// Event Filter / Penyaringan Data
// -------------------------------------
var ctx_limit = $("#filter-limit"); 
var ctx_page = $("#filter-page"); 
var ctx_next_page = $("#filter-next_page"); 
var ctx_previous_page = $("#filter-previous_page"); 
var ctx_cari = $("#filter-cari");

ctx_limit.on('input', function(e) {
 value = $(this).val();
 if (value > 0) {
  read_buku.limit = value;
 }
 else {
  $(this).val(50);
 }
 $("#filter-page").val(1);
 read_buku.page = 1;
 refresh_buku();
});
ctx_page.on('input', function(e) {
 value = $(this).val();
 if (value > 0) {
  read_buku.page = value;
 }
 else {
  $(this).val(1);
 }
 refresh_buku();
});
ctx_next_page.click(function(e) {
 disabled = $(this).hasClass('disabled');
 if (!disabled) {
  read_buku.page++;
  ctx_page.val(read_buku.page);
  refresh_buku(); 
 }
});
ctx_previous_page.click(function(e) {
 disabled = $(this).hasClass('disabled');
 if (!disabled) {
  read_buku.page--;
  ctx_page.val(read_buku.page);
  refresh_buku(); 
 }
});
ctx_cari.on('input', function(e) {
 value = $(this).val();
 if (value != '') {
  read_buku.cari = value;
 }
 else {
  delete read_buku.cari;
 }
 refresh_buku();
});


// -------------------------------------
// Tambah Data Buku
// -------------------------------------
$("#form-tambah_buku").submit(function(e) {
 e.preventDefault();
 ctx_modal = $("#modal-tambah_buku");
 form = $(this);
 $.ajax({
  url: '<?=site_url('data/write_buku/insert')?>',
  type: 'POST',
  dataType: 'json',
  data: form.serialize(),
 })
 .done(function(data) {
  if (data) {
   form[0].reset();
   ctx_modal.modal('hide');
   buat_notifikasi({
    icon: 'done_outline',
    message: "Data berhasil ditambahkan",
    type: 'success'
   });
   refresh_buku();
  }
  else {
   alert('Tidak dapat terhubung dengan database');
  }
 });
});

// -------------------------------------
// Edit buku
// -------------------------------------
$("#form-edit_buku").submit(function(e) {
 e.preventDefault();
 form = $(this);
 $.ajax({
  url: '<?=site_url('data/write_buku/update')?>',
  type: 'POST',
  dataType: 'json',
  data: form.serialize(),
 })
 .done(function(data) {
  if (data) {
   form[0].reset();
   ctx_modal_edit_buku.modal('hide');
   buat_notifikasi({
    icon: 'done_outline',
    message: 'Data berhasil di edit',
    type: 'success'
   });
   refresh_buku();
  }
 });
});

Untuk penjelasan, pada script ini sudah tertulis didalam kode dalam bentuk comment. Jika comment  tersebut belum dimengerti, anda bisa tulis pertanyaan di kolom komentar

Semua siap, waktunya testing


  • Buka browser, ketikkan url localhost/ciajax/data/barang. Coba tambahkan, edit ataupun hapus data.


Kesimpulan

Pada dasarnya, alur data hampir sama dengan CRUD database biasa. 

Pada operasi read (menampilkan data)
Perbedaannya terdapat pada cara mendapatkan data. Jika pada CRUD database biasa, data ditampilkan bersamaan dengan tampilan utama. Data dari DB dilempar bersamaan dengan $this->load->view()

Namun jika CRUD Ajax, Tampilan utama dimuat terlebih dahulu dan saat tampilan sudah siap, kode jQuery Ajax diam diam mengakses method controller untuk mengambil data.

Pada operasi insert, update, delete (Tambah, Edit, Hapus)
Perbedaannya terdapat pada cara suatu form mengirimkan data. Pada CRUD biasa, form mengirimkan data dengan mengakses URL dalam method transfer POST, singkatnya form harus berpindah halaman untuk mengirimkan data, dan mendapat response berupa redirect ke list data lagi.

Sedangkan CRUD Ajax, saat form disubmit, kode Ajax menangkap data dan mencegah pergantian halaman. Selanjutnya, sama dengan CRUD biasa data tersebut diterima oleh method controller untuk diteruskan ke model.

Source Code (disertai file sql didalamnya)
ciajax, ~4 MB


Semoga bermanfaat untuk anda. Jika ada pertanyaan, silahkan isi pada kolom komentar. Saya mengusahakan untuk cepat membalas.

Membuat form login dengan PHP

5:44 PM Add Comment
Login di web dibuat untuk memberi hak akses bagi user user tertentu. jadi orang yang mengakses web kita mempunyai identitas diri tidak berstatus anonim.

di postingan ini saya coba untuk menjelaskan se jelas mungkin

  • Buka Server XAMPP, aktifkan apache dan sql server
  • sekarang siapkan folder projectnya, kalau untuk coba coba gunakan seperti gambar dibawah

index.php -- Halaman login
success.php -- Halaman sukses jika login berhasil

Index.php - coding

  • membuat form

<form action="index.php" method="post">
    <input type="text" name="username" placeholder="Username">
    <input type="password" name="password" placeholder="Password">
    <input type="submit" name="submit">
</form>
Penjelasannya, untuk membuat form menggunakan tag <form>....</form>
dan untuk membuat inputan text atau passwordnya menggunakan tag <input> 

di tag input ada banyak sekali tipe inputan seperti teks biasa, password dll.
maka ditambahkan atribut type="text" untuk teks dan type="password" untuk password. selain itu banyak sekali tipe input nya. klik disini untuk melihat detail tipe input (via w3school)

name="blablabla" adalah nama dari masing masing bidang inputan. name ini untuk membedakan antara input satu dengan lainnya. isi dari name inilah yang nanti dipanggil di PHP

placeholder adalah teks penjelasan untuk bidang input. muncul saat bidang input kosong


  • Script PHP

<?php
            if(isset($_POST['submit'])){
                $username = $_POST['username'];
                $password = $_POST['password'];
                if($username == "admin" && $password == "admin"){
                    echo "<meta http-equiv='refresh' content='0;URL=success.php'>";
                }
                else{
                    echo "Username atau password salah";
                }
            }
        ?>
 Kronologi  / cara kerja sintaks

if(isset($_POST['submit])){
..
}  sintaks ini mengecek apakah tombol submit ditekan atau belum. jika ditekan maka sintaks didalamnya akan dijalankan.

$username = $_POST['username'];
$password = $_POST['password'];

adalah memberikan nilai pada variabel. contoh: isi dari username akan diisikan ke variabel $username. fungsi dari sintaks ini adalah biar tidak kepanjangan. coba dilihat $_POST['username'] dengan $username lebih pendek mana?.

if($username == "admin" && $password == "admin"){
     echo "<meta http-equiv='refresh' content='0;URL=success.php'>";
}

Maksud dari sintaks ini adalah jika username diisikan admin dan password diisikan admin maka sintaks didalamnya akan dijalankan.
sintaks yang saya tulis diatas adalah sintaks mengeluarkan tag meta html yang gunanya untuk menuju halaman success.php secara otomatis.

else{
   echo "Username atau password salah";
}

sintaks ini digunakan untuk statement saat salah inputan.

Belajar CodeIgniter Level Pemula dengan Mudah dan Lengkap (Artikel Bertahap)

3:12 AM Add Comment

Halo para pembaca Wildanie, sudah lama sekali (1 tahun) hehe tidak pernah berbagi ilmu seperti dulu. Namun pada saat itu saya banyak sekali Pengetahuan baru dan sangat tidak sabar untuk saya bagikan di blog ini untuk pembaca yang terhormat.


Di postingan kali ini kita akan membahas dan belajar tentang CodeIgniter. CodeIgniter sendiri adalah framework PHP yang sering sekali digunakan sampai sekarang. CodeIgniter menyediakan banyak bantuan berupa helper, library atau lainnya untuk mempercepat pekerjaan para programmer. Selain itu Framework ini juga dapat menata file pekerjaan anda, agar teroganisir. Hal ini, membuat CodeIgniter cocok digunakan untuk project berskala besar.

Saya sarankan anda membaca artikel ini secara lengkap dari atas sampai bawah, karena saya membuat tutorial ini sambil mempraktekannya, mohon maaf jika kalimatnya sangat panjang dan mendetail. Di setiap langkah, saya ungkapkan apa yang ada didalam pikiran, apa yang harus diketahui oleh seorang pemula pada umumnya.


Bagian Tutorial:


Mengapa menggunakan CodeIgniter

  • Saat kita membuat Web dengan menggunakan bahasa pemrograman PHP secara Native/Murni kita sering menjumpai banyak pola perulangan. Serasa kita mengetikkan code yang sama berulang kali. dengan CodeIgniter anda dapat mengorganisir file dan alur logika yang anda buat dengan mudah, karena CodeIgniter sendiri menggunakan konsep Model View Controller (MVC). 
  • Banyak Helper yang dapat digunakan
    Contohnya saat kita hendak membuat upload file, kita tinggal panggil fungsi / objeknya.
  • Pengambilan data dari database yang lebih mudah
    di CodeIgniter juga sudah disediakan Query Builder. Misal kita hendak mengambil data tabel siswa dari database. kita cukup buat saja query buildernya di model. kemudian saat hendak melakukan INSERT INTO, di CodeIgniter cukup masukkan Array pada parameter fungsi saja.
  • Penerimaan GET/POST lebih mudah dan aman
  • Terorganisir, sehingga cocok untuk pengembangan aplikasi berskala besar.
  • dan masih banyak lagi

Mempersiapkan Project CodeIgniter
    • Menyiapkan Lembar Kerja
      • Langkah awal, siapkan Text Editor favorit anda. Pada artikel ini, saya menggunakan Sublime Text 3. Jika anda belum menentukan text editor yang cocok, saya sarankan untuk menggunakan software ini.
      • Download CodeIgniter terbaru, anda bisa klik link download dibawah
    CodeIgniter, ~ 2,6 Mb

      • CodeIgniter membutuhkan server seperti XAMPP/WAMP, pastikan anda sudah menginstallnya.
      • Buat Folder Project anda (pada artikel kali ini: "belajar_ci"), letakkan didalam folder php di server anda (htdocs untuk XAMPP atau www untuk WAMP) .
      • Extract isi dari CodeIgniter yang didownload tadi. 
      • Hidupkan Server lalu coba akses project lewat browser, maka muncul tampilan seperti dibawah.


    • Menghilangkan index.php pada URL
    Pada kondisi default CodeIgniter, URL yang dimasukkan harus ada index.php, misalnya: localhost/belajarCI/index.php/welcome. Kita harus mengetikkan index.php pada kolom url untuk memanggil controller Welcome. Pada umumnya, URL suatu website berformat seperti ini: localhost/belajar_ci/welcome.
    Sebenarnya masalah ini termasuk minor / hal kecil, namun bagi sebagian besar programmer, hal ini mengganggu saat kita mengakses halaman tertentu saat deploy, lagi pula cukup mudah untuk mengatasi hal ini.


      • Buat File .htaccess didalam folder project, jadi untuk saya file ini berlokasi di belajarci/.htaccess
      • didalam file .htaccess tersebut, copy-paste kode berikut ini
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]


      • Buka config.php pada folder belajar_ci/application/config/. 
        • Rubah isi dari elemen base_url ke alamat project anda. untuk saya berarti "http://localhost/belajarci"
        • kosongkan elemen index_page
        • dan pastikan elemen uri_protocol berisi "REQUEST_URI"
      • akses melalui browser anda tanpa menuliskan index.php. untuk saya localhost/belajar_ci/welcome


    Belajar membuat halaman web

    • Membuat controller
    Konsep Dasar

    Controller pada CodeIgniter berfungsi sebagai Router, artinya:
    1. jika kita mengakses "localhost/belajar_ci/data/buku", maka yang dieksekusi adalah fungsi buku() didalam controller Data.php. namun 
    2. jika mengakses "localhost/belajar_ci/data" saja, maka yang dieksekusi adalah fungsi index() pada controller Welcome.php
    3. Secara singkat formatnya seperti dibawah
      "localhost/belajar_ci/nama_controller/fungsi". fungsi ini disebut juga dengan method. jika method tidak diisikan pada url, maka yang dieksekusi adalah method/fungsi index().


      • untuk membuat controller, masuk ke folder belajar_ci/application/controllers. buat file baru beri nama sesuai nama controllernya dengan huruf kapital. 
      • Untuk sekarang, buat file Data.php. kemudian buka menggunakan text editor, tuliskan kode php seperti dibawah.

    <?php
    class Data extends CI_Controller {
     public function buku()
     {
      echo "<h1>Ini Data Buku</h1>";
     }
    }
    ?>

    Penjelasan

    1. Controller harus berupa class yang extends ke CI_Controller
    2. Pada kode diatas, terdapat method buku() dengan kode PHP untuk menampilkan teks didalamnya.
      Jika anda belum familiar dengan kode PHP,



      • Kemudian, coba akses url "localhost/belajar_ci/data/buku". lihat apa yang terjadi

      • Maka muncul tampilan seperti diatas. 
      • Ok, kita masuk ke penjelasan.
        • Saat kita mengakses belajar_ci/data/buku berarti sama dengan menjalankan method buku() di controller Data
        • Dalam kode diatas, method tersebut berisi statement menampilkan heading 1 yang berisi "Ini Data Buku".

    • Membuat View
    Konsep Dasar

    View pada dasarnya adalah file yang berisi html bertujuan untuk menampilkan tampilan kepada pengguna. kita tidak mungkin menuliskan html / css pada controller yang sejatinya adalah file khusus PHP (method dan logika).

      • Untuk membuat View, masuk ke folder belajar_ci/application/views/ , anda dapat membuat file dan folder disini. 
      • Saya sarankan untuk membuat folder di setiap konteks halaman agar filenya terorganisir secara rapi. contohnya: saat anda mau membuat file view data buku, ada baiknya anda letakkan file view buku tadi didalam folder "Data" karena ada kemungkinan untuk membuat file lain yang konteksnya sama, misalnya: file view data siswa, data pegawai yang juga termasuk Data

      • Ok. kita kerjakan view buku (buku.php). Mari buat tampilan sederhana, anda bisa copy-paste kode berikut

    <!DOCTYPE html>
    <html>
    <head>
     <title>Perpustakaan - Data Buku</title>
    </head>
    <body>
     <h1>Perpustakaan</h1>
     <hr>
     <h4>Data Buku</h4>
    </body>
    </html>


      • kemudian panggil file view buku.php ini di controller Data tadi (belajar_ci/application/controllers/data.php). kodenya tampak seperti dibawah (penjelasan dibawahnya)
    <?php 
    class Data extends CI_Controller {
     public function buku()
     {
      $this->load->view('data/buku');
     }
    }
    ?>

    Penjelasan

    1. Memanggil view, menggunakan $this->load->view('alamat_view')
    2. Alamat view, berawal dari folder data dan tanpa menuliskan ekstensi ".php".
      Misal: jika view ada di view/data/barang.php, anda cukup menuliskan 'data/barang'

      • Lihat hasilnya melalui browser dengan url localhost/belajar_ci/data/buku. 


    Melempar data dari controller ke view

    Uniknya jika bekerja dengan konsep MVC, kita bisa pisahkan script khusus PHP dengan UI / HTML, di framework ini kode PHP diletakkan di controller, sementara view menangani tampilan. Alurnya View mendapatkan data dari controller melalui load view tadi. Data tersebut dapat berupa teks, array atau yang lainnya

    Skenario

    Kita akan membuat data buku berupa array yang ditulis di controller, kemudian ditampilkan di view

    • Buka controller (Data.php). buat data array seperti dibawah (penjelasan ada dibawahnya)

    <?php 
    class Data extends CI_Controller {
     public function buku()
     {
      $data['data_buku'] = array(
       'Memasak untuk pemula', 
       'Dasar-dasar HTML', 
       'Cara merakit komputer', 
       'Framework Laravel untuk pemula'
      );
      $this->load->view('data/buku', $data);
     }
    }
    ?>

    Penjelasan

    1. Untuk melempar data, data tersebut harus berada didalam array. Pada kode diatas, data berada pada array $data dengan nama indeks data_buku. 
    2. kemudian indeks tersebut di isi dengan array berisi kumpulan judul buku.
    3. untuk mengirimkan ke view, array yang berisi data tersebut ($data) ditambahkan di parameter kedua pada fungsi view()

      • Kemudian, di file view (Buku.php). kita bisa terima dan tampilkan data tersebut, kodenya tampak seperti dibawah

      <!DOCTYPE html>
      <html>
      <head>
       <title>Perpustakaan - Data Buku</title>
      </head>
      <body>
       <h1>Perpustakaan</h1>
       <hr>
       <h4>Data Buku</h4>
       <ol>
        <?php 
         foreach ($data_buku as $buku) {
        ?>
        <li><?=$buku?></li>
        <?php
         }
        ?>
       </ol>
      </body>
      </html>

      1. untuk mengambil data, anda cukup menuliskan nama indeks tadi sebagai variabel. contoh jika tadi kita menuliskan $data['data_buku'] , maka di view cukup menuliskan $data_buku.
      2. karena data berupa array yang berisi lebih dari 1 data. untuk menampilkannya harus menggunakan perulangan foreach()

        • Kemudian silahkan lihat di browser, hasilnya data dari controller sudah muncul di view

        Membuat Link ke halaman lain

        Pada native coding, sangat mudah untuk membuat link ke halaman lain, tinggal buat tag <a> kemudian tulis atribut href ke alamat file yang dituju. Berbeda dengan CodeIgniter, pada CodeIgniter kita tidak bisa memanggil file php secara langsung. Untuk itu CodeIgniter sudah menyediakan helper "url". Kemudian kita hanya memanggil fungsi site_url(), fungsi ini bawaan dari helper url CodeIgniter.

        Skenario

        Kita akan menambahkan navigasi pada tampilan yang telah dibuat.

        • Tambahkan helper url pada CodeIgniter, caranya buka file belajar_ci/application/config/autoload.php

        • pada view anda (buku.php) anda bisa buat navigasi,  seperti dibawah

        <!DOCTYPE html>
        <html>
        <head>
         <title>Perpustakaan - Data Buku</title>
        </head>
        <body>
         <h1>Perpustakaan</h1>
         <ul>
          <li><a href="<?=site_url('data/buku')?>">Data Buku</a></li>
          <li><a href="<?=site_url('data/pegawai')?>">Data Pegawai</a></li>
          <li><a href="<?=site_url('data/siswa')?>">Data Siswa</a></li>
         </ul>
         <hr>
         <h4>Data Buku</h4>
         <ol>
          <?php 
           foreach ($data_buku as $buku) {
          ?>
          <li><?=$buku?></li>
          <?php
           }
          ?>
         </ol>
        </body>
        </html>

          • pada kode diatas, kode navigasi berada dibawah h1 perpustakaan. pada href kita menggunakan fungsi php site_url(alamat).
        • Akses menggunakan browser lagi untuk melihat hasilnya. 
         

        Jika anda mengklik data pegawai atau pun data siswa, akan muncul error 404 karena kita belum membuat methodnya. anda bisa membuat halaman untuk pegawai dan siswa dengan cara yang sama seperti diatas sebagai evaluasi dari tutorial diatas.

        Saya harap anda dapat memahami tutorial diatas. Jika anda berhasil, berarti anda sudah mengetahui dasar pokok pemrograman web menggunakan CodeIgniter.

        Menampilkan data (CRUD) tabel dari database menggunakan CodeIgniter

        4:17 AM Add Comment
        Sebagian besar aplikasi, pasti mempunyai data yang di manajemen / diolah. data tersebut disimpan dalam suatu tempat yang dinamakan dengan Database. Database tersebut dioperasikan oleh software yang disebut dengan DBMS. Salah satu DBMS yang paling populer adalah MySQL.

        Diartikel kali ini, kita akan membuat aplikasi web sederhana yang bisa menampilkan data dari database sebagai informasi. Selain itu aplikasi tersebut bisa mengolah (membuat, mengedit dan menghapus) data yang ada didalamnya. Aplikasi web ini akan kita buat dengan Framework CodeIgniter. Jika anda belum familiar dengan CodeIgniter, anda bisa baca artikel berikut.


        Ok. Sebelum menyimak tutorial dibawah, saya sarankan anda tidak hanya melakukan Copy-Paste kode sintaks, di artikel ini saya sertakan penjelasan yang saya buat se-jelas mungkin. Akan lebih baik jika kita tidak hanya bisa namun dapat mengerti teori / konsep nya


        Menyiapkan Project CodeIgniter

        • Siapkan folder project anda (pada artikel ini kita beri nama: perpustakaandb). berarti alamat saya adalah: http://localhost/perpustakaandb
        • Kemudian Test dengan mengakses alamatnya.

        • Untuk project ini, kita akan membutuhkan beberapa library dan helper: Library Database untu koneksi Database dan Helper URL untuk navigasi dan link. buka file application/config/autoload.php, lihat gambar dibawah:


        Menyiapkan Database, tabel dan record

        Konsep Dasar
        Langkah awal adalah menyiapkan database yang akan digunakan. Tak hanya itu, kita juga harus menyiapkan tabel beserta isinya. 

        Langkah-langkah
        • Buka GUI PhpMyAdmin jika anda menggunakan XAMPP / WAMP. caranya buka browser ketikkan localhost/phpmyadmin
        • Kemudian buat database dengan nama perpustakaan_belajar, didalamnya buat tabel buku dengan kolom dan tipe data seperti dibawah.
          pada kolom penerbit_id dan pengarang_id sengaja saya buat int atau angka karena penerbit / pengarang akan kita buatkan tabel khusus yang nantinya dihubungkan satu sama lain di artikel berikutnya

        • setelah tabel dibuat, tambahkan data / record dengan klik tabel buku, lalu klik tambahkan
        • Isi semua kolomnya kecuali ID karena kita setting Auto Increment tadi, untuk penerbit_id dan pengarang_id pada artikel ini anda tuliskan sembarang angka karena kita set tipe data ke int
        • setelah semua di isi klik tombol kirim yang ada dibawah sendiri. Data akan dimasukkan, anda bisa klik jelajahi / browse untuk melihat isi dari tabel


        Menghubungkan dan mengintegrasikan database

        Konsep Dasar

        Untuk menghubungkan database, CodeIgniter menyediakan file konfigurasi untuk database. File tersebut berada pada application/config/database.php. Setelah itu database sudah terkoneksi, tinggal mengolah bagaimana cara menerima data dalam bentuk tertentu. Pengolahan ini terjadi di model, dan perintah sintaks nya menggunakan fitur query builder bawaan CodeIgniter.

        pengolahan tersebut berupa query database CRUD, yang kemudian data tersebut dikonversi secara otomatis menjadi array object PHP berkat query builder. Array tersebut dikirim kontroller dan ditampilkan pada view.
        • Mengkonfigurasi database codeigniter
          • Pertama, masuk ke folder application/config. cari dan buka file database.php menggunakan text editor anda
          • Rubah isi dari ke empat indeks konfigurasi berikut
            • hostname : lokasi komputer database anda (pada artikel ini: localhost)
            • username : username untuk akses database (phpmyadmin), defaultnya adalah: root
            • password : password akses database, default bawaannya adalah tidak ada / ""
            • database : nama database, di artikel ini adalah perpustakaan_belajar

        • Membuat Model
          Model adalah kumpulan fungsi pembantu dalam mengoperasikan database, di model inilah kita menuliskan query MySQL. Singkatnya, model menjembatani antara Database dan sistem CodeIgniter sebelum masuk ke controller
          • Pertama, untuk membuat model, masuk ke folder application/models, di folder ini anda membuat file model. 
          • Pada artikel kali ini, kita buat file BukuModel.php, kemudian isi dengan kode dibawah (penjelasan dibawah)

        <?php 
        class BukuModel extends CI_Model {
          public $table = 'buku';
        
          public function show()
          {
            $data = $this->db->get($this->table)->result();
            return $data;
          }
        
          public function single($id)
          {
            $data = $this->db->get_where($this->table, array('id' => $id))->row();
            return $data;
          }
        
          public function insert($data)
          {
            return $this->db->insert($this->table, $data);
          }
        
          public function update($data, $id)
          {
            return $this->db->update($this->table, $data, array('id' => $id));
          }
        
          public function delete($id)
          {
            return $this->db->delete($this->table, array('id' => $id));
          }
        }
        ?>

          • Penjelasan
            • File model berupa class yang extends ke CI_Model (wajib, bawaan CI)
            • Karena kita akan membuat CRUD (lihat, tambah, edit dan hapus) data, maka didalamnya kita buat 4 method
            • Untuk menampilkan data (select), menggunakan $this->db->get('nama_tabel'). dan jika ingin mengkonversi data kedalam array object,  tambahkan result(). 
              lalu data tersebut dikembalikan oleh fungsi sebagai keluaran dengan return.
            • Insert menggunakan $this->db->insert('nama_tabel', $array_data). array data tersebut kita dapat dari parameter, dimana parameter tersebut di isi oleh controller
            • Update sama dengan insert, hanya ditambahkan kondisi WHERE, dimana pada CI tertulis sebagai array('kolom', isi). data yang dibutuhkan juga didapat dari parameter fungsi
            • Delete cukup menggunakan $this->db->delete('nama_tabel', array('id'=> $id_yangdihapus)
          • Kebutuhan database telah selesai.

        Konsep CRUD pada CodeIgniter

        Seperti yang anda tahu, CodeIgniter bekerja dengan menjalankan method melalui url, bukan memanggil file secara langsung. Sementara itu CUD (Create, Update, Delete) mempunyai beberapa aktifitas seperti berikut: 
        1. Menampilkan form untuk inputan data
          Berupa View, Jadi kita membutuhkan metode untuk menjalankan view sehingga kita mempunyai URL seperti berikut. perpustakaandb/data/tambah_buku
        2. Setelah inputan, user mengklik submit. Pada PHP proses pengiriman data inputan menggunakan request berupa POST / GET. Kemudian data tersebut diolah oleh Script PHP Action, yang diisikan pada atribut tag form. Berarti kita perlu method lagi untuk Action nya, itu artinya ada URL lagi: perpustakaandb/data/tambah_buku_submit

        Dengan menggunakan cara diatas, kita perlu banyak sekali method. Untuk Create saja membutuhkan 2 method, dan jika CUD membutuhkan 6 method. Semakin banyak method, semakin banyak juga URL yang berarti cara ini membuat project sangat tidak terorganisir.

        Saya mempunyai sebuah trik untuk mengatasi hal ini. Yaitu, semua aktifitas CRUD dilakukan di satu method saja yang membuat suatu pekerjaan menjadi efisien. Contohnya, jika kita sudah membuat manajemen data buku dan ingin membuat manajemen data lain misal pegawai, cukup Copy-paste saja method dan merubah beberapa elemen dan menambah view.

        Ok. Mari kita desain struktur method terlebih dahulu, artinya kita mendesain struktur URL agar lebih terstruktur. Pada CodeIgniter, format URL adalah:
        perpustakaandb/controller/method/parameter_1/parameter_2/parameterseterusnya.
        maka konsep format terbaik adalah:
        perpustakaandb/data/buku/operasi/id/submit.
        • Parameter Operasi: Mendefinisikan operasi yang digunakan, contoh: tambah, edit, atau hapus
        • Parameter Id : Mendefinisikan ID data (hanya untuk edit), karena jika mengedit harus ada data yang akan di edit bukan?
        • Parameter Submit : Memberitahu, bahwa kita akan mengeksekusi action untuk submit form

        Membuat CRUD (Create/Insert)

        Konsep Dasar

        Pertama, kita tampilkan datanya (Read / Select). Cukup mudah, hanya tinggal panggil method show() dari model dan tempatkan pada variabel untuk menampung data, kemudian dilempar ke view

        Berbeda dengan tambah, edit dan hapus data (CUD), pada CUD kita melakukan Write ke database sehingga alur data berawal dari inputan kita (View).
        Contoh alur data untuk tambah data sebagai berikut:
        1. data berawal dari View berupa inputan form oleh user
        2. kemudian form melakukan submit sehingga menjalankan method controller dengan membawa data berupa POST. 
        3. Lalu, controller memanggil method model membawa data dengan parameternya
        4. Terakhir, Model melakukan query insert oleh method insert().

        Alur tersebut cukup sederhana, mari kita praktekkan.

        Langkah-langkah: 

        • Buat controller Data.php, gunakan kode berikut (disertai penjelasan).

        <?php
        class Data extends CI_Controller {
          public function buku($operasi = 'daftar',$id = FALSE, $submit = FALSE)
          {
            $this->load->model('BukuModel');    
            if ($operasi == 'daftar') {
              $data['data_buku'] = $this->BukuModel->show();
              $this->load->view('data/buku/list', $data);
            }
            else if ($operasi == 'tambah') {
              if ($submit == FALSE) {
                $this->load->view('data/buku/tambah');
              }
              else {
                $data_insert = array(
                  'judul' => $this->input->post('judul'),
                  'penerbit_id' => $this->input->post('penerbit_id'),
                  'pengarang_id' => $this->input->post('pengarang_id'),
                  'tahun' => $this->input->post('tahun'),
                  'jumlah' => $this->input->post('jumlah')
                );
                $this->BukuModel->insert($data_insert);
                redirect(site_url('data/buku'),'refresh');
              }
            }
            else if ($operasi == 'edit') {
              if ($id != FALSE) {
                if ($submit == FALSE) {
                  $data['buku'] = $this->BukuModel->single($id);
                  $this->load->view('data/buku/edit', $data);
                }
                else {
                  $data_update = array(
                    'judul' => $this->input->post('judul'),
                    'penerbit_id' => $this->input->post('penerbit_id'),
                    'pengarang_id' => $this->input->post('pengarang_id'),
                    'tahun' => $this->input->post('tahun'),
                    'jumlah' => $this->input->post('jumlah')
                  );
                  $this->BukuModel->update($data_update, $id);
                  redirect(site_url('data/buku'),'refresh');
                }
              }
              else {
                echo "Tidak ada data yang diedit";
              }
            }
            else if ($operasi == 'hapus') {
              $this->BukuModel->delete($id);
              redirect(site_url('data/buku'),'refresh');
            }
          }
        }
        ?>

        Penjelasan
          1. Method buku memiliki 3 parameter seperti yang dijelaskan diatas
          2. Parameter tersebut berfungsi sebagai penentu, kode mana yang dieksekusi berdasarkan aktivitas CRUD (menampilkan form, action submit dll.).
          3. Pada bagian kode yang menangani action, data diterima dari view lewat POST dan dikirimkan ke model ($this->BukuModel->insert($data)) dengan menggunakan variabel array
          4. setelah melakukan operasi, dilakukan redirect untuk berpindah halaman secara otomatis
          5. pada kode untuk menampilkan view, kode diatas memanggil 3 view (daftar, tambah dan edit). Untuk hapus tidak diperlukan view karena langsung dijalankan di controller lalu redirect ke halaman list
        • Membuat View
          • pada folder application/view/data/buku yang telah dibuat tadi tambahkan file view. buat file view list.php, kode seperti berikut:
        <!DOCTYPE html>
        <html>
        <head>
          <title>Perpus - Data Buku</title>
        </head>
        <body>
          <h1>Sistem Perpustakaan</h1>
          <hr>
          <h3>Data Buku <small><a href="<?=site_url('data/buku/tambah')?>">[Tambah data]</a></small></h3>
          <table border="1">
            <thead>
              <tr>
                <th>No</th>
                <th>Judul</th>
                <th>Penerbit</th>
                <th>Pengarang</th>
                <th>Tahun</th>
                <th>Jumlah</th>
                <th>Aksi</th>
              </tr>
              <?php 
              $no = 0;
              foreach ($data_buku as $buku) {
                $no++;
                ?>
                <tr>
                  <td><?=$no?></td>
                  <td><?=$buku->judul?></td>
                  <td><?=$buku->penerbit_id?></td>
                  <td><?=$buku->pengarang_id?></td>
                  <td><?=$buku->tahun?></td>
                  <td><?=$buku->jumlah?></td>
                  <td>
                    <a href="<?=site_url('data/buku/edit/' .$buku->id)?>">Edit</a> | 
                    <a href="<?=site_url('data/buku/hapus/' .$buku->id)?>">Hapus</a>
                  </td>
                </tr>
                <?php
              }
              ?>
            </thead>
          </table>
        </body>
        </html>

        Penjelasan
        1. Isi view tambah.php adalah html sederhana, seperti <h1> untuk judul, <a> untuk link, dan tabel
        2. Pada baris tabel <tr>, terdapat perulangan yang berfungsi untuk menampilkan data buku lemparan dari controller.
          • Pada folder yang sama buat file tambah.php dengan kode berikut
        <!DOCTYPE html>
        <html>
        <head>
         <title>Perpustakaan - Tambah buku</title>
        </head>
        <body>
         <h1>Perpustakaan</h1>
         <hr>
         <h3>Tambah Data Buku</h3>
         <form action="<?=site_url('data/buku/tambah/x/submit')?>" method="POST">
          <label>Judul : </label>
          <input type="text" name="judul" placeholder="Judul Buku" required><br/>
          <label>Penerbit : </label>
          <input type="number" name="penerbit_id" placeholder="Nama Penerbit" value="0"><br/>
          <label>Pengarang : </label>
          <input type="number" name="pengarang_id" placeholder="Nama Pengarang" value="0"><br/>
          <label>Tahun : </label>
          <input type="number" name="tahun" placeholder="Tahun Pembuatan" required><br/>
          <label>Jumlah : </label>
          <input type="number" name="jumlah" placeholder="Jumlah Buku" required><br/>
          <input type="submit" name="submit" value="Tambah">
         </form>
        </body>
        </html>
        Penjelasan
        1. Isi view tambah.php adalah form sederhana berisi inputan data buku (sesuai dengan kolom di database, ID tidak perlu diberi inputan karena sudah auto increment)
        2. Atribut form action. merujuk ke method data/buku/tambah/x/submit. parameter submit digunakan untuk mengetahui bahwa ini action form. huruf x adalah id karena pada tambah data kita tidak membutuhkan id. Namun wajib di isi karena bagian dari parameter (anda bisa isi selain huruf x)




      • pada folder yang sama buat file edit.php dengan kode berikut

      • <!DOCTYPE html>
        <html>
        <head>
         <title>Perpustakaan - Tambah buku</title>
        </head>
        <body>
         <h1>Perpustakaan</h1>
         <hr>
         <h3>Tambah Data Buku</h3>
         <form action="<?=site_url('data/buku/edit/' .$buku->id. '/submit')?>" method="POST">
          <label>Judul : </label>
          <input type="text" name="judul" placeholder="Judul Buku" value="<?=$buku->judul?>" required><br/>
          <label>Penerbit : </label>
          <input type="number" name="penerbit_id" placeholder="Nama Penerbit" value="<?=$buku->penerbit_id?>"><br/>
          <label>Pengarang : </label>
          <input type="number" name="pengarang_id" placeholder="Nama Pengarang" value="<?=$buku->pengarang_id?>"><br/>
          <label>Tahun : </label>
          <input type="number" name="tahun" placeholder="Tahun Pembuatan" value="<?=$buku->tahun?>" required><br/>
          <label>Jumlah : </label>
          <input type="number" name="jumlah" placeholder="Jumlah Buku" value="<?=$buku->jumlah?>" required><br/>
          <input type="submit" name="submit" value="Edit">
         </form>
        </body>
        </html>
        Penjelasan

        1. Isi kode hampir sama dengan file view tambah, namun ditambahkan atribut value disetiap inputan untuk menampilkan data sebelum diedit
        2. Action merujuk ke buku/edit/ID_BUKU/submit. Untuk edit, menggunakan parameter id sebagai penentu data mana yang akan di edit

        • Terakhir, Testing. akses ke localhost/perpustakaandb/data/barang. lakukan penambahan, pengeditan dan penghapusan data dengan link yang ada.

        Link download Project.
        Database sudah diekspor dengan nama perpustakaan_belajar. dan disimpan didalam folder, file berekstensi *.sql

        Perpustakaandb, 2,52Mb


        Semoga artikel kali ini dapat bermanfaat bagi anda. saya sangat berterima kasih karena anda telah berkunjung dan membaca di blog ini. Dan saya sangat senang sekali jika anda mengklik salah satu iklan oleh Google di blog ini sebagai dukungan, saya akan terus menuliskan ilmu yang saya punya mengenai IT, karena anda berhak untuk mengetahuinya secara gratis demi meningkatkan produktifitas bangsa indonesia :D.

        sekian.