Autonumber disini yang saya maksud bukan Auto Increament pada mysql, melainkan Autonumber untuk cetak invoice. Mengapa perlu? kerena nomor invoice bersifat tetap pada setiap record yang di input maka kita menggunakan CHAR pada type field Database. Ketika kalian selesai berbelanja online dapat dipastikan mendapat No. Invoice atau No. Tagihan misal formatnya inv-20120927-00001, inv-00001 dan masih banyak lagi contoh - contoh invoice (Tergantung selera si pembuat program atau yang Order) .

Kali ini akan kita bahas bagaimana cara membuat autonumber untuk kode invoice tersebut, bagaimana bisa? bukannya karakter pada format invoice pada contoh diatas bukan nomor semua! memang benar tidak semua karakter pada contoh invoice diatas adalah nomor melainkan bila kalian perhatikan 5 karakter terakhir pada nomor invoice tersebut adalah angka kita bisa sedikit bermain - main dengan script agar dapat generate autonumber.

Buat tabel sederhana seperti dibawah ini


CREATE TABLE IF NOT EXISTS `master_transaksi` (
  `ID_TRANSAKSI` char(13) NOT NULL,
  `TGL_TRANS` datetime NOT NULL,
  `JENIS_PENGIRIMAN` char(3) NOT NULL DEFAULT 'REG',
  `ONGKOS_KIRIM` double NOT NULL,
  `GRAND_TOTAL` double NOT NULL,
  PRIMARY KEY (`ID_TRANSAKSI`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Kemudian isi tabel diatas sesuai dengan keinginan dengan catatan no. invoice isi seperti format berikut inv-str-00001 buat beberapa record tapi ingat sebisa mungkin untuk no. invoice itu unik misal pada record kedua isi dengan no. invoice inv-str-00002 dan seterusnya.

saatnya kita bermain - main dengan sql

mysql>SELECT ID_TRANSAKSI FROM master_transaksi;

taukan code diatas untuk apa? benar kode sql tersebut untuk menampilkan isi dari field ID_TRANSAKSI lalu bagaimana cara mengambil angka dari no. invoice tersebut, kita lihat code berikutnya.

mysql>SELECT SUBSTR(MAX(ID_TRANSAKSI),-5) FROM master_transaksi;

kode diatas akan menampilkan nilai maksimal pada record ID_TRANSAKSI cukup mudah, kemudian kita akan menggabungnya dengan PHP.

pada kode php ini saya buat sebuah fungsi agar kalian bisa menggunakannya secara efisien tanpa melakukan penulisan ulang setiap akan membuat kode invoice.

function transaksi_id($param='inv-str') {
        $dataMax = mysql_fetch_assoc(mysql_query("SELECT SUBSTR(MAX(`ID_TRANSAKSI`),-5) AS ID  FROM master_transaksi")); // ambil data maximal dari id transaksi
       
        if($dataMax['ID']=='') { // bila data kosong
            $ID = $param."00001";
        }else {
            $MaksID = $dataMax['ID'];
            $MaksID++;
            if($MaksID < 10) $ID = $param."0000".$MaksID; // nilai kurang dari 10
            else if($MaksID < 100) $ID = $param."000".$MaksID; // nilai kurang dari 100
            else if($MaksID < 1000) $ID = $param."00".$MaksID; // nilai kurang dari 1000
            else if($MaksID < 10000) $ID = $param."0".$MaksID; // nilai kurang dari 10000
            else $ID = $MaksID; // lebih dari 10000
        }

        return $ID;
    }

cukup mudah bukan, fungsi diatas akan melakukan generate number secara otomatis.

Cara penggunaannya juga sangat mudah.

mysql_query("INSERT INTO (ID_TRANSAKSI, TGL_TRANS,JENIS_PENGIRIMAN,TIPE_PEMBAYARAN,ONGKOS_KIRIM,GRAND_TOTAL) VALUES (".transaksi_id().",NOW(),'REG','1','15000','515000')");

 

sebenarnya kalian dapat memodifikasi dengan menggunakan FUNCTION atau PROCEDURE dari mysql, akan tetapi fungsi PHP diatas sudah cukup mewakili.

 

OK segitu dulu, semoga bermanfaat