Artikel kali ini akan saya coba bahas mengenai bagaimana ide membuat generator kode unik incremental secara otomatis.
Wah apa tuh maksudnya? OK saya gambarkan hal tersebut melalui contoh
berikut ini. Misalkan terdapat suatu sistem yang digunakan untuk
pendaftaran anggota. Setiap anggota yang mendaftar nantinya akan
diberikan kode unik, misalnya berbentuk A00001. Dalam keanggotaan
tersebut terdapat 3 jenis anggota, yaitu Platinum, Gold dan Silver. Wah…
kok kayak keanggotaan apa gitu ya? It’s OK, itu hanya contoh. Untuk
Platinum, kode anggotanya berawalan A dan dilanjutkan dengan nomor
urutnya. Keanggotaan Gold kodenya berawalan B dan Silver C. Sehingga
misalkan terdapat seseorang pendaftar pertama, dan kebetulan ia ikut
yang Platinum, maka harusnya kode dia adalah A00001. Selanjutnya bila
terdapat pendaftar kedua dan ia juga ikut Platinum, maka kode berikutnya
adalah A00002. Bagaimana bila terdapat pendaftar yang ketiga namun ia
ingin ikut yang Gold? Ya.. karena sebelumnya belum ada anggota yang
Gold, maka pendaftar ketiga ini mendapat kode B00001. Begitu seterusnya…
Nah.. paham kan gambaran di atas? Selanjutnya pertanyaannya adalah
bagaimana membuat kode unik incremental seperti di atas secara otomatis
setiap kali ada pendaftar yang baru? Hal inilah yang akan dibahas pada
artikel kali ini.
Memang sih… untuk kode unik ini kita bisa menggunakan fasilitas auto
increment dalam database, namun auto increment yang hanya berupa
bilangan bulat positif 1, 2, 3, .. dst ini menjadi tidak bermakna.
Contoh kasus lain yang menggunakan konsep kode unik incremental ini
adalah kode transaksi yang ada di supermarket. Setiap kali kita membayar
di kasir, pasti kita mendapatkan struk yang terdapat kode transaksi.
Kode transaksi ini unik. Contoh kode transaksi ini misalkan
TR2801200900001, dimana TR menunjukkan transaksi pembelian, 28012009
menunjukkan tanggal transaksi yaitu pada tanggal 28/1/2009 dan 00001
menunjukkan transaksi pembelian pertama pada tanggal tersebut. Bila
nanti terdapat transaksi kedua pada tanggal yang sama, maka kodenya
menjadi TR2801200900002, dst.
Adapun contoh yang lain yang menggunakan konsep di atas adalah ketika
membuat KTP, dimana setiap orang akan diberikan nomor KTP unik. Selain
itu juga dalam kasus membuat nomor SIM.
OK.. akan saya paparkan bagaimana ide membuat kode unik incremental
tersebut. Dalam hal ini akan saya ambil kasus mengenai pendaftaran
anggota seperti halnya contoh pertama di atas.
Nah.. bagaimana ide untuk membuat kode unik tersebut? Misalkan
terdapat anggota baru yang mendaftar dengan jenis keanggotaan Platinum.
Maka proses pertamanya adalah mencari kode anggota terbesar yang
berawalan A**** dalam database. Dalam hal ini kita bisa menggunakan
query SQL
1.
SELECT
max
(field_kode)
FROM
table
WHERE
field_kode
LIKE
'A%'
Trus… setelah mendapatkan kode terbesarnya, selanjutnya adalah mengambil angka dalam kode. Angka dalam kode ini nanti akan ditambah satu. Misalkan kode terbesarnya adalah A00003, maka kita ambil substring bilangan 3 untuk nantinya ditambah satu menjadi 4. Untuk mengambil angka dalam kode ini kita bisa gunakan perintah substr() dalam PHP.
Setelah mengambil angka dalam kode dan ditambah satu, lalu hasilnya digabung kembali menjadi string kode. Untuk membentuk atau memformat string kode ini, kita bisa menggunakan sprintf() dalam PHP.
OK… sekarang kita coba membuat scriptnya. Kita pertama siapkan tabel untuk menyimpan data member
1.
CREATE
TABLE
member (
2.
id
varchar
(6),
3.
nama
varchar
(20),
4.
alamat text,
5.
PRIMARY
KEY
(id)
6.
);
member.htm
01.
<
h1
>New Memberh1
>
02.
03.
<
form
method
=
"post"
action
=
"add.php"
>
04.
Jenis Member
05.
<
select
name
=
"jenis"
>
06.
<
option
value
=
"A"
>Platinumoption
>
07.
<
option
value
=
"B"
>Goldoption
>
08.
<
option
value
=
"C"
>Silveroption
>
09.
select
>
10.
<
input
type
=
"submit"
name
=
"submit"
value
=
"Submit"
/>
11.
form
>
Form di atas digunakan untuk memilih jenis keanggotaan untuk anggota
baru yang akan ditambahkan. Setelah memilih jenis keanggotaan
selanjutnya akan menuju form untuk memasukkan data anggota. Nah.. untuk
form kedua ini, kode anggota tidak perlu diisi secara manual namun
secara otomatis telah muncul. Data yang diisi hanyalah nama dan alamat
anggota saja.
add.php
01.
02.
03.
// koneksi ke mysql
04.
05.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
06.
mysql_select_db(
"dbname"
);
07.
08.
// membaca jenis anggota yang dipilih dari form sebelumnya
09.
10.
$jenis
=
$_POST
[
'jenis'
];
11.
12.
// membaca kode anggota terbesar berdasarkan jenis keanggotaan
13.
14.
$query
=
"SELECT max(id) as maxID FROM member WHERE id LIKE '$jenis%'"
;
15.
16.
$hasil
= mysql_query(
$query
);
17.
$data
= mysql_fetch_array(
$hasil
);
18.
$idMax
=
$data
[
'maxID'
];
19.
20.
// mengambil angka atau bilangan dalam kode anggota terbesar,
21.
// dengan cara mengambil substring mulai dari karakter ke-1 diambil 5 karakter
22.
// misal 'A00001', akan diambil '00001'
23.
// setelah substring bilangan diambil lantas dicasting menjadi integer
24.
25.
$noUrut
= (int)
substr
(
$idMax
, 1, 5);
26.
27.
// bilangan yang diambil ini ditambah 1 untuk menentukan nomor urut berikutnya
28.
29.
$noUrut
++;
30.
31.
// membentuk kode anggota baru
32.
// perintah sprintf("%05s", $noUrut); digunakan untuk memformat string sebanyak 5 karakter
33.
// misal sprintf("%05s", 12); maka akan dihasilkan '00012'
34.
// atau misal sprintf("%05s", 1); maka akan dihasilkan string '00001'
35.
36.
$newID
=
$jenis
. sprintf(
"%05s"
,
$noUrut
);
37.
38.
// kode anggota yang baru di atas nanti akan ditampilkan dalam komponen text box
39.
40.
?>
41.
42.
Tambah Member Baru
43.
44.
45.
"0"
>
46.
47.
48.
49.
50.
ID Member : "text"
name=
"id"
value=
""
>
Nama Member : "text"
name=
"nama"
>
Alamat Member : "text"
name=
"alamat"
>
"submit"
name=
"submit"
value=
"Submit"
>
51.
Terakhir… kita buat script untuk menyimpan data anggota ini
submit.php
01.
02.
03.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
04.
mysql_select_db(
"dbname"
);
05.
06.
$idMember
=
$_POST
[
'id'
];
07.
$namaMember
=
$_POST
[
'nama'
];
08.
$alamatMember
=
$_POST
[
'alamat'
];
09.
10.
$query
=
"INSERT INTO member VALUES ('$idMember', '$namaMember', '$alamatMember')"
;
11.
$hasil
= mysql_query(
$query
);
12.
13.
if
(
$hasil
)
echo
"
Tambah member sukses
"
;
14.
else
echo
"
Tambah member gagal
"
;
15.
16.
echo
"Tambah Member"
;
17.
?>
Bagaimana mudah bukan membuatnya? Artikel ini sekaligus menjawab pertanyaan salah satu member saya (mas Ropi). Mau mendapatkan triks dan tips yang lain serta bagaimana cara menerapkan PHP di banyak studi kasus? Ikuti saja kursus bersama saya.
[ Download Script ]
EmoticonEmoticon