ID String Otomatis pada PHP

Sebuah primary key dalam database harus memiliki syarat not null dan unique. Not null artinya data tidak boleh kosong dan unique artinya data harus berbeda dengan data yang lain. Untuk membuat sebuah ID agar unique kita bisa memanfaatkan fasilitas auto increment pada mysql, akan tetapi fasilitas ini hanya bisa digunakan untuk tipe data yang berupa angka dan tidak bisa secara langsung digunakan untuk tipe data yang berupa string. Untuk membuat auto increment pada tipe data string kita harus melakukan trik tersendiri. Berikut akan saya uraikan bagaimana membuat data yang bertipe string menjadi autoincrement.

Misal kita ingin membuat id_admin tipe data string dengan nilai ad001, ad002 dst

ad=karakter huruf; 001=karakter angka

Logika sederhanya:

  1. Ambil karakter angka
  2. Ubah jadi integer
  3. Increment
  4. Gabung karakter huruf dan angka

Mari kita mulai:

  1. Lakukan select untuk mengetahui id yang paling besar

$selectidmax =mysql_query( “SELECT max(id_admin) as maxidadmin FROM admin WHERE id_admin LIKE ‘ad%'”);

$hslidmax=mysql_fetch_array($selectidmax);

$idmax=$hslidmax[‘maxidadmin’];

 

Maksud dari max(id_admin) adalah untuk mengetahui id yang paling besar yang ada dalam database. Jika dalam database ada 3 data (ad001,ad002,ad003) maka dengan perintah select diatas akan menghasilkan output ad003.

 

  1. Ambil karakter angka – jadikan integer – increment

$nourut = (int) substr($idmax, 2,3);

// echo   “$nourut”.”<br>”;

$nourut++;

 

Fungsi substr berfungsi untuk mengambil karakter dari sebuah string substr(string, awal, ambilsebanyaknkarakter)

substr($idmax, 2, 3) maksudnya ambil sebanyak 3 karakter mulai karakter ke 2 (dimulai dari karakter ke 0) dari $idmax. Misal $idmax berisi ad001 maka outputnya menjadi 001.

Fungsi (int) mengubah dari string menjadi integer. Kemudian lakukan increment ($nourut++).

  1. Gabungkan karakter huruf dengan karakter angka yang telah increment

$IDbaru = “ad” . sprintf(“%03s”, $nourut);

 

sprintf digunakan untuk membuat string terformat, dalam hal ini agar 1 bisa menjadi 001; 2 menjadi 002 dst.

Sintak lengkapnya:

$selectidmax =mysql_query( “SELECT max(id_admin) as maxidadmin FROM admin WHERE id_admin LIKE ‘ad%'”);

$hslidmax=mysql_fetch_array($selectidmax);

$idmax=$hslidmax[‘maxidadmin’];

//echo   “$idmax”.”<br>”;

$nourut = (int) substr($idmax, 2,3);

// echo   “$nourut”.”<br>”;

$nourut++;

$IDbaru = “ad” . sprintf(“%03s”, $nourut);

//echo   “$IDbaru”.”<br>”;