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 **

Artikel Lainnya

  • Perbedaan session dan cookies dalam php
    Dalam php kita mengenal session dan cookies yang digunakan untuk menyimpan informasi pengguna. Secara umum memang sulit dibedakan karena dari segi fungsinya bisa dikatakan sama. Artikel berikut akan membantu anda membedakanya dari berbagai sisi implementasinya.
  • Masalah seputar upload file dengan php
    Minat terhadap bahasan tentang upload file dengan php kayanya sangat tinggi, ini saya lihat dari banyaknya pengunjung yang datang ke situs saya ini mencari informasi tentang bagaimana membuat form upload, membuat upload ke database dll. Oleh karena itu saya akan berbagi informasi tentang hal yang sering terjadi pada saat membuat fasilitas upload file dengan php, mudahan ini berguna buat teman-teman yang sedang mendalaminya.
  • Membuat upload video dengan php
    Secara teknik dasar membuat form upload untuk video tidak berbeda dengan cara membuat form upload gambar yang sudah saya tulis pada tutorial sebelumnya. Hanya berbeda pada bagian proses menangani file yang diupload ke server.
  • Membagi form dalam beberapa halaman
    Ada beberapa contoh kasus yang mengharuskan kita membagi form dalam beberapa halaman, agar proses input lebih mudah dan dapat memunculkan pilihan sesuai dengan inputan awal. Berikut ini saya akan berbagi trick bagaimana membuat beberapa form yang terpisah halaman bisa saling terhubung dalam sebuah proses.
  • Perintah include dan require dalam php
    Perintah require() dan include() dalam php digunakan untuk menyisipkan isi file tertentu menjadi bagian file yang memanggilnya. Keduanya sangat identik dalam banyak hal, kecuali cara penanganan kegagalan. include() menghasilkan suatu peringatan, sedangkan require() menghasilkan pesan kesalahan Fatal Error.

Kiriman terbaru