Auto Increment Varchar Id dengan Prefix

auto increment varchar id

Auto increment adalah penambahan id otomatis yang telah disediakan oleh mysql. Artikel kali ini kita akan membuat berbagai bentuk auto increment yang dapat dibuat di sebuah sistem meskipun mysql telah menyediakan penambahan id unik atau auto increment secara otomatis Namun terkadang di dalam pemrograman kita membutuhkan pembuatan id yang berbeda dari auto increment yang telah disediakan oleh mysql, sebagai contoh id dengan format berikut:

1 2 3

00001

M0001

A0001

Format pertama 1 2 3 format auto increment biasa yang telah di sediakan oleh MySQL

Format kedua dibutuhkan jika kita ingin id data lebih tersusun rapi dan terurut dengan baik nantinya. contoh id 00001 memiliki 5 digit integer dengan membuat format seperti ini otmatis semua id nantinya memiliki 5 digit int. namun bagaimana cara membuat format ini bertambah otomatis di database ?

hal inilah yang akan kita bahas nantinya

Selanjutnya format dengan prefix seperti M0001 dan A0001 ini juga bisa menjadi alternatif dalam pembuatan id di database pembuatan id menggunakan prefix di database dapat menjadi pengenal unik nantinya. Sebagai contoh M0001 adalah id yang digunukan untuk menyimpan data simpanan sedangkan A0001 adalah id yang digunakan untuk menyimpan data Anggota

Setelah mengetahui bentuk – bentuk id yang dapat digunakan di database maka dapat dipahami id di database dapat digunakan dalam bentuk auto increment standar yang telah disediakan oleh MySQl dan dapat juga dibuat auto dengan menggunakan script php.

1. Membuat format auto increment biasa (1 2 3)

Untuk membuat format ini kita cukup membuat tabel di database dengan struktur sebagai berikut:

CREATE TABLE tb_supir (
id_supir int(11) NOT NULL AUTO_INCREMENT,
nama_supir varchar(100) NOT NULL,
no_hp varchar(15) NOT NULL,
alamat varchar(255) NOT NULL,
aktif int(1) NOT NULL,
PRIMARY KEY (id_supir)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1

Selanjutnya masukkan data melalui model dan controller seperti biasa:
script input pada controller

$data = array(
		'nama_supir' => $this->input->post('nama_supir'),								
		'no_hp' => $this->input->post('no_hp'),	
		'alamat' => $this->input->post('alamat'),
		);
$this->m_karyawan->input($data,'tb_supir');

script input pada model

<?php 
class M_karyawan extends CI_Model{

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

2. Membuat format auto increment 00001

Untuk membuat format auto increment ini kita membuat tabel baru namanya tb_mobil dengan format sebagai berikut:

CREATE TABLE `tb_mobil` (
 `id_mobil` varchar(5) NOT NULL,
 `no_plat` varchar(10) NOT NULL,
 `nama` varchar(50) NOT NULL,
 PRIMARY KEY (`id_mobil`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

setelah memiliki tabel mobil (tb_mobil) di atas kita buat model sebagai berikut :

M_mobil.php

<?php 
class M_mobil extends CI_Model{

	//function untuk menginputkan data mobil
	public function input_mobil($data,$table) {
		return $this->db->insert($table,$data);
	}

	//function mendapatkan id terakhir atau id_max mobil
	public function get_idmax(){
		$this->db->select_max('id_mobil');
		$this->db->from('tb_mobil');
		$query = $this->db->get();
		return $query;	
	}

	//function membuat format id baru berbentuk 00001
	public function get_newid($auto_id){
		$newId = substr($auto_id, 1,4);
		$tambah = (int)$newId + 1;
		if (strlen($tambah) == 1){
			$id_mobil = "0000" .$tambah;
		}
		else if (strlen($tambah) == 2){
			$id_mobil = "000" .$tambah;
		}
		else if(strlen($tambah) == 3){
			$id_mobil = "00".$tambah;	
		}
		else if (strlen($tambah) == 4){
			$id_mobil = "0" .$tambah;
		}
		else if(strlen($tambah) == 5){
			$id_mobil = $tambah;	
		}
		return $id_mobil;
		}

}

Pada model di atas dapat di lihat bahwa kita memiliki 3 function, function input_mobil yang berfungsi untuk menginputkan data ke database nantinya, function get_idmax berfungsi untuk mengambil id terakhir atau id tertinggi dan function get_newid adalah point init dari pembuatan id dengan format 00001, seperti yang dilihat bahwa pada function get_newid kita membuat format dengan cara memisahkan terlebih dahulu $newId menggunakan substr dan selanjutnya di buat pengkondisian jika angka disini $tambah 1 karakter maka akan ditambahkan “0000” di depannya, jika angka($tambah) 2 karakter maka akan ditambahkan “000” di depannya demikian seterusnya.

Selanjutnya buatlah file Controller Sebagai berikut:

Mobil.php

<?php  
class Mobil extends CI_Controller
{
	function __construct(){
		parent::__construct();	
		$this->load->model('m_mobil');
	}

	public function index(){
		$data['new_id'] = $this->get_idmobil();	 
		$this->load->view('view_inputmobil',$data);
	}

	public function input_mobil(){
		$data = array(
				'id_mobil' => $this->input->post('id_mobil'),
				'no_plat'  => $this->input->post('no_plat'),
				'nama'	   => $this->input->post('nama')
		);
		$this->m_mobil->input($data,'tb_mobil');
		redirect('mobil');
	}

	public function get_idmobil(){
		$new_id =  $this->m_mobil->get_idmax()->result();
		if ($new_id > 0) {
				foreach ($new_id as $key) {
		 		 $auto_id = $key->id_mobil;		 		 
				}
		}		
		return $id_mobil = $this->m_mobil->get_newid($auto_id);		
	}
 }

Langkah berikutnya buatlah view sebagai berikut:

view_inputmobil.php

<!DOCTYPE html>
<html>
  <head>
    <title>Input Mobil</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">    
  </head>
  <body>
    <div class="container"> 
      <div class="card">
        <div class="card-header">
          <label>Input Id format 00001 auto increment</label>
        </div>
        <div class="card-body">
          <form action="<?php echo base_url('mobil/input_mobil')?>"  method="post" class="form-horizontal">
            <div class="form-group">
              <label class="col-md-2 control-label">ID</label>
                <div class="col-md-3" >            
                  <input type="text" class="form-control" name="id_mobil" value="<?php echo $new_id ;?>">
                </div>               
            </div>
            <div class="form-group">
             <label class="col-sm-2 control-label">No Plat</label>
                <div class="col-12 col-md-3">
                  <input type="text" name="no_plat"  class="form-control-sm form-control" value="" required>
                </div>  
            </div> 
            <div class="form-group">                                 
              <label class="col-sm-2 control-label">Nama</label>
                <div class="col-12 col-md-4">
                  <input type="text" name="nama"  class="form-control-sm form-control" value="" required>
                </div>  
            </div>                        
            <div class="col-md-3" >    
              <button type="submit" name="submit" class="btn btn-sm btn-primary">Simpan</button>
            </div>
          </form> 
      </div>
  </div>

</body>
</html>

Dengan menyelesaikan ketiga langkah di atas kita telah menyelesaiakn pembuatan auto inrement varchar format id 00001

3. Membuat Auto Increment Format M0001

Cara membuat auto increment dengan format diawali oleh prefix seperti ini juga dilakukan pada script php dengan artian id otomatis yang di dapat tidak dibuat di MySQL.

untuk membuat auto increment seperti di atas kita melakukan modifikasi sedikit pada model M_mobil.

Ubah function get_newid menjadi seperti berikut:

//function membuat format id baru berbentuk M0001
	public function get_newid($auto_id,$prefix){
		$newId = substr($auto_id, 1,4);
		$tambah = (int)$newId + 1;
		if (strlen($tambah) == 1){
			$id_mobil = $prefix."000" .$tambah;
		}
		else if (strlen($tambah) == 2){
			$id_mobil = $prefix."00" .$tambah;
		}
		else if(strlen($tambah) == 3){
			$id_mobil = $prefix."0".$tambah;	
		}
		else if(strlen($tambah) == 4){
			$id_mobil = $prefix.$tambah;	
		}
		return $id_mobil;
		}

Terlihat di atas bahwa kita menambahkan $prefik pada model sehingga pada controller juga ditambahkan sehingga menjadi seperti ini:

Controller Mobil.php perubahan pada function get_idmobil

public function get_idmobil(){
		$new_id =  $this->m_mobil->get_idmax()->result();
		if ($new_id > 0) {
				foreach ($new_id as $key) {
		 		 $auto_id = $key->id_mobil;		 		 
				}
		}		
		return $id_mobil = $this->m_mobil->get_newid($auto_id,'M');		
	}

Setelah selesai membuat perubahan di atas untuk menampikan format auto increment M0001 yang telah di buat dilahkan di akses kontroller di browser dengan url http://localhost/indonetsource/mobil.

Leave a Comment