Anda di halaman 1dari 7

Membuat Kode Transaksi Unik Otomatis Berdasarkan

Tanggal
Dalam artikel kali ini saya akan mencoba menjelaskan cara pembuatan kode
transaksi unik yang digenerate secara otomatis berdasarkan tanggal. Biasanya
kode transaksi unik berdasarkan tanggal ini digunakan pada transaksi pembayaran
atau pembelian barang, misalnya ’201009010001′ dimana 4 digit terdepan
menunjukkan tahun transaksi, digit 5 dan 6 menunjukkan bulan transaksi, digit 7-8
menunjukkan tanggal transaksi, sedangkan digit sisanya menunjukkan urutan
transaksi yang terjadi pada tanggal tersebut.
Pada prinsipnya, cara membuatnya hampir sama dengan artikel yang pernah saya
bahas sebelumnya tentang Generator Unik Incremental Otomatis
[http://blog.rosihanari.net/ide-membuat-generator-kode-unik-incremental-otomatis] , namun
yang membedakannya di sini hanyalah pada proses penggunaan tanggalnya untuk
mengkonstruksi nomor transaksi.

Dalam pembahasan ini, kasus yang kita pilih adalah tentang proses pembayaran
(entah pembayaran apa), yang jelas pada proses pembayaran tersebut mula-mula
operator diminta memasukkan ID member yang akan membayar. Proses berikutnya
adalah memunculkan data identitas member berdasarkan ID member yang
dimasukkan tadi dan muncul form isian jumlah uang yang dibayar. Setelah jumlah
uang diisi pada form, proses berikutnya adalah memunculkan konfirmasi
pembayaran yang didalamnya muncul ID transaksi pembayaran yang
menggunakan tanggal transaksi.
Berdasarkan skenario di atas, kita buat dahulu tabel member yang berisi data-data
identitas member. Data ini nanti akan diload sewaktu proses pembayaran.
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
1.CREATE TABLE `member` (
2. `idMember` varchar(10),
3. `nama` varchar(30),
4. `alamat` varchar(50),
5. PRIMARY KEY (`idMember`)
6.);
dan berikut ini contoh datanya
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
1.INSERT INTO `member` VALUES ('100001', 'MR. A', 'SOLO');
2.INSERT INTO `member` VALUES ('100002', 'MR. B', 'SOLO');
3.INSERT INTO `member` VALUES ('100003', 'MR. C', 'SEMARANG');
4.INSERT INTO `member` VALUES ('100004', 'MR. D', 'YOGYAKARTA');
Selanjutnya kita buat satu buah tabel lagi untuk menyimpan data transaksi
pembayaran. Kita buat tabel yang simpel saja sebagai contoh misalnya
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
1.CREATE TABLE `transaksi` (
2. `idTransaksi` varchar(12),
3. `idMember` varchar(10),
4. `jumlah` int(11),
5. PRIMARY KEY (`idTransaksi`)
6.)
di mana field ‘idTransaksi’ untuk menyimpan data ID transaksi, ‘idMember’ terkait
dengan ID dari member yang membayar, dan ‘jumlah’ menunjukkan jumlah uang
yang dibayar. Karena ‘idTransaksi’ adalah kode unik maka kita set field tsb sebagai
primary key.
OK, tabel database yang diperlukan sudah siap, selanjutnya kita buat scriptnya
mulai dari form pembayarannya.
bayar.html
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
01.<html>
02.<head>
03. <title>Transaksi Pembayaran</title>
04.</head>
05.<body>
06. <h1>Transaksi Pembayaran</h1>
07. <p><a href="bayar.htm">Form Bayar</a></p>
08. <hr>
09. <form method="post" action="proses.php">
10. ID Member </td><td><input type="text" name="id"> <input
type="submit" name="submit" value="Submit">
11. </form>
12.</body>
13.</html>
Tampilan dari form di atas adalah sbb:

Script berikutnya yang kita buat adalah proses.php. Script ini nanti akan mencari
data member berdasarkan ID member yang dimasukkan dari form bayar.html. Jika
data member yang dicari ada maka akan memunculkan data member, dan jika
tidak maka akan memunculkan konfirmasi data member tidak ditemukan.
Oya, sebelumnya kita butuh script untuk koneksi databasenya dulu ya
koneksi.php
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
01.<?php
02.// nama host
03.$dbhost = '...';
04.// nama user
05.$dbuser = '...';
06.// password user
07.$dbpass = '...';
08.// nama database
09.$dbname = '...';
10.
11.mysql_connect($dbhost, $dbuser, $dbpass);
12.mysql_select_db($dbname);
13.?>
Nah sekarang baru script proses.php nya
proses.php
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
01.<?php
02.// koneksi ke database
03.include 'koneksi.php';
04.?>
05.
06.<html>
07.<head>
08. <title>Transaksi Pembayaran</title>
09.</head>
10.<body>
11. <h1>Transaksi Pembayaran</h1>
12. <p><a href="bayar.htm">Form Bayar</a></p>
13. <hr>
14.<?php
15.// baca ID member dari form bayar.html
16.$id = $_POST['id'];
17.// lakukan query pencarian data member berdasarkan ID
18.$query = "SELECT * FROM member WHERE idMember = '$id'";
19.$hasil = mysql_query($query);
20.if (mysql_num_rows($hasil)>0)
21.{
22.// jika ditemukan datanya maka tampilkan
23.$data = mysql_fetch_array($hasil);
24.?>
25. <form method="post" action="proses2.php">
26. <table>
27. <tr><td>ID</td><td>:</td><td><?php echo $id; ?></td></tr>
28. <tr><td>Nama</td><td>:</td><td><?php echo $data['nama']; ?>
</td></tr>
29. <tr><td>Alamat</td><td>:</td><td><?php echo $data['alamat'];
?></td></tr>
30. <tr><td>Jumlah Bayar</td><td>:</td><td>Rp. <input
type="text" name="jumlah"></td></tr>
31. </table>
32. <input type="hidden" name="id" value="<?php echo $id?>">
33. <input type="submit" name="submit" value="Submit">
34. </form>
35.<?php
36.}
37.// jika tidak maka tampilkan peringatan
38.else echo "Nomor ID tidak ditemukan";
39.?>
40.</body>
41.</html>
Tampilan dari script proses.php adalah seperti di bawah ini

OK… script proses.php sudah dibuat, selanjutnya kita buat script proses2.php. Di
dalam script ini, akan dilakukan proses penyimpanan data transaksi pembayaran
dari member. Sebelum proses penyimpanan data transaksi, terlebih dahulu akan
digenerate ID transaksinya secara otomatis. Bagaimana idenya? Idenya adalah
pertama baca tanggal hari ini (current date) dalam format YYYYMMDD, gunakan
function date('Ymd'). Anda tidak harus menggunakan format YYYYMMDD tapi
bisa format DDMMYYYY atau MMDDYYYY.
Setelah itu gunakan query untuk mencari nomor transaksi terakhir yang berawalan
tanggal hari ini. Yang menjadi pertanyaan adalah bagaimana cara mencari nomor
transaksi terahir? ya… gunakan saja function MAX() pada query nya
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
1.SELECT MAX(idTransaksi) FROM transaksi WHERE idTransaksi LIKE
'tanggalharini%'
Query di atas digunakan untuk mencari nomor transaksi terakhir yang berawalan
tanggal hari ini.
Setelah idTransaksi terakhir diperoleh, selanjutnya kita baca nomor urut dari
idTransaksi terakhir tersebut. Karena nomor urut adalah substring yang terletak
dalam string nomor transaksi, maka kita gunakan function substr() untuk
membacanya. Nomor urut ini terletak pada digit ke 9 s/d 12. Nah… nomor urut ini
nanti selanjutnya kita tambah 1 untuk nomor urut transaksi berikutnya. Ilustrasinya
begini, misalkan nomor urut dari id transaksi terakhir adalah 0001 maka nomor urut
id transaksi berikutnya adalah 0002. Gunakan function sprintf('%04s',
nomorurut) untuk menyatakan nomor urut dalam 4 digit string. Misalkan nomor
urutnya adalah 12, maka dengan function tersebut akan dihasilkan ’0012′.
Kemudian nomor urut ini kita gabung kembali dengan tanggal hari ini untuk
membentuk nomor transaksi yang baru.
Nomor transaksi yang baru sudah digenerate, barulah proses penyimpanan data
transaksinya ke dalam tabel transaksi.
OK… berikut ini isi script proses2.php nya
proses2.php
view source [http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-
berdasarkan-tanggal#viewSource] print [http://blog.rosihanari.net/membuat-kode-transaksi-
unik-otomatis-berdasarkan-tanggal#printSource] ? [http://blog.rosihanari.net/membuat-
kode-transaksi-unik-otomatis-berdasarkan-tanggal#about]
01.<?php
02.// koneksi ke database
03.include 'koneksi.php';
04.
05.// baca current date
06.$today = date("Ymd");
07.?>
08.
09.<html>
10.<head>
11. <title>Transaksi Pembayaran</title>
12.</head>
13.<body>
Riska-LastOne telusuri
14. <h1>Transaksi Pembayaran</h1>
15. <p><a href="bayar.htm">Form Bayar</a></p>
Klasik Kartu Lipat Majalah Mozaik <hr> Sisi Cuplikan Kronologis
16. Bilah
17.<?php
Upload file ke server de… 18.
19.// baca id member dari form proses.php
20.$id = $_POST['id'];
Membuat Script PHP un… 21.
22.// baca jumlah pembayaran dari form proses.php
Membuat Kode T… 1 23.$jumlah = $_POST['jumlah'];
24.
25.// cari id transaksi terakhir yang berawalan tanggal hari ini
Cara Mengirim Email D…
26.$query = "SELECT max(idTransaksi) AS last FROM transaksi WHERE
idTransaksi LIKE '$today%'";
27.$hasil = mysql_query($query);
28.$data = mysql_fetch_array($hasil);
29.$lastNoTransaksi = $data['last'];
30.
31.// baca nomor urut transaksi dari id transaksi terakhir
32.$lastNoUrut = substr($lastNoTransaksi, 8, 4);
33.
34.// nomor urut ditambah 1
35.$nextNoUrut = $lastNoUrut + 1;
36.
37.// membuat format nomor transaksi berikutnya
38.$nextNoTransaksi = $today.sprintf('%04s', $nextNoUrut);
39.
40.// proses simpan data transaksi dengan nomor transaksi yang
baru
41.$query = "INSERT INTO transaksi (idTransaksi, idMember, jumlah)
42. VALUES ('$nextNoTransaksi', '$id', '$jumlah')";
43.$hasil = mysql_query($query);
44.if ($hasil)
45.{
46. // jika proses simpan transaksi sukses, maka tampilkan
nomor transaksi dan data pembayaran
47. $query2 = "SELECT * FROM member WHERE idMember = '$id'";
48. $hasil2 = mysql_query($query2);
49. $data2 = mysql_fetch_array($hasil2);
50.?>
51.
52. <p>Transaksi Pembayaran Sukses</p>
53. <table>
54. <tr><td>ID Transaksi</td><td>:</td><td><?php echo
$nextNoTransaksi; ?></td></tr>
55. <tr><td>ID Member</td><td>:</td><td><?php echo $id; ?></td>
</tr>
56. <tr><td>Nama</td><td>:</td><td><?php echo $data2['nama']; ?>
</td></tr>
Template57.
Dynamic<tr><td>Alamat</td><td>:</td><td><?php
View s. Diberdayakan oleh Blogger. echo
$data2['alamat']; ?></td></tr>
58. <tr><td>Jumlah Bayar</td><td>:</td><td>Rp. <?php echo
$jumlah; ?></td></tr>
59. </table>
60.
61.<?php
62.}
63.else echo "Transaksi Gagal";
64.?>
65.
66.</body>
67.</html>
Tampilan dari script proses2.php adalah seperti di bawah ini
Mudah bukan membuatnya? selamat mencoba dan bereksperimen ya…

Artikel diatas berasal dari sumber : http://blog.rosihanari.net


[http://blog.rosihanari.net/membuat-kode-transaksi-unik-otomatis-berdasarkan-tanggal]

Diposkan 13th December 2011 oleh Riska-Okta


Label: Arikel PHP

1 Lihat komentar

Herry Purwanto 18 Desember 2013 23.59


Buat Blog pada Copy Paste Aja
gaaaaaaaaaaaaaaaaaaaaaaaakkkkkkkk kreatif
Balas

Masukkan komentar Anda...

Beri komentar sebagai: Google Account

Publikasikan Pratinjau

Anda mungkin juga menyukai