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.<?php02.// nama host03.$dbhost = '...';04.// nama user05.$dbuser = '...';06.// password user07.$dbpass = '...';08.// nama database09.$dbname = '...';10. 11.mysql_connect($dbhost, $dbuser, $dbpass);12.mysql_select_db($dbname);13.?>proses.php
01.<?php02.// koneksi ke database03.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.<?php15.// baca ID member dari form bayar.html16.$id = $_POST['id'];17.// lakukan query pencarian data member berdasarkan ID18.$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 tampilkan23.$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.<?php36.}37.// jika tidak maka tampilkan peringatan38.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.<?php02.// koneksi ke database03.include 'koneksi.php';04. 05.// baca current date06.$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.<?php18. 19.// baca id member dari form proses.php20.$id = $_POST['id'];21. 22.// baca jumlah pembayaran dari form proses.php23.$jumlah = $_POST['jumlah'];24. 25.// cari id transaksi terakhir yang berawalan tanggal hari ini26.$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 terakhir32.$lastNoUrut = substr($lastNoTransaksi, 8, 4); 33. 34.// nomor urut ditambah 135.$nextNoUrut = $lastNoUrut + 1;36. 37.// membuat format nomor transaksi berikutnya38.$nextNoTransaksi = $today.sprintf('%04s', $nextNoUrut);39. 40.// proses simpan data transaksi dengan nomor transaksi yang baru41.$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 pembayaran47.$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.<?php62.}63.else echo "Transaksi Gagal";64.?>   65. 66.</body>67.</html>Mudah bukan membuatnya? selamat mencoba dan bereksperimen ya…
 
0 Response to "Script PHP untuk Transaksi Unik Otomatis Berdasarkan Tanggal"
Posting Komentar