Codeigniter PHP

Membuat Kode unik berdasarkan tanggal dengan Codeigniter
2022-01-07 02:21:48
Admin
Author :Admin

Author Content Creator

 Membuat Kode unik berdasarkan tanggal dengan Codeigniter

Invoice berdasarkan tanggal sangat bermanfaat untuk membuat kode unik yang lebih mudah dibaca.

Selain itu kode unik berdasarkan tanggal juga dapat menghandle jumlah transaksi yang padat perharinya.

Hmm.., menarik bukan?

Bisanya, banyak programmer membuat kode unik tidak bersarkan tanggal. Sehingga jumlah digit yang mampu ditampung pun terbatas.

Contoh: 

FK0001, kode unik dengan FK0001 memiliki jumlah digit yang terbatas. FK melambang Faktur dan 0001 merupakan jumlah digit yang mampu ditampungnya. Pada kasus diatas, jumlah maksimal record yang mampu ditampung adalah 9999 record. Jika jumlah transaksi telah melebihi 9999 record, maka faktur tersebut tidak dapat lagi menampung data.

Lalu bagaimana caranya agar jumlah transaksi bisa ditampung lebih banyak. Bahkan tidak terbatas?

Jawabannya adalah dengan membuat kode unik berdasarkan tanggal. 

Contoh:

1905170001, kode unik tersebut berarti 19 (day), 05 (month),17(year), dan 0001 (jumlah digit yang mampu ditampung).

Hah 0001, berarti jumlah digit yang mampu ditampung juga 9999 donk?

Benar, jumlah digit yang mampu ditampung memang 9999. Tetapi, yang mampu ditampung adalah 9999 per-hari. Jika tanggalnya berubah, misalkan tanggal 20/05/2017 maka jumlah digit akan kembali ke 0001. Sehingga kode uniknya menjadi 2005170001. Dalam arti kata kode unik berdasarkan tanggal ini mampu menampung 9999 transaksi perhari.

Keren bukan?

Langsung saja kita praktekkan:


1. Buat database dengan mengeksekusi query berikut:

1
2
3
4
5
6
7
CREATE DATABASE db_invoice;
USE db_invoice;
 
CREATE TABLE tbl_invoice(
no_invoice VARCHAR(15) PRIMARY KEY,
tanggal TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)ENGINE INNODB;

 

2. Instalasi codeigniter

Extract codeigniter ke C:wampwww (jika menggunakan wampserver) atau C:xampphtdocs (jika menggunakan XAMPP). Kemudian rename project codeigniter anda sesuai dengan project Anda. Disini penulis memberi nama ci_invoice.

 

3. Konfigusi beberapa file berikut:

Buka application/config/autoload.php atur menjadi seperti berikut:

1
2
$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');

Buka application/config/config.php dan atur menjadi seperti berikut:

1
$config['base_url'] = 'http://localhost/ci_invoice/';

Terakhir buka application/config/database.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'db_invoice',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

 

4. Buat controller dengan nama Invoice.php dengan kode sebagai berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class Invoice extends CI_Controller{
    function __construct(){
        parent::__construct();
        $this->load->model('m_invoice');
    }
    function index(){
        $x['invoice']=$this->m_invoice->get_no_invoice();
        $this->load->view('v_invoice',$x);
    }
    function simpan_invoice(){
        $no_invoice=$this->input->post('no_invoice');
        $this->m_invoice->simpan_invoice($no_invoice);
        redirect('invoice');
    }
 
}

 

5. Buat model dengan nama M_invoice.php dengan kode sebagai berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class M_invoice extends CI_Model{
    function get_no_invoice(){
        $q = $this->db->query("SELECT MAX(RIGHT(no_invoice,4)) AS kd_max FROM tbl_invoice WHERE DATE(tanggal)=CURDATE()");
        $kd = "";
        if($q->num_rows()>0){
            foreach($q->result() as $k){
                $tmp = ((int)$k->kd_max)+1;
                $kd = sprintf("%04s", $tmp);
            }
        }else{
            $kd = "0001";
        }
        date_default_timezone_set('Asia/Jakarta');
        return date('dmy').$kd;
    }
    function simpan_invoice($no_invoice){
        $hasil=$this->db->query("INSERT INTO tbl_invoice (no_invoice) VALUES ('$no_invoice')");
        return $hasil;
    }
}

 

6. Buat view dengan nama v_invoice.php dengan kode sebagai berikut:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
    <title>Invoice</title>
</head>
<body>
    <form action="<?php echo base_url().'index.php/invoice/simpan_invoice'?>" method="post">
        <input type="text" name="no_invoice" value="<?php echo $invoice;?>">
        <button type="submit">Simpan</button>
    </form>
</body>
</html>

7. Jalankan projectnya dengan mengunjungi URL berikut:

1
http://localhost/ci_invoice/index.php/invoice/

klik tombol simpan dan dan lihat hasilnya!, silahkan ganti tanggal pada komputer anda untuk melihat perbedaannya.

Sekian tutorial tentang membuat kode unik berdasarkan tanggal dengan codeigniter. Jangan lupa share siapa tahu tutorial ini bermanfaat untuk teman Anda!