author Ahmad Muhardian

Membuat Generator id Unik seperti id Video YouTube di PHP


Dalam sebuah tabel di database, seringkali kita membuat kolom bernama id sebagai primary key. Kadang kolom tersebut kita berikan fungsi auto increment agar otomatis terisi dengan angka. Namun, kali ini kita coba menggunakan karakter yang di-generate dari nilai waktu per milidetik.

1. Mengambil Niali Unik dari Fungsi Waktu

Kita dapat menggunakan fungsi microtime() atau fungsi time() untuk mendapatkan nilai unik. Nilai ini, senantiasa akan berubah terus, seiring dengan perubahan waktu.

Dari percobaan di atas, fungsi microtime() mengembalikan nilai unik setiap kali dipanggil. Sementara itu, fungsi time() akan mengembalikan nilai unik setiap detik.

Saya sarankan menggunakan fungsi microtime(), karena fungsi ini mengembalikan nilai unik per milidetik.

2. Konversi Nilai Unik

Sebenarnya, kita bisa saja menggunakan nilai kembalian dari microtime() dan time() untuk membuat id unik. Tapi, karena kita ingin membuat id serpeti YouTube, maka kita harus lakukan konversi ke dalam bentuk lain. Kita bisa menggunakan fungsi base_convert() untuk membuatnya.
Fungsi base_convert() Sebenarnya untuk mengubah basis dari sebuah nilai. Pada contoh di atas, parameter angka 10 merupakan panjang nilai yang dihasilkan. Sedangkan angka 36 adalah basisnya.

Contoh lain, panjang 8 dengan basis 16 (bilangan heksadesimal):

3. Kode Generator

Kita sudah dapat apa yang kita inginkan, sekarang kita buat kode generatornya. Pada generator ini kita gunakan basis 36 dengan panjang 10.
<?php
$id = base_convert(microtime(false), 10, 36);
?>
Kita bisa manfaatkan variabel tersebut untuk penyimpanan ke tabel database. Contoh:
<?php
$id = base_convert(microtime(false), 10, 36);

mysqli_query($koneksi, “INSERT INTO video (id, judul, url) VALUE (’$id’,‘Petani Kode - Intro’,‘petani-kode.mp4’)”);
?>
Basis 36 maksudnya: ‘abcdefghijklmnopqrstuvwxyz0123456789’ = 36 karater.

Kesimpulan

Id unik untuk primary key seperti YouTube dibuat dari konversi nilai unik dari fungsi microtime() atau time() ke dalam bentuk basis 36. Konversi basis dari sebuah nilai menggunakan fungsi base_convert().

Referensi: Stack Overflow