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, 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.
dan berikut ini contoh datanya
Selanjutnya kita buat satu buah tabel lagi untuk menyimpan data transaksi pembayaran. Kita buat tabel yang simpel saja sebagai contoh misalnya
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
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
Nah sekarang baru script proses.php nya
proses.php
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
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
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
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
Tampilan dari script proses2.php adalah seperti di bawah ini
Mudah bukan membuatnya? selamat mencoba dan bereksperimen ya…
Pada prinsipnya, cara membuatnya hampir sama dengan artikel yang pernah saya bahas sebelumnya tentang Generator 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.
1.
CREATE
TABLE
`member` (
2.
`idMember`
varchar
(10),
3.
`nama`
varchar
(30),
4.
`alamat`
varchar
(50),
5.
PRIMARY
KEY
(`idMember`)
6.
);
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'
);
1.
CREATE
TABLE
`transaksi` (
2.
`idTransaksi`
varchar
(12),
3.
`idMember`
varchar
(10),
4.
`jumlah`
int
(11),
5.
PRIMARY
KEY
(`idTransaksi`)
6.
)
OK, tabel database yang diperlukan sudah siap, selanjutnya kita buat scriptnya mulai dari form pembayarannya.
bayar.html
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>
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
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.
?>
proses.php
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>
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 nya1.
SELECT
MAX
(idTransaksi)
FROM
transaksi
WHERE
idTransaksi
LIKE
'tanggalharini%'
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
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>
14.
<h1>Transaksi Pembayaran</h1>
15.
<p><a href=
"bayar.htm"
>Form Bayar</a></p>
16.
<hr>
17.
<?php
18.
19.
// baca id member dari form proses.php
20.
$id
=
$_POST
[
'id'
];
21.
22.
// baca jumlah pembayaran dari form proses.php
23.
$jumlah
=
$_POST
[
'jumlah'
];
24.
25.
// cari id transaksi terakhir yang berawalan tanggal hari ini
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>
57.
<tr><td>Alamat</td><td>:</td><td><?php
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>
Mudah bukan membuatnya? selamat mencoba dan bereksperimen ya…
14 comments:
php is kompleks programing........
hiiiiiihiiiiii..hiiii.. artikelnya dapet kopas
copas dari blog rosihanari
makasih...juga buat rosihanari
Tolong......Jagoan PHP, ane lg belajar PHP nih, ada kasus seperti ini :
ada data pricelist, yang isi fieldnya :
Id_Kota Kode Kota
Kota_Tujuan Nama Kota
T_Express Tarif Express
M_KgE Minimum Berat Expresss
Ket_Express Keterangan Express
T_Regular Tarif Regular
M_KgR Minimum Berat Regular
Ket_Regular Keterangan Regular
Gw mau bikin seperti ini
Pilih Jenis Pengiriman : Express / Regular ( Misal dipilih Express )
Pilih Kota Tujuan : List ( muncul Kota Tujuan ) Misal Kota Banda Aceh
Isikan Berat : misal 5 Kg
Hasil Perhitungan : 5 X 21850 = Rp. 109,250
Keterangan : Minimum Kirim 10 Kg ( Diambil dr M_KgE ), Lama Kirim 3 Hari ( Diambil dr Ket_Express )
Mohon bantuannya ya boss Master PHP, maklum lg belajar PHP nih.
to: Yudo Devianto
kirim aja scrip agan ke email ane....ntar ane bantu abang....
COPAS...
gimana cara membuat tabel otomatis update, melalui form simpan?
muhammadadebhakti@gmail,com
udah copas salah lagi
thanks gan
DOWNLOAD LAGU SUPERGIRLIES - CINTAKU TERBAGI 2 MP3 (3.58 MB)
gan..
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Toko_2\proses2.php on line 18
Transaksi Gagal tolong penjelasannya
Admin, ane mau tanya klo nomor otomatis didapet dari 2 pilihan yang ada scriptnya gimana ya?
Thanks...
Bisa dicoba implementasi di website saya ni
mantap terima kasih informasinya
TUTORIAL MARVEL FUTURE FIGHT
Posting Komentar