02 February 2020

How To Make String, Char, Varchar To be Auto Increment in MySQL with PHP

Making varchar or string or char to be automatically add as auto increment, is't impossible?

Yah inilah yang dicari-cari selama ini jika anda ingin menambahkan atau membuat primary key dalam table dari tipe data char/ varchar/ string lalu ingin menjadikannya otomatis layaknya auto increment, berikut ini adalah salah satu contoh jika anda membuat primary key secara otomatis menambahkan kode sesuai dengan keinginan kita atau sering disebut dengan custom.

Kita asumsikan membuat ini dengan Framework dengan memiliki 1 tabel dengan format berikut:

CREATE TABLE `tb_supplier` (
  `id_supplier` char(5) NOT NULL,
  `nm_supplier` varchar(20) DEFAULT NULL,
  `no_hp` varchar(12) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id_supplier`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of tb_supplier
-- ----------------------------
INSERT INTO `tb_supplier` VALUES ('S0001', 'Supervisor', '1238123', 'email@gmail.com');
INSERT INTO `tb_supplier` VALUES ('S0002', 'minyak', '08998600083', 'justpoypoy@gmail.com');




kemudian buatlah sebuah class dalam Models seperti ini

function kodebaru() {
        $q = $this->db->query("SELECT id_supplier, substr(id_supplier, 2, 4) as id_baru FROM tb_supplier ORDER BY id_supplier DESC LIMIT 1") -> row();
        if(!empty($q)){
            $f = str_replace($q->id_supplier, 'S', '5.'.$q->id_baru);
            $b = (float)$f+0.0001;
            if(strlen(utf8_decode($b))==6){
                $k = substr($b,2,4);
            }else if(strlen(utf8_decode($b))==5){
                $t = str_replace($b, $b, $b.'0');
                $k = substr($t,2,4);
            }else if(strlen(utf8_decode($b))==4){
                $t = str_replace($b, $b, $b.'00');
                $k = substr($t,2,4);
            }else if(strlen(utf8_decode($b))==3){
                $t = str_replace($b, $b, $b.'000');
                $k = substr($t,2,4);
            }else{
                $k = 'err';
            }
         
            $kb = 'S'.$k;
        }else{
            $kb = 'S0001';
        }
        return $kb;
        }



Setelah itu masukkan dalam Controllers

          $this->data['row']   = $this -> M_supplier -> kodebaru();
          $this -> load -> view('your template',$this -> data);


Yang paling terakhir masukkan dalam Views untuk form tambah atau Add seperti ini


               
               



Dan hasilnya pasti akan sesuai dengan format yang ada, alasan kenapa menggunakan float yaitu titik beratnya pada banyaknya nol yang harus selalu ada. jika dirubah dengan integer maka nol tersebut akan hilang, kemudian ada rules tambahan yang membuatnya sempurna.
Semoga dapat bermanfaat.

Call us to make it's easy for making web. Thank you
Share:

0 komentar:

Post a Comment

Blog Archive