Faber Nainggolan Blog's

Artikel, Tutorial Pemrograman, Tutorial database, PHP dan Framework

LightBlog

Pada upload codeigniter ada saat tertentu kita pengen  membuat semacam identitas foto atau gambar agar terlihat lebih pribadi atau mempunyau...



Pada upload codeigniter ada saat tertentu kita pengen  membuat semacam identitas foto atau gambar agar terlihat lebih pribadi atau mempunyau tanda bahwa kita pemilik gambar tersebut. Jadi kita perlu melakukan manipulasi terhadap gambar tersebut menggunakan library manipulation. Oke tanpa berpanjang lebar mari kita mulai.

Contoh class controller yang saya gunakan adalah dari artikel sebelumnya yaitu upload codeigniter bisa dilihat melalui link berikut


Controller 

pada function aksi_tambah silakan tambah script
class Upload extends CI_Controller {
/******************************************************
  | Upload
  | controller upload manipulasi watermark gambar
  | by gTech
  *****************************************************/
  public function __construct() {
    parent::__construct();
    $this->load->library('image_lib');
  }
  
    //fungsi awal ketika kita panggil controller gambar
    public function index(){
      $data['judul'] = 'Upload Gambar'; //judul title      
      $data['queryupload'] = $this->mupload->getallimage(); //model semua file 
      
      //template views
      $this->load->view('header',$data); //load header
      $this->load->view('upload/vupload',$data); //load views
      $this->load->view('footer',$data); //load footer
    }
     
    //fungsi form tambah ketika kita panggil pada link 
    public function tambah(){     
      $data['judul'] = 'Tambah Gambar';
      $data['aksi'] = 'aksi_tambah';

      //template views
      $this->load->view('header',$data);
      $this->load->view('upload/vformupload',$data);
      $this->load->view('footer',$data);
    }
    //fungsi form edit ketika kita panggil pada link
    public function edit(){
      $id = $this->input->get('id');
      $data['row'] = $this->mupload->getbyid($id);
      $data['judul'] = 'Edit Gambar';
      $data['aksi']  = 'aksi_edit';

      //template views
      $this->load->view('header',$data);
      $this->load->view('upload/vformupload',$data);
      $this->load->view('footer',$data);
    }
    //fungsi untuk menangani pemanggilan aksi tambah ketika form di submit
    public function aksi_tambah(){
        //deklarasikan variabel dari form
        $nama     = addslashes($this->input->post('nama'));
        $keterangan    = addslashes($this->input->post('keterangan'));
 
        //validasi 
        $this->form_validation->set_rules('gambar', 'File Gambar', 'trim|xss_clean'); //file gambar

        //configurasi upload
        $nmfile = "file_".time(); //nama file saya beri nama langsung dan diikuti fungsi time
        $config['upload_path'] = './assets/uploads/'; //path folder
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
        $config['max_size'] = '2048'; //maksimum besar file 2M
        $config['max_width']  = '1288'; //lebar maksimum 1288 px
        $config['max_height']  = '768'; //tinggi maksimu 768 px
        $config['file_name'] = $nmfile; //nama yang terupload nantinya
        $this->upload->initialize($config);

        if ($this->form_validation->run() == TRUE) {
            if ($this->upload->do_upload('gambar')){
                $gbr = $this->upload->data();
                $config2['source_image'] = './assets/uploads/'.$gbr['file_name'];
                //The image path,which you would like to watermarking
                $config2['wm_text'] = 'arjunphp.com';
                $config2['wm_type'] = 'text';
                $config2['wm_font_path'] = './fonts/atlassol.ttf';
                $config2['wm_font_size'] = 16;
                $config2['wm_font_color'] = 'ffffff';
                $config2['wm_vrt_alignment'] = 'middle';
                $config2['wm_hor_alignment'] = 'right';
                $config2['wm_padding'] = '20';
                $this->image_lib->initialize($config2);
                if (!$this->image_lib->watermark()) {
                    echo $this->image_lib->display_errors(); 
                    
                    }else{
                    echo 'Successfully updated image with watermark';
                    
                    $data = array(
                      'nm_gbr'  => $gbr['file_name'],
                      'tipe_gbr' => $gbr['file_type'],
                      'ket_gbr'=> $keterangan
                    );
                    $this->mupload->getinsert($data); //model insert data kedatabase
                     $this->session->set_flashdata("pesan", "Data berhasil di insert"); //pesan yang tampil setalah berhasil di insert
                     redirect('upload'); 
}
                
            }else{
              $info = array(
                'aket'=>$keterangan,
                'judul' => 'Tambah Gambar',
                'aksi' => 'aksi_tambah'
              );
              $err = $this->upload->display_errors(); //error upload
              $this->session->set_flashdata("pesan", "Data Gagal di insert ".$err);
              //ketika error terjadi halaman akan tetap di form 
              $this->load->view('header',$info); 
              $this->load->view('upload/vformupload',$info);
              $this->load->view('footer',$info); 

            }
        }else{
          //ini berfungsi agar field form tidak menjadi kosong, dibuat dalam array
          //variabel akan tetap dibawa jika error terjadi pada saat validasi
          $info = array(
            'aket'=>$keterangan,
            'judul' => 'Tambah Gambar',
            'aksi' => 'aksi_tambah'
          );
          $err = validation_errors(); //error validasi akan dimunculkan pada pesan

          $this->session->set_flashdata("pesan", "Data Gagal di insert ".$err);

          //ketika error terjadi halaman akan tetap di form barang
          $this->load->view('header',$info); 
          $this->load->view('upload/vformupload',$info);
          $this->load->view('footer',$info); 
        }
      }
}

Pernah mendengar SSL? SSL (Secure Socket Layer) adalah lapisan keamanan atau jenis keamanan yang digunakan antara website dengan browser mel...

Pernah mendengar SSL? SSL (Secure Socket Layer) adalah lapisan keamanan atau jenis keamanan yang digunakan antara website dengan browser melalui enkripsi untuk mengamankan sebuah transaksi yang digunakan oleh user. Seperti mengamankan layer form login, transaksi keuangan, data pribadi dll. Untuk saat ini SSL sudah ditinggalkan dan digantikan fungsinya oleh TLS.



TLS (Transfer Layer Security) adalah protocol untuk kriptografi untuk menyediakan komunikasi internet yang aman melalui internet TLS lah yang mengamankan privasi data, sama seperti yang dilakukan SSL. Karena SSL sudah tidak lagi digunakan, maka orang-orang kini menyebutnya dengan SSL/TLS.

Apakah SSL/TLS penting?

Ya, sangat penting.
Keberadaan SSL/TLS memiliki dampak yang cukup signifikan pada keamanan, optimasi mesin pencari, dan juga berpengaruh terhadap peringkat situs atau bahkan performa website jika dibandingkan dengan website tanpa SSL/TLS.

SSL/TLS dengan HTTPS

Pada prinsip SSL dan HTTPS berjalan bersamaan karena tidak bisa dijalankan hanya salah satu sebab untuk mentransmisikan data SSL membutuhkan HTTPS untuk berjalan.

Bagaimana cara kerja SSL? 

Ketika website Anda menggunakan atau diamankan dengan SSL, maka saat website diakses oleh browser apa pun, koneksi SSL dibuat antara browser web dan server web dengan proses yang disebut SSL Handshake. 
 Ada tiga kunci yang digunakan untuk membuat sambungan SSLyaitu kunci publik, pribadi, dan sesi. Sambungan yang dienkripsi dengan kunci publik dapat didekripsi hanya dengan kunci pribadi, dan sebaliknya.

Proses kerja SSL berjalan seperti ini:
  • Browser terhubung ke website yang aman, dan meminta identitas server.
  • Server mengirimkan salinan Sertifikat SSL dengan kunci publiknya.
  • Browser memverifikasi sertifikat masih aktif dalam artian tidak kedaluwarsa atau dicabut dan berasal dari CA tepercaya.
  • Jika semuanya sudah jelas, browser akan membuat, mengenkripsi, dan mengirim kembali kunci sesi ke website menggunakan kunci publik server.
  • Server penerima kemudian mendekripsi kunci sesi menggunakan kunci privatnya. Ini kemudian mengirimkan kunci pengakuan dan sesi untuk memulai sesi terenkripsi.
  • Semua data yang dikirimkan antara browser dan server sekarang dienkripsi dengan kunci sesi.

Faktor-faktor yang perlu dipertimbangkan sebelum membeli Sertifikat SSL

Ada banyak sekali penyedia Otoritas Sertifikat (CA) yang memiliki ijin terdaftar, anda harus mempertimbangkan faktor-faktor berikut sebelum memilih penyedia Sertifikat SSJenis Sertifikat SSL

a. Jenis Sertifikat SSL

ada beberapa jenis sertifikat SSL yang dapat kamu pilih sesuai kebutuhan website kamu diantaranya :
  • Sertifikat SSL Domain Validation (DV)
Sertifikat SSL DV adalah jenis sertifikat SSL paling dasar karena membutuhkan tingkat yang paling minimal dari proses verifikasi. Sertifikat DV hanya melibatkan konfirmasi kepemilikan domain. Oleh karena itu, setelah Anda mendemonstrasikan kepemilikan domain ke CA, maka Anda akan mendapatkan sertifikatnya.

Sertifikat DV dimaksudkan untuk situs yang tidak berurusan dengan data sensitif apapun. Umumnya, situs dan blog kecil menggunakan DV SSL karena harganya paling murah di antara semuanya.

  • Sertifikat SSL Organization Validation (OV)
OV SSL juga dikenal sebagai ‘otentikasi bisnis’. Berbeda dengan sertifikat DV SSL, OV SSL menampilkan informasi perusahaan namun dengan batasan. Pengunjung situs harus membuka detail sertifikat untuk mengetahui detail perusahaan. Pengguna biasa mungkin tidak dapat menemukannya.

Validasi bisnis bersama dengan validasi domain dijalankan oleh certificate authority (CA) sebelum menerbitkan sertifikat. Penerbit harus menyerahkan dokumen yang membuktikan keabsahan organisasi.

  • Sertifikat SSL Extended Validation (EV)
Dalam hal menyediakan tingkat otentikasi tertinggi, sertifikat SSL EV lah yang tertinggi. Inilah alasan mengapa sertifikat SSL EV dipercayakan oleh perusahaan e-commerce terbesar di dunia.

Saat memasang SSL EV, situs ini dilengkapi dengan tanda kepercayaan (trust-signs) yang mudah dikenali, seperti address bar berwarna hijau, gembok hijau, dan yang terpenting dari semua adalah segel situs dinamis. Terlepas dari tanda-tanda ini, nama perusahaan ditampilkan secara jelas di address bar.

Selain jenis-jenis ssl diatas kamu harus tahu bahwa sertifikat itu juga dibagi berdasarkan jenis level validasinya yaitu :

Wildcard SSL Certificate

Sertifikat SSL Wildcard memungkinkan Anda untuk melindungi subdomain dalam jumlah yang tidak terbatas bersama dengan domain utama menggunakan satu sertifikat SSL. Anda dapat mengamankan domain berikut ini dengan menggunakan Wildcard SSL.
  • domain.com (domain utama)
  • mail.domain.com
  • login.domain.com
  • ftp.domain.com
Sertifikat SSL Wildcard menguntungkan dalam dua aspek. Pertama, menyelamatkan Anda dari masalah pembelian dan pemasangan sertifikat individu untuk setiap domain Anda. Jadi, Anda tidak harus melalui seluruh proses validasi untuk membeli sertifikat SSL sehingga menghemat banyak waktu. Kedua, menghemat banyak uang karena Anda tidak perlu membayar untuk setiap sertifikat SSL.

Hal penting yang perlu diperhatikan di sini adalah bahwa sertifikat Wildcard dilengkapi dengan dua validasi domain, yaitu domain validation (DV) dan organization validation (OV).

Sertifikat SAN SSL /Multi-domain

Sertifikat SAN SSL/multi-domain memberikan gradasi atas sertifikat SSL Wildcard. Tidak seperti sertifikat SSL Wildcard, Multi-domain memfasilitasi pengguna untuk mengamankan beberapa domain yang sepenuhnya memenuhi syarat bersama dengan beberapa sub-domain. Oleh karena itu, sertifikat SAN SSL adalah cara terbaik jika Anda ingin mengamankan lebih dari satu domain primer.

b. Jumlah domain yang ingin diamankan

salah satu faktor yang kamu harus lakukan dalam memilih SSL adalah jumlah domain yang ingin Anda lindungi menggunakan SSL. Membeli satu sertifikat sangatlah mudah jika Anda ingin mengamankan satu domain. Namun seringkali pemilik situs perlu mengamankan lebih dari satu domain. Domain tersebut dapat dibagi menjadi dua kategori, yaitu DOMAIN UTAMA yg memiliki syarat  dan SUB-DOMAIN.

c. Jumlah Garansi

Jumlah jaminan yang diberikan dengan sertifikat SSL berbeda dari satu sertifikat ke sertifikat lainnya. Semakin tinggi tingkat validasi, semakin tinggi jumlah jaminan. Jika terjadi penipuan dengan pelanggan Anda, otoritas sertifikat menawarkan uang sebagai pembayaran kembali. Idealnya, ini tidak boleh terjadi dan hampir tidak pernah terjadi tetapi selalu baik untuk tetap berjaga-jaga.

d. Reputasi dari Certificate Authority (CA)

Saat ini, ada banyak opsi untuk dipilih menyangkut CA. Bagaimana Anda bisa tahu mana yang terbaik? Nah, reputasi CA adalah hal yang harus Anda perhatikan. Pangsa pasar CA merupakan indikasi utama untuk itu.

Sejarah CA yang terbaru adalah pertimbangan penting lainnya untuk Anda cari. Dulu, beberapa CA telah dilarang oleh web browser. Hal ini berarti browser tertentu berhenti mendukung sertifikat SSL yang disediakan oleh CA tersebut. Anda tidak ingin itu terjadi, bukan?

e. Waktu Penerbitan

Prosedur validasi berbeda untuk berbagai tingkatan. Jika Anda ingin sertifikat diterbitkan dalam beberapa menit, Anda harus melakukan validasi domain jika sesuai dengan persyaratan Anda. Untuk SSL OV, diperlukan waktu 2-3 hari untuk menerbitkannya. EV SSL membutuhkan waktu sekitar 2-4 hari karena membutuhkan banyak pengawasan. Waktu yang disebutkan tersebut adalah waktu yang ideal. Jika CA memiliki ketidakpastian, mereka mungkin meminta lebih banyak bukti dari pihak Anda yang dapat membuat proses penerbitan sedikit lebih lama.

f. Harga

Faktor ini akan selalu menjadi faktor penting ketika harus memilih sertifikat SSL yang tepat. Ada banyak faktor yang mempengaruhi harga sertifikat SSL. Faktor-faktor ini, termasuk brand, jenis SSL, periode validasi, dan lain-lain. Anda harus mempertimbangkan semua faktor tersebut. Jika Anda ingin menginstal sertifikat SSL selama lebih dari satu tahun maka memilih opsi multi-year akan memberikan keuntungan besar sejauh menyangkut harga.

g. Elemen Keamanan Tambahan

Beberapa CA menawarkan elemen keamanan tambahan dengan sertifikat SSL. Alat-alat ini terbukti bermanfaat untuk keamanan situs Anda. Jadi, carilah elemen-elemen ini sebelum Anda membuat pilihan.

h. Customer Support

Jika terjadi masalah, akan lebih baik jika memiliki seorang ahli untuk membimbing Anda. Memiliki akses ke customer support dapat menyelamatkan Anda dari masalah. Cari penyedia SSL yang membantu Anda dengan dukungan pelanggan 24/7. Dukungan bisa dalam bentuk obrolan, email, panggilan, dan sebagainya.

itulah beberapa fakto yang perlu kamu tahu dalam pemilihan SSL serfikat.

Penyedia SSL/TLS terpercaya

setelah kita tahu apa jenis dan kebutuhan sertifikat yang kita inginkan maka kita perlu mengetahui beberapa penyedia CA terpercaya yang dapat kita pilih yaitu 
  • Comodo
  • GeoTrust
  • DigiCert
  • GlobalSign
  • Symantec
  • Thawte
  • IdenTrust
  • Entrust
  • Network Solutions
  • RapidSSL
selain penyedia CA terpercaya diatas jika anda kekurangan dana untuk membeli sertifikat SSL kamu dapat memilikinya dengan gratis yaitu dengan menggunakan SSL gratis dari Let’s Encrypt, SSL ini telah didukung banyak perusahan teknologi besar seperti Facebook, Mozila, Google dll untuk penggunan data yang aman di internet.





Jumpa kembali dengan tutorial saya, kali ini saya akan membagikan tutorial mengenai CSS dropdown menu. Silakan di lihat langkah demi langkah...

Jumpa kembali dengan tutorial saya, kali ini saya akan membagikan tutorial mengenai CSS dropdown menu. Silakan di lihat langkah demi langkah



silakan di simpan dengan nama menu.html
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,800,300" rel="stylesheet" type="text/css"/>
<h1>Dropdown Menu Simple CSS</h1>
<nav class="nav">
  <ul class="nav__menu">
    <li class="nav__menu-item"><a>Home</a></li>
    <li class="nav__menu-item"><a>Services</a>
      <ul class="nav__submenu">
        <li class="nav__submenu-item"> <a>Web Design</a></li>
        <li class="nav__submenu-item"> <a>Web Development</a></li>
        <li class="nav__submenu-item"> <a>Web Hosting</a></li>
      </ul>
    </li>
    <li class="nav__menu-item"><a>About</a>
      <ul class="nav__submenu">
        <li class="nav__submenu-item"> <a>Our Company</a></li>
        <li class="nav__submenu-item"> <a>Our Team</a></li>
        <li class="nav__submenu-item"> <a>Our Skills</a></li>
      </ul>
    </li>
    <li class="nav__menu-item"><a>Blog</a></li>
    <li class="nav__menu-item"><a>Contact</a></li>
  </ul>
</nav>

Style CSS untuk html nya silakan di buatkan simpan dengan nama menu.css

html {
box-sizing: border-box;
}

*, *:before, *:after {
box-sizing: border-box;
}

body {
margin: 0;
font-family: 'Open Sans', sans-serif;
font-size: 16px;
line-height: 1.5;
background: #009688;
}

nav ul {
list-style: none;
padding-left: 0;
margin-top: 0;
margin-bottom: 0;
}

h1 {
width: 500px;
margin: 100px auto 20px;
color: #f0f0f0;
text-align: center;
}

.nav {
width: 500px;
margin: 0 auto;
background: #004c45;
color: #f0f0f0;
}
.nav a {
display: block;
padding: 0 16px;
line-height: inherit;
cursor: pointer;
}
.nav__menu {
line-height: 45px;
font-weight: 700;
text-transform: uppercase;
}
.nav__menu-item {
display: inline-block;
position: relative;
}
.nav__menu-item:hover {
background-color: #0b2523;
}
.nav__menu-item:hover .nav__submenu {
display: block;
}
.nav__submenu {
font-weight: 300;
text-transform: none;
display: none;
position: absolute;
width: 220px;
background-color: #0b7369;
}
.nav__submenu-item:hover {
background: rgba(0, 0, 0, 0.1);
}


See the Pen
Menu Dropdown Simple CSS
by Faber Nainggolan (@goolanz)
on CodePen.

Seperti pada judul bagaimana cara membuat domain tld pada blogger agar non-www diredirect ke www. Pada dasar nya setiap domain ketika diakse...

Seperti pada judul bagaimana cara membuat domain tld pada blogger agar non-www diredirect ke www. Pada dasar nya setiap domain ketika diakses akan muncul www di depan domain. Namun dibebarapa kasus kadang domain akan tampil tanpa ada www. Di blogger itu sangat beresiko akan terjadi error ketika di akses dan bagaimana mengatasinya? Mari kita bahas

1. Domain TLD tersedia
Pastinya untuk memulainya kita sudah harus membeli sebuah domain terlebih dahulu.
2. Akun di blogger
3. DNS Manager untuk menambahkan Zone

Oke silakan masuk akun blogger kita, kemudia masuk ke pengaturan (roda gigi) seperti gambar dibawah ini


Selanjut pada link + Set up a third-party URL for your blog  lalu akan muncul form pengisian domain yang akan kita pasangkan di akun blogger kita.


pada saat mengetikkan domain ikutkan www pada domain dan kemudian lalu tekan save maka akan muncul pemberitahuan berikutnya

dimana kita harus setting dns domain terlebih dahulu sebelum melanjutkan nya. silakan masuk ke dns manager domain dan masukkan label

biasanya pada tempat kita membeli domain akan tersedia domain manager untuk pengaturan name server dan zone editor jadi dan isikan seperti pada gambar dibawah


A
216.239.32.21
216.239.34.21
216.239.36.21
216.239.38.21

CNAME
www                              ghs.google.com
vjszv45tqsqm                gv-tlu336sdkhsusw.dv.googlehosted.com

(cnamenya tidak akan sama jadi harap disesuaikan dengan apa yang muncul saat di click save)

dan setelah disetting silakan kembali ke blogger dan save kembali.

Mau template bootstrap yang keren silakan di download pada link-link berikut : 1. Marvel Bootstrap HTML Admin Template Download | De...

Mau template bootstrap yang keren silakan di download pada link-link berikut :

1. Marvel Bootstrap HTML Admin Template


2. Brilliant Free Bootstrap Admin Template


3. Bluebox Free Bootstrap Admin


Jika kita melihat judul diatas maka tentunya kita akan membahas query dalam mysql, seperti kita ketahui tipe field yang auto increment akan ...

Jika kita melihat judul diatas maka tentunya kita akan membahas query dalam mysql, seperti kita ketahui tipe field yang auto increment akan otomatis mencreate otomatis sebuah value ditambah 1 dari value terakhir. Sebenarnya ini tidak menjadi masalah pada data kita, sebab kita tidak akan menemukan nilai value yang sama pada value nya.

Timbul sebuah kasus, jika kita hapus sebuah data atau beberapa data otomatis nilai value auto increment tadi tidak akan berurut lagi. Nah kita akan membahas cara reset agar kembali berurut nilai auto incrementnya.

Buat sebuah tabel pada database mysql sebagai sample percobaan kita. buat seperti dibawah

CREATE TABLE `tbl_percobaan` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(30) DEFAULT NULL,
  `alamat` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
 

kemudian insertkan query berikut

insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Faber','Medan');
insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Nainggolan','Tarutung');
insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Eben','Medan');
insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Agus ','Papua');
insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Abdul','Jakarta');
 

nah jika kita select tampilkan datanya, akan tampil seperti berikut :



kemudian coba delete id = 3 dan id = 5, kemudian tampilkan kembali

DELETE FROM tbl_percobaan WHERE id='3';
DELETE FROM tbl_percobaan WHERE id='5';
 



dan jika kita tambah beberapa data tampilannya akan seperti berikut :

insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Sule','Bandung');
insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Butet','Medan');
insert into `tbl_percobaan` (`id`, `nama`, `alamat`) values('','Uccok','Medan');
 



dari tampilan kita bisa lihat bahwa nilai value field id sudah acak dan setiap kita tambah data nantinya akan mengikuti nilai value terakhir. Kita akan reset nilai value nya agar berurut kembali dengan perintah ALTER table DROP field dan di ADD kembali field tersebut, mari kita buat.
ALTER TABLE tbl_percobaan DROP id;
ALTER TABLE tbl_percobaan ADD  id INT( 11 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id);

dan hasilnya akan seperti berikut :



nilai value id sudah berurut kembali dan jika kita tambah data nilai idnya akan berurut 7 dan seterusnya

Demikian tulisan ini, semoga bermanfaat.

Bagi agan-agan ini saya ada share aplikasi manajemen surat yang dapat digunakan pada sebuah kantor. Aplikasi ini saya bangun dengan penerapa...

Bagi agan-agan ini saya ada share aplikasi manajemen surat yang dapat digunakan pada sebuah kantor. Aplikasi ini saya bangun dengan penerapan modal facebox dan cukup lumayan menarik. Anda bisa mengembangkan untuk tujuan belajar. Bagi anda yang membutuhkan untuk commercial bisa hubungi saya.

Berikut screen shot penampakan aplikasinya



Penampakan menu



Tambah Surat Modal Facebox

Penampakan form login




Fitur Aplikasi

  • Manajemen admin
  • Aktivitas Log
  • Surat masuk dan Surat keluar
  • Posisi surat masuk setelah di disposisi oleh tiap masing-masing bagian
  • Laporan surat



Kepada agan-agan yang download dan pada saat dijalan muncul error seperti berikut

Parse error: syntax error, unexpected end of file in C:\\xampp\\htdocs\\Aplsurat-master\\views\\admin\\index.php on line 245

silakan buka file index.php difolder views/admin/ lalu pada line 245 seperti berikut :

sebelum..
</body>
</html>
<? //}?>   //==== line 245

buat seperti ini ....

</body>
</html>
<? }?> 

Download 

Bagi yang ingin lihat cara instalasinya bisa mengikuti video dibawah ini, pada video sudah saya buat juga cara mengatasi error yang muncul setelah aplsurat di install

Link Youtube : https://www.youtube.com/watch?v=DjdjAg_2xVY

Dalam membangun project dengan framework codeigniter bahasa default atau language package nya adalah bahasa inggris. Nah pada kesempatan ini...

Dalam membangun project dengan framework codeigniter bahasa default atau language package nya adalah bahasa inggris. Nah pada kesempatan ini kita akan mengganti menjadi bahasa indonesia. Untuk dukungan bahasanya banyak tersedia berbagai forum.

Dan untuk bahasa dukungan saya ambil dari blog http://warizzmann.github.io/codigniter3-language-bahasa/ untuk core codeigniter nya sudah mendukung codeigniter 3

Silakan didownload di link tersebut lalu ekstrak dan tempatkan folder ekstrak an dan ganti nama foldernya menjadi indonesia  di folder ./application/language/ sehingga didalam folder language menjadi 2 folder yaitu english dan indonesia

selanjutnya lakukan konfigurasi pada file config.php pada folder ./application/config/ ubah seperti dibawah ini


$config['language'] = 'english';
ubah menjadi
$config['language'] = 'indonesia';

sampai disini kita sudah berhasil mengganti bahasa dukungan codeigniter
Untuk output bisa dilihat dibawah ini

Gambar pada form validasi 

Gambar pada error koneksi ke database

Pada artikel sebelumnya kita telah membuat upload file dan lanjutnya adalah kita akan modifikasi dan menghapus tersebut. Oke langsung kita m...

Pada artikel sebelumnya kita telah membuat upload file dan lanjutnya adalah kita akan modifikasi dan menghapus tersebut. Oke langsung kita mulai
Langkah awal kita tambahkan fungsi untuk menangani edit dan hapus upload nya buat buatkan dibawah fungsi terakhir pada controller Upload.php

//fungsi untuk menangani pemanggilan aksi edit ketika form upload di submit
    public function aksi_edit(){
        $kode     = addslashes($this->input->post('kode'));
        $nama     = addslashes($this->input->post('nama'));
        $keterangan    = addslashes($this->input->post('keterangan'));
        $filelama = $this->input->post('gambarold');
 
        //configurasi upload
        $path   = "./assets/uploads/";
        $nmfile = "file_".time(); //nama file saya beri nama langsung dan diikuti fungsi time
        $config['upload_path'] = $path; //path folder
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
        $config['max_size'] = '2048'; //maksimum besar file 2M
        $config['max_width']  = '1288'; //lebar maksimum 1288 px
        $config['max_height']  = '768'; //tinggi maksimu 768 px
        $config['file_name'] = $nmfile; //nama yang terupload nantinya
        $this->upload->initialize($config);

        if ($this->upload->do_upload('gambar')){
                $gbr = $this->upload->data(); //gambar diupload
                $data = array(
                  'nm_gbr'  => $gbr['file_name'],
                  'tipe_gbr' => $gbr['file_type'],
                  'ket_gbr'=> $keterangan
                );
                @unlink($path.$filelama);//menghapus gambar lama, variabel dibawa dari form
                $this->mupload->getupdate($kode,$data); //model update data
                $this->session->set_flashdata("pesan", "Gambar berhasil diperbaharui"); //pesan yang tampil setelah berhasil di update
                redirect('upload');
        }else{ 
            $info = array(
              'aket'=>$keterangan,
              'judul' => 'Tambah Gambar',
              'aksi' => 'aksi_edit'
            );
            $err = $this->upload->display_errors(); //error upload akan dimunculkan pada pesan

            $this->session->set_flashdata("pesan", "Data Gagal di update <br>".$err);

            //ketika error terjadi halaman akan tetap di form barang
            $this->load->view('header',$info); 
            $this->load->view('upload/vformupload',$info);
            $this->load->view('footer',$info); 
        }
    }
 
    //fungsi untuk menangani apabila hapus gambar dan hapus file upload
    public function hapus(){
        $id = $this->input->get('id'); //variabel id dari url
        $path = "./assets/uploads/";
        $row = $this->mupload->getbyid($id);
        $gbrlama = $row->nm_gbr;
        @unlink($path.$gbrlama);//menghapus gambar lama, variabel dibawa dari form
        $this->mupload->getdelete($id);
        $this->session->set_flashdata("pesan", "File berhasil dihapus");
        redirect('upload');
    }


Untuk Models Mbarang.php nya buat jadi seperti ini
<?php
class Mbarang extends CI_Model {
    var $tabel = 'tb_barang'; //variabel tabel

    function __construct() {
        parent::__construct();
    }

    function getallbarang($batas =null,$offset=null,$key=null) {
        $this->db->from($this->tabel);
        $this->db->order_by('kode_brg','DESC');
        if($batas != null){
            $this->db->limit($batas,$offset);
        }
        if ($key != null) {
           $this->db->or_like($key);
        }
        $query = $this->db->get();

        //cek apakah ada barang
        if ($query->num_rows() > 0) {
            return $query->result();
        }
    }

    function getbarangbyid($id) {
        $this->db->from($this->tabel);
        $this->db->where('kode_brg', $id);

        $query = $this->db->get();
        if ($query->num_rows() == 1) {
            return $query->row();
        }
    }

    function getinsert($data){
        $this->db->insert($this->tabel, $data);
        return TRUE;
    }

    function getupdate($id,$data) {
        $this->db->where('kode_brg', $id);
        $this->db->update($this->tabel, $data);
        return TRUE;
    }

    function delbarang($id) {
        $this->db->where('kode_brg', $id);
        $this->db->delete($this->tabel);
        if ($this->db->affected_rows() == 1) {
            return TRUE;
        }
        return FALSE;
    }

    function countbarang(){
        $query = $this->db->get($this->tabel)->num_rows();
        return $query;
    }

    function  countbarangsearch($orlike) {
        $this->db->or_like($orlike);
        $query = $this->db->get($this->tabel);

        return $query->num_rows();
    }
}
?>

untuk views nya pada artikel sebelumnya sudah saya includekan langsung.

nah coba jalankan di browser apakah sudah berhasil, jika diikuti dengan baik saya fikir untuk proses edit dan hapusnya pasti berhasil
Terimakasih semoga tutorial ini bermanfaat

Sumber Referensi
https://www.codeigniter.com/user_guide/libraries/file_uploading.html

Pada sebuah form input php, pasti kita tidak lepas dari input file atau input gambar untuk mendukung sebuah artikel kita. Maka dari itu saya...

Pada sebuah form input php, pasti kita tidak lepas dari input file atau input gambar untuk mendukung sebuah artikel kita. Maka dari itu saya akan share skrip upload files pada codeigniter. Karena itu masih dalam seri Memulai Project Codeigniter saya sarankan agar membaca artikel sebelumnya dan core codeigniternya saya dari artikel sebelumnya.

Pada codeigniter librari upload sendiri sudah tersedia tanpa kita harus membuat librari baru lagi. Pada codeigniter kita tinggal memanggil $this->load->library('upload') pada contoller atau supaya otamatis bisa dipanggil pada setiap controller tambahkan library upload pada autoload.php untuk mempersingkat waktu mari kita mulai implementasinya.

Langkah 1 : Setting

Agar file berhasil disimpan buat folder ./assets/uploads karna path folder uploadnya saya buat seperti itu agan bisa ubah sesuai dengan selera agan

Setting pada config/routes.php agar langsung otomatis mengakses controller upload ketika url diakses di browser
$route['default_controller'] = "upload";

Setting pada config/autoload.php agar terload otomatis
$autoload['libraries'] = array('database','session','form_validation','pagination','upload');

Kemudian pada models pada autoload tambahkan model mupload
$autoload['model'] = array('mbarang','mupload');

Langkah 2 : Tabel database

CREATE TABLE `tb_uploadimage` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `nm_gbr` varchar(35) DEFAULT NULL,
  `tipe_gbr` varchar(10) DEFAULT NULL,
  `ket_gbr` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

Langkah 3 : Views

Pada kasus kali, yang akan kita buat adalah proses upload untuk file gambar, pertama buat view untuk tampilan awalnya dimana semua data yang ada didatabase ditampilkan beri nama vupload.php simpan di folder ./application/views/upload/

<section>
<div class="container"> 
 <h1>Data File Gambar</h1>
  <a href="<?php echo base_url();?>upload/tambah" class="button">Tambah</a>
  <div class="pesan-sukses"><?php echo $this->session->flashdata("pesan");?></div> 
 
  <table class="table">
   <tr>
    <th style="width: 5%;">No</th>
    <th>Keterangan File</th>
    <th>Tipe File</th>
    <th>Gambar File</th>
    <th></th>
 
   </tr>
   <?php if(!$queryupload){?>
    <tr><td colspan="9">Data Masih Kosong</td> </tr>
   <?php }else{
     $no =0; 
     foreach ($queryupload as $rstupld) {$no++;
   ?>
   <tr>
    <td><?php echo $no;?></td>
    <td><?php echo $rstupld->ket_gbr;?></td>
    <td><?php echo $rstupld->tipe_gbr;?></td>
    <td><img style="width: 200px;"> src="<?php echo base_url();?>assets/uploads/<?php echo $rstupld->nm_gbr;?>"></td> 
    <td><a href="<?php echo base_url()?>upload/edit/?id=<?php echo $rstupld->id;?>" class="button3 button-sm">EDIT</a>
     <a onclick="return KonfirmasiHapus()" href="<?php echo base_url()?>upload/hapus/?id=<? echo $rstupld->id;?>" class="button4 button-sm">HAPUS</a>
    </td>
   </tr>
   <?php }}?>
  </table>
 
</div>
</section>
<script type="text/javascript">
function KonfirmasiHapus() {
  return confirm("Apa anda yakin akan menghapus data ini?");
}
</script>
 

Kemudian untuk view form nya simpan dengan nama vformupload.php dan simpan juga di ./application/views/upload/

<?php 
if($aksi=='aksi_tambah'){
 $kode = "";
 $filegambar = "";
 $keterangan = @$aket;
}elseif($aksi=='aksi_edit'){
 $kode = $row->id;
 $filegambar = $row->nm_gbr;
  $keterangan = $row->ket_gbr;
}
?>
<section>
<div class="container"> 
 <h1>Form Upload Gambar</h1>
  <div class="form">
  <div class="pesan-error"><?php echo $this->session->flashdata("pesan");?></div> 
 <form method="post" enctype="multipart/form-data" action="<?php echo base_url()?>upload/<?php echo $aksi?>"> 
  <label>Keterangan</label>
    <textarea name="keterangan"><?php echo $keterangan;?></textarea>

  <label>File Gambar</label>
    <input type="file" name="gambar" class="w1">
    <input type="hidden" name="gambarold" value="<?php echo $filegambar;?>"> 
    
    <input type="submit" class="button" name="simpan" value="Simpan">
    <a href="<?php echo base_url();?>upload" class="button2">Kembali</a>
    <input type="hidden" name="kode" value="<?php echo $kode;?>">

   </form>
   
  </div>
</div>
</section>

Langkah 4 : Controllers

buat file controller beri nama Upload.php dan simpan difolder application/controllers

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Upload extends CI_Controller {
/******************************************************
  | Upload
  | controller Upload view, create, update, delete
  | by gTech
  *****************************************************/
  public function __construct() {
    parent::__construct();
  }
  
    //fungsi awal ketika kita panggil controller gambar
    public function index(){
      $data['judul'] = 'Upload Gambar'; //judul title      
      $data['queryupload'] = $this->mupload->getallimage(); //model semua file 
      
      //template views
      $this->load->view('header',$data); //load header
      $this->load->view('upload/vupload',$data); //load views
      $this->load->view('footer',$data); //load footer
    }
     
    //fungsi form tambah ketika kita panggil pada link 
    public function tambah(){     
      $data['judul'] = 'Tambah Gambar';
      $data['aksi'] = 'aksi_tambah';

      //template views
      $this->load->view('header',$data);
      $this->load->view('upload/vformupload',$data);
      $this->load->view('footer',$data);
    }
    //fungsi form edit ketika kita panggil pada link
    public function edit(){
      $id = $this->input->get('id');
      $data['row'] = $this->mupload->getbyid($id);
      $data['judul'] = 'Edit Gambar';
      $data['aksi']  = 'aksi_edit';

      //template views
      $this->load->view('header',$data);
      $this->load->view('upload/vformupload',$data);
      $this->load->view('footer',$data);
    }
    //fungsi untuk menangani pemanggilan aksi tambah ketika form di submit
    public function aksi_tambah(){
        //deklarasikan variabel dari form
        $nama     = addslashes($this->input->post('nama'));
        $keterangan    = addslashes($this->input->post('keterangan'));
 
        //validasi 
        $this->form_validation->set_rules('gambar', 'File Gambar', 'trim|xss_clean'); //file gambar

        //configurasi upload
        $nmfile = "file_".time(); //nama file saya beri nama langsung dan diikuti fungsi time
        $config['upload_path'] = './assets/uploads/'; //path folder
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
        $config['max_size'] = '2048'; //maksimum besar file 2M
        $config['max_width']  = '1288'; //lebar maksimum 1288 px
        $config['max_height']  = '768'; //tinggi maksimu 768 px
        $config['file_name'] = $nmfile; //nama yang terupload nantinya
        $this->upload->initialize($config);

        if ($this->form_validation->run() == TRUE) {
            if ($this->upload->do_upload('gambar')){
                $gbr = $this->upload->data();
                $data = array(
                  'nm_gbr'  => $gbr['file_name'],
                  'tipe_gbr' => $gbr['file_type'],
                  'ket_gbr'=> $keterangan
                );
                $this->mupload->getinsert($data); //model insert data
                $this->session->set_flashdata("pesan", "Data berhasil di insert"); //pesan yang tampil setalah berhasil di insert
                redirect('upload');
            }else{
              $info = array(
                'aket'=>$keterangan,
                'judul' => 'Tambah Gambar',
                'aksi' => 'aksi_tambah'
              );
              $err = $this->upload->display_errors(); //error upload
              $this->session->set_flashdata("pesan", "Data Gagal di insert
".$err);
              //ketika error terjadi halaman akan tetap di form 
              $this->load->view('header',$info); 
              $this->load->view('upload/vformupload',$info);
              $this->load->view('footer',$info); 

            }
        }else{
          //ini berfungsi agar field form tidak menjadi kosong, dibuat dalam array
          //variabel akan tetap dibawa jika error terjadi pada saat validasi
          $info = array(
            'aket'=>$keterangan,
            'judul' => 'Tambah Gambar',
            'aksi' => 'aksi_tambah'
          );
          $err = validation_errors(); //error validasi akan dimunculkan pada pesan

          $this->session->set_flashdata("pesan", "Data Gagal di insert
".$err);

          //ketika error terjadi halaman akan tetap di form barang
          $this->load->view('header',$info); 
          $this->load->view('upload/vformupload',$info);
          $this->load->view('footer',$info); 
        }
      }
}

/* End of file Upload.php */
/* Location: ./application/controllers/Upload.php */

Pada skrip saya sudah buatkan keterangannya agar lebih mudah dipahami, kemudian saya juga.

Langkah 5 : Model

Kemudian selanjutnya kita buat skrip untuk modelnya, beri nama Mupload.php simpan di folder ./application/models/

<?php class Mupload extends CI_Model {
    var $tabel = 'tb_uploadimage'; //buat variabel tabel 

    //fungsi untuk menampilkan semua data dari tabel database
    function getallimage() {
        $this->db->from($this->tabel);
        $query = $this->db->get();

        //cek apakah ada data
        if ($query->num_rows() > 0) {
            return $query->result();
        }
    }
    //query untuk satu data dari tabel
    function getbyid($id) {
        $this->db->from($this->tabel);
        $this->db->where('id', $id);

        $query = $this->db->get();
        if ($query->num_rows() == 1) {
            return $query->row();
        }
    }
    //query insert ke database
    function getinsert($data){
       $this->db->insert($this->tabel, $data);
       return TRUE;
    }
}
?>

Output


Gambar tampilan upload

gambar tampilan form upload

gambar tampilan hasil upload berhasil 


sampai disini kita sudah berhasil mengupload gambar dan menyimpannya ke dalam database, untuk edit dan hapus file upload akan kita bahas pada artikel selanjutnya. Tetap ikut
Sekian dan terimakasih

Bersambung

Fungsi helper sangat membantu kita dalam menangani berbagai macam yang akan diterapkan di tampilan akhir. Pada codeigniter sudah disediakan ...

Fungsi helper sangat membantu kita dalam menangani berbagai macam yang akan diterapkan di tampilan akhir. Pada codeigniter sudah disediakan helper fungsi yang dapat membantu kita dalam menangani berbagai macam masalah.


Pada kesempatan ini kita akan membuat fungsi helper buatan kita sendiri dan dapat diterapkan pada aplikasi yang kita bangun.

  1. Dalam membuat fungsi helper yang mesti kita ingat adalah ini membantu dalam penangan masalah di codeigniter (hanya pembantu) bukan menjadi penanganan utama. Kalo utama buat aja di contollernya.
  2. Kemudian penamaan helper bisanya dimulai dengan namahelper kemudian diakhiri dengan _helper.php
  3. Kita dapat menyimpan helper kita ini di folder /application/helpers/
  4. Helper dapat kita buat untuk menangani penggantian jenis kelamin contoh laki-laki dan perempuan yang dimana di database kita simpan dengan nilai value 0 atau 1
  5. Helper bisa juga kita buat untuk menagani pergantian status, contoh aktif, noaktif, pending dan lain sebagainya

Baik pada artikel sebelum sebelumnya saya sudah pernah menambah sebuah artikel tentang fungsi tanggal indonesia di php dan codeigniter ini bisa kita gabungkan menjadi helper buatan kita. Jika belum dibaca silakan dibuka pada link dibawah :
Fungsi PHP format tanggal Indonesia
Membuat Fungsi konversi mata uang Rupiah pada PHP

Mari kita buat beberapa contoh fungsi, dan kita buat dalam satu helper, beri nama file ini dengan nama fungsi_helper.php dan simpan sesuai keterangan diatas

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

//function tanggal indonesia yang berformat yyyy-mm-dd dan akan menghasilkan output 12 Juni 2017
 function tgl_indo($tgl){
    $ubah = gmdate($tgl, time()+60*60*8);
 $pecah = explode("-",$ubah);
 $tanggal = $pecah[2];
 $bulan = bulan($pecah[1]);
 $tahun = $pecah[0];
 return $tanggal.' '.$bulan.' '.$tahun;
} 
//function tanggal yang berformat timestamp yang diubah menjadi seperti ini 12 Jun 2017
 function tgldikit($tgl){

     $inttime=date('Y-m-d H:i:s',$tgl);

     $arr_bulan=array("","Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des");
      $tglBaru=explode(" ",$inttime);
      $tglBaru1=$tglBaru[0];$tglBaru2=$tglBaru[1];
      $tglBarua=explode("-",$tglBaru1);
      $tgl=$tglBarua[2]; $bln=$tglBarua[1]; $thn=$tglBarua[0];
      if(substr($bln,0,1)=="0") $bln=substr($bln,1,1);
      $bln=substr($arr_bulan[$bln],0,10);
      $ubahTanggal="$tgl $bln $thn";

  return $ubahTanggal;
}

 //fungsi untuk mengubah nilai integer menjadi format rupiah dengan fungsi number_format diphp
 function rupiah($nilai, $pecahan = 0){
   return number_format($nilai, $pecahan, ',', '.');
} 

//fungsi untuk mengubah nilai integer menjadi format rupiah dengan strlen (penghitungan karakter) kemudian dipisah berdasarkan ratusan ribuan dan seterusnya
 function rupiah2($harga)
{
 $a=(string)$harga; //membuat $harga menjadi string
 $len=strlen($a); //menghitung panjang string $a

 if ( $len <=18 )
 {
  $ratril=$len-3-1;
  $ramil=$len-6-1;
  $rajut=$len-9-1; //untuk mengecek apakah ada nilai ratusan juta (9angka dari belakang)
  $juta=$len-12-1; //untuk mengecek apakah ada nilai jutaan (6angka belakang)
  $ribu=$len-15-1; //untuk mengecek apakah ada nilai ribuan (3angka belakang)

  $angka='';
  for ($i=0;$i<$len;$i++)
  {
   if ( $i == $ratril )
   {
    $angka=$angka.$a[$i].".";
   }
   else if ($i == $ramil )
   {
    $angka=$angka.$a[$i].".";
   }
   else if ( $i == $rajut )
   {
    $angka=$angka.$a[$i]."."; //meletakkan tanda titik setelah 3angka dari depan
   }
   else if ( $i == $juta )
   {
    $angka=$angka.$a[$i]."."; //meletakkan tanda titik setelah 6angka dari depan
   }
   else if ( $i == $ribu )
   {
    $angka=$angka.$a[$i]."."; //meletakkan tanda titik setelah 9angka dari depan
   }
   else
   {
    $angka=$angka.$a[$i];
   }
  }
 }
 return $angka.",-";
 }

untuk menjalankan tinggal helper nya di load kemudian panggil nama fungsi nya di controller atau view. Mari kita coba implementasikan ke project kita sebelumnya yaitu crud.
Pertama load helper fungsi di autoload atau bisa juga dload pada controller, saya akan load di autoload, tambahkan pada bagian seperti dibawah
$autoload['helper'] = array('url','form','fungsi');

kemudian pada views vbarang.php ubah menjadi seperti dibawah ini
<section>
<div class="container"> 
 <h1>Data Barang</h1>
  <a href="<?php echo base_url();?>barang/tambah" class="button">Tambah</a>
  <div class="pesan-sukses"><?php echo $this->session->flashdata("pesan");?></div> 
 <form action="<?php echo base_url();?>barang/cari/">
 <div class="inputgroup">
     <input name="key" value="" class="formcontrol" placeholder="Search" type="text" >
     <span class="input-group-btn">
        <button class="btn-default" type="submit">Cari</button>
     </span>
     <div class="clear"></div>
</div>
</form>
  <table class="table">
   <tr>
    <th>No</th>
    <th>Kode</th>
    <th>Barcode</th>
    <th>Nama Barang</th>
    <th>Harga </th>
    <th>Jenis </th>
    <th>Satuan </th>
    <th>Stok </th>
    <th style="width: 30%;">Keterangan </th>
    <th></th>
   </tr>
   <?php if(!$querybarang){?>
    <tr><td colspan="9">Data Masih Kosong</td> </tr>
   <?php }else{
     $no =$jlhpage; 
     foreach ($querybarang as $rstbrg) {$no++;
   ?>
   <tr>
    <td><?php echo $no;?></td>
    <td>#<?php echo $rstbrg->kode_brg;?></td>
    <td><?php echo $rstbrg->barcode;?></td>
    <td><?php echo $rstbrg->nama_brg;?></td>
    <td><?php echo rupiah($rstbrg->harga_brg);?></td>
    <td><?php echo $rstbrg->jenis;?></td>
    <td><?php echo $rstbrg->satuan;?></td>
    <td><?php echo $rstbrg->stok_brg;?></td>
    <td><?php echo $rstbrg->keterangan;?></td>
    <td><a href="<?php echo base_url()?>barang/edit/?id=<? echo $rstbrg->kode_brg;?>">Edit</a>
     <a href="<?php echo base_url()?>barang/detail/?id=<? echo $rstbrg->kode_brg;?>">Detail</a>
     <a onclick="return KonfirmasiHapus()" href="<?php echo base_url()?>barang/hapus/?id=<? echo $rstbrg->kode_brg;?>">Hapus</a>
    </td>
   </tr>
   <?php }}?>
  </table>
  <div class="pagination">
   <span class="pagination-btns">
          <?=$page_halaman?>
          <div class="clear"></div>
      </span>
        </div> 
</div>
</section>
<script type="text/javascript">
function KonfirmasiHapus() {
  return confirm("Apa anda yakin akan menghapus data ini?");
}
</script>
  
pada baris ke-39 saya panggil fungsi rupiah() sebelum variabel.

dan berikut tampilan nya jika lihat di browser
terlihat harga dirubah menjadi format rupiah

Demikian tutorial kali semoga bermanfaat
mungkin yang mau nambah fungsi bisa dibuat komentar biar saya naikkan pada artikel ini


Melanjutkan tutorial Memulai Project CodeIgniter : Part 6 CRUD bagian 2 kali ini saya akan membagikan tutorial untuk membuat paging dan sea...

Melanjutkan tutorial Memulai Project CodeIgniter : Part 6 CRUD bagian 2 kali ini saya akan membagikan tutorial untuk membuat paging dan searching pada CRUD yang telah kita buat.

Oke saya anggap untuk proses awal nya sudah harus dilakukan dan ini merupakan tutorial lanjutan. Saya harapkan tahap demi tahap diperhatikan agar penyisipan skripnya berjalan dengan baik : jika belum dibaca silakan di klik Label CodeIgnter untuk melihat artikel mengenai codeigniter sebelumnya.

1. Config

pada file autoload.php pada folder ./application/config/ tambahkan library pagination buat seperti berikut
$autoload['libraries'] = array('database','session','form_validation','pagination');

2. Controller


buka controller Barang.php pada folder aplication/controllers dan pada baris public function index() tambahkan script untuk paging, ubah skrip sebelumnya menjadi seperti dibawah ini :

public function index(){
      $data['judul'] = 'CRUD CodeIgniter Studi Kasus Barang'; //judul title
      
      //pagination
      $page=$this->input->get('per_page');
      $batas=1; //jlh data yang ditampilkan per halaman
      if(!$page)://jika page bernilai kosong maka batas akhir akan di set 0
        $offset = 0;
      else:
        $offset = $page; // jika tidak kosong maka nilai batas akhir nya akan diset nilai page terakhir
      endif;

      $config['page_query_string'] = TRUE; //mengaktifkan pengambilan method get pada url default
      $config['base_url'] = base_url().'barang?';   //url yang muncul ketika tombol pada paging diklik
      $config['total_rows'] = $this->mbarang->countbarang(); // jlh total barang
      $config['per_page'] = $batas; //batas sesuai dengan variabel batas
      $config['uri_segment'] = $page; //merupakan posisi pagination dalam url pada kesempatan ini saya menggunakan method get untuk menentukan posisi pada url yaitu per_page
      $config['full_tag_open'] = '<ul class="pagination">';
      $config['full_tag_close'] = '</ul>';
      $config['first_link'] = '&laquo; First';
      $config['first_tag_open'] = '<li class="prev page">';
      $config['first_tag_close'] = '</li>';
      $config['last_link'] = 'Last &raquo;';
      $config['last_tag_open'] = '<li class="next page">';
      $config['last_tag_close'] = '</li>';
      $config['next_link'] = 'Next &rarr;';
      $config['next_tag_open'] = '<li class="next page">';
      $config['next_tag_close'] = '</li>';
      $config['prev_link'] = '&larr; Prev';
      $config['prev_tag_open'] = '<li class="prev page">';
      $config['prev_tag_close'] = '</li>';
      $config['cur_tag_open'] = '<li class="active"><a href="">';
      $config['cur_tag_close'] = '</a></li>';

      $config['num_tag_open'] = '<li class="page">';
      $config['num_tag_close'] = '</li>';
      $this->pagination->initialize($config);
      $data['page_halaman']=$this->pagination->create_links();
      $data['jlhpage']=$page;

      $data['querybarang'] = $this->mbarang->getallbarang($batas,$offset); //model semua barang
      
      //template views
      $this->load->view('header',$data);
      $this->load->view('barang/vbarang',$data); //load views vbarang
      $this->load->view('footer',$data);
    }

Penjelasan

  1. pada baris $config['total_rows'] total diambil memalui query yang ditambahkan pada model
  2. pada baris $data['querybarang'] getallbarang berisi variabel $batas dan $offset untuk membatasi jumlah per halaman yang ditangani melalui query di model


Masih pada controller Barang.php selanjutnya tambahkan sebuah function cari() untuk menangani pencarian nantinya dan buat seperti dibawah ini :

public function cari(){
        $key= $this->input->get('key'); //method get key
        $page=$this->input->get('per_page');  //method get per_page

        $search=array(
            'nama_brg'=> $key,
            'barcode'=> $key
        ); //array pencarian yang akan dibawa ke model

        $batas=5; //jlh data yang ditampilkan per halaman
        if(!$page): //jika page bernilai kosong maka batas akhirna akan di set 0
           $offset = 0;
        else:
           $offset = $page; // jika tidak kosong maka nilai batas akhir nya akan diset nilai page terakhir
        endif;

        $config['page_query_string'] = TRUE; //mengaktifkan pengambilan method get pada url default
        $config['base_url'] = base_url().'barang/?key='.$key;   //url yang muncul ketika tombol pada paging diklik
        $config['total_rows'] = $this->mbarang->countbarangsearch($search); // jlh total barang
        $config['per_page'] = $batas; //batas sesuai dengan variabel batas
        $config['uri_segment'] = $page; //merupakan posisi pagination dalam url pada kesempatan ini saya menggunakan method get untuk menentukan posisi pada url yaitu per_page
        $config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';
        $config['first_link'] = '&laquo; First';
        $config['first_tag_open'] = '<li class="prev page">';
        $config['first_tag_close'] = '</li>';
        $config['last_link'] = 'Last &raquo;';
        $config['last_tag_open'] = '<li class="next page">';
        $config['last_tag_close'] = '</li>';
        $config['next_link'] = 'Next &rarr;';
        $config['next_tag_open'] = '<li class="next page">';
        $config['next_tag_close'] = '</li>';
        $config['prev_link'] = '&larr; Prev';
        $config['prev_tag_open'] = '<li class="prev page">';
        $config['prev_tag_close'] = '</li>';
        $config['cur_tag_open'] = '<li class="active"><a href="">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li class="page">';
        $config['num_tag_close'] = '</li>';
        $this->pagination->initialize($config);
        $data['page_halaman']=$this->pagination->create_links();
        $data['jlhpage']=$page;

        $data['judul'] = 'CRUD CodeIgniter Studi Pencarian Kasus Barang'; //judul title
        $data['querybarang'] = $this->mbarang->getallbarang($batas,$offset,$search); //query model semua barang

        //template views
        $this->load->view('header',$data);
        $this->load->view('barang/vbarang',$data); //load views vbarang
        $this->load->view('footer',$data);
    }



3. Model

Buka model Mbarang.php pada folder aplication/models dan pada function getallbarang() ubah skrip seperti dibawah ini :

function getallbarang($batas =null,$offset=null,$key=null) {
    $this->db->from($this->tabel);
    if($batas != null){
       $this->db->limit($batas,$offset);
    }
    if ($key != null) {
       $this->db->or_like($key);
    }
    $query = $this->db->get();

    //cek apakah ada barang
    if ($query->num_rows() > 0) {
        return $query->result();
    }
}

kemudian tambahkan sebuah function untuk menangani jumlah total field barang seperti dibawah ini :

function countbarang(){
    $query = $this->db->get($this->tabel)->num_rows();
    return $query;
}

selanjutnya buat sebuah function kembali untuk menangani jumlah total pencarian

function  countbarangsearch($orlike) {
    $this->db->or_like($orlike);
    $query = $this->db->get($this->tabel);

    return $query->num_rows();
}

3. Views

selanjutnya kita beralih ke tampilanya buka file vbarang.php pada folder application/views dan buat seperti dibawah ini :

<section>
<div class="container"> 
 <h1>Data Barang</h1>
  <a href="<?php echo base_url();?>barang/tambah" class="button">Tambah</a>
  <div class="pesan-sukses"><?php echo $this->session->flashdata("pesan");?></div>	
 <form action="<?php echo base_url();?>barang/cari/">
 <div class="inputgroup">
     <input name="key" value="" class="formcontrol" placeholder="Search" type="text" >
     <span class="input-group-btn">
        <button class="btn-default" type="submit">Cari</button>
     </span>
     <div class="clear"></div>
</div>
</form>
  <table class="table">
  	<tr>
  		<th>No</th>
  		<th>Kode</th>
  		<th>Barcode</th>
  		<th>Nama Barang</th>
  		<th>Harga </th>
  		<th>Jenis </th>
  		<th>Satuan </th>
  		<th>Stok </th>
  		<th>Keterangan </th>
  		<th></th>
  	</tr>
  	<?php if(!$querybarang){?>
  	 <tr><td colspan="9">Data Masih Kosong</td>	</tr>
  	<?php }else{
  	  $no =$jlhpage;	
  	  foreach ($querybarang as $rstbrg) {$no++;
  	?>
  	<tr>
  		<td><?php echo $no;?></td>
  		<td>#<?php echo $rstbrg->kode_brg;?></td>
  		<td><?php echo $rstbrg->barcode;?></td>
  		<td><?php echo $rstbrg->nama_brg;?></td>
  		<td><?php echo $rstbrg->harga_brg;?></td>
  		<td><?php echo $rstbrg->jenis;?></td>
  		<td><?php echo $rstbrg->satuan;?></td>
  		<td><?php echo $rstbrg->stok_brg;?></td>
  		<td><?php echo $rstbrg->keterangan;?></td>
  		<td><a href="<?php echo base_url()?>barang/edit/?id=<? echo $rstbrg->kode_brg;?>">Edit</a>
  			<a href="<?php echo base_url()?>barang/detail/?id=<? echo $rstbrg->kode_brg;?>">Detail</a>
  			<a onclick="return KonfirmasiHapus()" href="<?php echo base_url()?>barang/hapus/?id=<? echo $rstbrg->kode_brg;?>">Hapus</a>
  		</td>
  	</tr>
  	<?php }}?>
  </table>
  <div class="pagination">
  	<span class="pagination-btns">
          <?=$page_halaman?>
          <div class="clear"></div>
      </span>
        </div> 
</div>
</section>
<script type="text/javascript">
function KonfirmasiHapus() {
  return confirm("Apa anda yakin akan menghapus data ini?");
}
</script>


pada skrip vbarang.php saya tambahkan sebuah form untuk pencarian dan pada bagian panel-footer saya tambahkan variabel untuk paging nya.


4. Output

pada hasil akhirnya akan tampil seperti berikut


Tampilan halaman setelah di terapkan script diatas




Paging halaman 2


Pencarian dengan key meja


Demikian tutorial kali ini semoga bermanfaat.
Tetap ikuti artikel mengenani codeigniter di blog saya

Pada artikel sebelumnya Memulai Project CodeIgniter : Part 6 CRUD , kita lanjutkan kembali setelah kita buat controller nya mari kita buat ...

Pada artikel sebelumnya Memulai Project CodeIgniter : Part 6 CRUD, kita lanjutkan kembali setelah kita buat controller nya mari kita buat sebuah model nya beri nama Mbarang.php dan simpan di folder ./application/models/ buat script nya seperti dibawah ini
<?php
class Mbarang extends CI_Model {
    var $tabel = 'tb_barang'; //variabel nama tabel

    function __construct() {
        parent::__construct();
    }

    function getallbarang() { //query semua data di tabel barang
        $this->db->from($this->tabel);
        $this->db->order_by('kode_brg','DESC');
        $query = $this->db->get();

        //cek apakah ada barang
        if ($query->num_rows() > 0) {
            return $query->result();
        }
    }

    function getbarangbyid($id) { //query berdasarkan id barang tabel barang

        $this->db->from($this->tabel);
        $this->db->where('kode_brg', $id);

        $query = $this->db->get();
        if ($query->num_rows() == 1) {
            return $query->row();
        }
    }

    function getinsert($data){ //query insert data
        $this->db->insert($this->tabel, $data);
        return TRUE;
    }

    function getupdate($id,$data) { //query update data
        $this->db->where('kode_brg', $id);
        $this->db->update($this->tabel, $data);
        return TRUE;
    }

    function delbarang($id) { //query hapus data
        $this->db->where('kode_brg', $id);
        $this->db->delete($this->tabel);
        if ($this->db->affected_rows() == 1) {
            return TRUE;
        }
        return FALSE;
    }
}
?>


selanjutnya kita akan membuat views  pada tampilannya kita akan membuat 3 halaman baru yaitu halaman barang vbarang.php, halaman form vformbarang.php dan halaman detail vdetailbarang.php agar lebih rapi saya buat dalam satu folder ./barang/ dan posisi nya di folder ./application/views/barang/ otomatis kita harus sesuaikan pemanggilan views di controller nya dengan menambahkan folder barang/_nama_views setiap memanggil views nya, bisa dilihat pada controllernya.

vbarang.php
<section>
<div class="container"> 
 <h1>Data Barang</h1>
  <a href="<?php echo base_url();?>barang/tambah" class="button">Tambah</a>
  <div class="pesan-sukses"><?php echo $this->session->flashdata("pesan");?></div>	
  <table class="table">
  	<tr>
  		<th>No</th>
  		<th>Kode</th>
  		<th>Barcode</th>
  		<th>Nama Barang</th>
  		<th>Harga </th>
  		<th>Jenis </th>
  		<th>Satuan </th>
  		<th>Stok </th>
  		<th>Keterangan </th>
  		<th></th>
  	</tr>
  	<?php if(!$querybarang){?>
  	 <tr><td colspan="9">Data Masih Kosong</td>	</tr>
  	<?php }else{
  	  $no =0;	
  	  foreach ($querybarang as $rstbrg) {$no++;
  	?>
  	<tr>
  		<td><?php echo $no;?></td>
  		<td>#<?php echo $rstbrg->kode_brg;?></td>
  		<td><?php echo $rstbrg->barcode;?></td>
  		<td><?php echo $rstbrg->nama_brg;?></td>
  		<td><?php echo $rstbrg->harga_brg;?></td>
  		<td><?php echo $rstbrg->jenis;?></td>
  		<td><?php echo $rstbrg->satuan;?></td>
  		<td><?php echo $rstbrg->stok_brg;?></td>
  		<td><?php echo $rstbrg->keterangan;?></td>
  		<td><a href="<?php echo base_url()?>barang/edit/?id=<? echo $rstbrg->kode_brg;?>">Edit</a>
  			<a href="<?php echo base_url()?>barang/detail/?id=<? echo $rstbrg->kode_brg;?>">Detail</a>
  			<a onclick="return KonfirmasiHapus()" href="<?php echo base_url()?>barang/hapus/?id=<? echo $rstbrg->kode_brg;?>">Hapus</a>
  		</td>
  	</tr>
  	<?php }}?>
  </table>
</div>
</section>
<script type="text/javascript">
function KonfirmasiHapus() {
  return confirm("Apa anda yakin akan menghapus data ini?");
}
</script>
 
 
vformbarang.php
<?php 
if($aksi=='aksi_tambah'){
	$kode = "";
	$bkode = @$abkode;
	$nama = @$anama;
	$harga = @$aharga;
	$stok = @$astok;
	$jenis = @$ajenis;
	$satuan = @$asatuan;
	$keterangan = @$aket;
}elseif($aksi=='aksi_edit'){
	$kode = $row->kode_brg;
	$bkode = $row->barcode;
	$nama = $row->nama_brg;
	$harga = $row->harga_brg;
	$stok = $row->stok_brg;
	$jenis = $row->jenis;
	$satuan = $row->satuan;
	$keterangan = $row->keterangan;
}
?>
<section>
<div class="container"> 
 <h1>Form Barang</h1>
 	<div class="form">
 	<div class="pesan-error"><?php echo $this->session->flashdata("pesan");?></div>	
	<form method="post" action="<?php echo base_url()?>barang/<?php echo $aksi;?>">	
		<label>Barcode Barang</label>
  		<input type="text" name="barcode" class="w4" value="<?php echo $bkode;?>">
  		<label>Nama Barang</label>
  		<input type="text" name="nama" value="<?php echo $nama;?>">
  		<label>Harga Barang</label>
  		<input type="text" name="harga" class="w3" value="<?php echo $harga;?>">
  		<label>Stok Barang</label>
  		<input type="text" name="stok" class="w3" value="<?php echo $stok;?>">
  		<label>Jenis</label>
  		<input type="text" name="jenis" class="w3" value="<?php echo $jenis;?>">
  		<label>Satuan</label>
  		<input type="text" name="satuan" class="w2" value="<?php echo $satuan;?>">
  		<label>Keterangan</label>
  		<textarea name="keterangan"><?php echo $keterangan;?></textarea>
  		<input type="submit" class="button" name="simpan" value="Simpan">
  		<a href="<?php echo base_url();?>barang" class="button2">Kembali</a>
  		<input type="hidden" name="kode" value="<?php echo $kode;?>">

  	</form>
  	
  </div>
</div>
</section>

vdetailbarang.php
<section>
<div class="container"> 
 <h1>Detail Barang</h1>
 <table>
 	<tr>
 		<td>Kode Barang</td>
 		<td>:</td>
 		<td>#<?php echo $rowbarang->kode_brg;?>
 	</tr>
 	<tr>
 		<td>Barcode Barang</td>
 		<td>:</td>
 		<td><?php echo $rowbarang->barcode;?>
 	</tr>
 	<tr>
 		<td>Nama Barang</td>
 		<td>:</td>
 		<td><?php echo $rowbarang->nama_brg;?>
 	</tr>
 	<tr>
 		<td>Stok</td>
 		<td>:</td>
 		<td><?php echo $rowbarang->stok_brg;?>
 	</tr>
 	<tr>
 		<td>Jenis</td>
 		<td>:</td>
 		<td><?php echo $rowbarang->jenis;?>
 	</tr>
 	<tr>
 		<td>Satuan</td>
 		<td>:</td>
 		<td><?php echo $rowbarang->satuan;?>
 	</tr>
 	<tr>
 		<td>Keterangan</td>
 		<td>:</td>
 		<td><?php echo $rowbarang->keterangan;?>
 	</tr>
 </table>
 <a href="<?php echo base_url()?>barang">Kembali</a>
</div>
</section>

style.css
untuk css tampilannya di edit saya buka file style.css pada folder ./assets/ dan buat seperti dibawah ini
body{
	color: #333;
	font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
	font-size:16px;
}
header{
	background: #111;
	padding: 20px;
}
header h3{
	float: left;
	color: #FFF;
}
header nav{
	float: right;
	margin-top: 10px;
}
header nav ul{
	padding: 0;	
	margin: 0;
}
header nav ul li{
	float: left;
	list-style: none;
}
header nav ul li a{
	padding: 15px;color: #fff;text-decoration: none;}
header nav ul li a:hover{color: yellow;}
footer{ background: #111;padding: 20px;color: #fff;}
footer a{color: #fff;text-decoration: none;}
footer a:hover{	color: yellow;}
section{padding: 20px;min-height: 300px;}
.clear{	clear: both;}
.container{margin: 0px auto;width: 1100px;}
.table {border-collapse: collapse; width: 100%;}
.table td, .table th {border: 1px solid #ddd;padding: 8px; font-size: 14px;}
.table tr:nth-child(even){background-color: #f2f2f2;}
.table tr:hover {background-color: #ddd;}
.table th { padding-top: 12px;padding-bottom: 12px;text-align: left;background-color: #4CAF50;color: white;}
.button {background-color: #F00;/* Green */border: none;color: white;padding: 10px 20px;
	text-align: center;text-decoration: none;display: inline-block;font-size: 16px;
	border-radius: 4px;
}
.button:hover{background-color: #FE0; color: #444;}
.button2{
	padding: 12px; text-align: center;background-color: #CCC;
	color: #666; text-decoration: none;
	display: inline-block;
	border-radius: 4px;
}
input[type=text], select ,textarea{
	width: 100%;
	padding: 12px 10px;
	margin: 8px 0;
	display: inline-block;
	border: 1px solid #ccc;
	border-radius: 4px;
	box-sizing: border-box;
}

input[type=submit] {
	background-color: #4CAF50;
	color: white;
	padding: 14px 20px;
	margin: 8px 0;
	border: none;
	border-radius: 4px;
	cursor: pointer;
}

input[type=submit]:hover {
	background-color: #45a049;
}
label{width: 100%!important; display: inline-block;}
.form {
	width: 50%;
	border-radius: 5px;
	background-color: #f2f2f2;
	padding: 20px;
}
.w1{
	width: 100%!important;
}
.w2{width: 50%!important;}
.w3{width: 33.33%!important;}
.w4{width: 25%!important;}
.w5{width: 12.5%!important;}
.w1:after,.w2:after,.w3:after,.w4:after,{clear: both!important;}
input[type=text]:after{clear: both;}
.pesan-error{color:#F00; padding: 10px; font-style: italic;}
.pesan-sukses{padding: 10px; color: #48C50A;font-style: italic;}

sampai disini kita sudah selesai membangun sebuah crud codeigniter mari kita lihat hasil nya

gambar tampilan ketika aplikasi diakses

Tampilan form ketika di klik tambah

Validasi muncul ketika kita klik simpan padahal form belum di isi

Tampilan data berhasil di tambah

Oke demikian tutorial mengenai crud codeigniter ini silakan dicoba berulang2 sampai mengerti dan jika terjadi error atau kesulitan bisa buat komentar.
Untuk demo dan source code nya bisa dilihat pada link dibawah ini

DEMO | Download