Membuat nomor transaksi diawali 0000

membuat nomor transaksi dalam php

Jika kita membuat aplikasi yang berhubungan dengan proses transaksi maka akan membuat penomoran secara otomatis yang format nomornya terdiri dari beberapa angka sesuai urutan transaksinya. Nomor transaksi biasanya diawali dari angka terkecil yaitu satu tapi ditampilkan dalam digit angka ratusan atau ribuan. Misal untuk transaksi no 1 maka akan ditampilkan dengan angka 001 atau 0001.

Sebenarnya sistem penomoran seperti saya jelaskan diatas, tidak ada bedanya dengan penomoran biasanya hanya saja dengan cara ini nomor transaksi akan tampil lebih konsisten karena jumlah digit yang digunakan memiliki panjang sama.

Dari susunan tabel penyimpanannya juga tidak ada perbedaan, jadi semuanya memang murni tampilanya saja. Misal untuk filed/kolom nomor bisa menggunakan tipe int atau long untuk jumlah transaksi yang lebih banyak.

Secara logika proses pembuatan nomor transaksi dengan cara yang saya bahas ini tidak jauh beda dengan biasanya hanya saja sebelum ditampilkan, nomor yang diperoleh dari database di konversi dulu dengan format khusus.

Misal kita punya tabel transaksi dengan struktur seperti berikut :

  1. nomor - tipe data int dengan atribut primary auto increment
  2. tanggal - tipe data date
  3. dst disesuaikan dengan kasus

Asumsi data transaksi masih kosong sehingga jika ada transaksi baru maka nomor akan diberi nilai 1.

Jika kita mengambil nomor transaksi dengan cara biasa seperti cara berikut :

function getLastTrans()
{
   $querycount="SELECT MAX(ID) AS LastID FROM tb_trans";
   $result=mysql_query($querycount) or die(mysql_error());
   $row=mysql_fetch_array($result, MYSQL_ASSOC);
   return $row['LastID'];
}

Fungsi diatas akan mengembalikan nilai ID transaksi terakhir dengan cara :

$LastID=getLastTrans();

Misal ketemu ID transaksi terakhir adalah 0 karena tabel transaksi masih kosong. Nilai 0 adalah nomor terakhir, berarti untuk transaksi berikutnya adalah 1. Jika ketemu 1, maka transaksi berikutnya 2, dst.

ID terakhir tersebut kemudian harus kita manipulasi agar bisa ditampilkan dalam bentuk 0001. Untuk memanipulasi ID tersebut kita bisa gunakan fungsi berikut :

function FormatNoTrans($num)
{
    $num=$num+1;
    switch (strlen($num))
    {
    case 1 : $NoTrans = "0000".$num; break;
    case 2 : $NoTrans = "000".$num; break;
    case 3 : $NoTrans = "00".$num; break;
    case 4 : $NoTrans = "0".$num; break;
    default: $NoTrans = $num;   
    }      
    return $NoTrans;
}

Secara logika kita cuman melakukan pengecekan panjang angka yang dikirimkan kepada fungsi FormatNoTrans. Misal jika dikirimkan 1 maka outpunya adalah 00001, jika dikirimkan dalam ratusan seperti 221 maka outpunya 00221 dst.

Jika kita gabungkan kedua fungsi yang sudah dibuat maka kita bisa memanggilanya dengan cara :

$LastID=FormatNoTrans(getLastTrans());

Notes :
Untuk beberapa kasus anda bisa kombinasikan nomor tersebut dengan huruf seperti A001, atau bisa juga dengan kombinasi angka seperti tahun atau bulan. Akan tetapi untuk kasus seperti ini anda harus menyediakan field baru agar nomor transaksinya bisa disimpan secara terpisah, contoh dengan susunan tabel seperti berikut :

  1. nomor - tipe data int dengan atribut primary auto increment
  2. kode - tipe char sesuai panjang yang diperlukan
  3. tanggal - tipe data date
  4. dst disesuaikan dengan kasus

Jika perlu kombinasi seperti diatas anda bisa gunakan cara :

$LastID="A".FormatNoTrans(getLastTrans()); //Untuk kombinasi dengan huruf
$LastID=year("Y").FormatNoTrans(getLastTrans()); //Untuk kombinasi dengan tahun

Pada saat menyimpan ke tabel anda tinggal simpan hasil kode ke field kode yang sudah kita buat.

Semoga bermanfaat dan selamat mencoba. Jika ada yang kurang jelas silahkan ditanyakan dan jika ada yang salah silahkan dikoreksi.

Zainal Hakim

** Bebas disunting dengan menyebutkan sumber **

Komentar

Halaman Lainya

  • Membuat paging dengan combo box
    Membuat paging dengan combo box. Sebelumnya saya menulis tentang bagaimana membuat paging sederhana dengan cara menampilkan nomor halaman sebagai pilihan halamanya. Dengan cara tersebut untuk kasus data yang sedikit tidak bemasalah karena pilihan halaman tentunya juga sedikit, akan tetapi pada kasus data yang banyak mungkin ribuan bahkan lebih akan bermasalah karena pilihan halaman akan sangat banyak. Ada beberapa alternatif agar lebih mudah, salah satunya dengan membuat pilihan halaman dalam list/menu atau yang sering disebut combo box.
  • Cara menuliskan css dan html dalam php
    Mungkin anda sudah mengetahui bahwa PHP bekerja disisi server sedangkan HTML dan CSS bekerja disisi klien. Ketiganya bisa saling melengkapi sehingga menghasilkan halaman web yang dinamis dengan tampilan yang menarik. Berikut ini saya akan berbagi tentang bagaimana menuliskan css dan html tersebut dalam php.
  • Membuat aplikasi data mahasiswa dengan PHP - Bagian 4
    Melanjutkan artikel saya tentang membuat aplikasi data mahasiswa yang sempat tertunda, sekarang saya lanjutkan membahas tentang bagaimana membuat form update data mahasiswa serta menyimpanya kembali kedalam tabel database mysql yang sudah saya buat.
  • Membagi halaman laporan dalam php
    Jumlah data dari mysql yang tampil dalam laporan yang dibuat dengan php tentunya akan sangat mempengaruhi kinerja aplikasi web yang kita buat. Semakin banyak data, pasti prosesnya akan semakin lama dan tentunya agak sedikit menyulitkan orang yang membacanya.
  • Mengenal php framework
    Framework dapat diartikan sebagai sebuah kerangka kerja yang digunakan untuk mempermudah penyelesaian sebuah pekerjaan. Jika dikaitkan dengan PHP maka dapat diartikan sebagai suatu kerangka kerja yang telah terpola dengan tujuan memudahkan pengembang web dalam menyusun rangkaian proses dengan bahasa pemrograman PHP. Misal dalam membuat sebuah aplikasi web, pengembang harus menuliskan kode program secara berulang dengan kompleksitas tinggi. Hal tersebut tentunya akan sangat mengurangi tingkat efisien waktu serta menguras pikiran bahkan kode yang dihasilkan mungkin saja kurang optimal dari segi penulisan serta proses yang dilakukan dalam program.

Kiriman terbaru