arradyscode

http://www.arradyscode.com

Welcome to arradyscode.
Share algorithms, logic and codes of programming languages.

Penomoran Otomatis Pada Delphi dan PHP

Pada dasarnya setiap database sudah memiliki AutoNumber nya tersendiri. Autonumber ini dapat diperolah dengan mendefinisikan field primary sebagai autoincrement. Dengan demikian setiap ada penginputan record baru, record tersebut akan memiliki satu kode unik yang selalu bertambah satu (increment).
Namun demikian ada saatnya kita memerlukan penomoran dengan format yang berbeda, katakanlah kita memerlukan prefix atau suffix pada penomoran. Untuk menjawab persoalan tersebut pada kesempatan kali ini saya akan mencoba menguraikan langkah-langkah yang dilakukan untuk membuat penomoran otomatis.
Penomoran otomatis dapat dilakukan dengan semua bahasa pemograman, baik itu terhubung ke database atau tidak, namun pada kesempatan ini saya hanya akan mencontohkannya dalam bahasa pemrograman Delphi dan PHP dengan asumsi telah terhubung ke database. Semoga dapat dipahami dan disesuaikan pada bahasa pemograman lain. Untuk penomoran otomatis pada Stored Procedure MySQL akan saya uraikan pada artikel saya selanjutnya.
Langkah-langkah yang dilewati dalam pembuatan nomor otomatis ini antara lain:
  1. Ambil nomor terakhir pada database, jika tidak ada maka nomor terakhir adalah 0 (nol).
  2. Tambahkan nomor tersebut dengan 1 (satu).
  3. Hasil pada langkah ke 2 (dua) merupakan nomor baru pada inputan selanjutnya.
Perlu dicermati, point 1 dan 3 begitu sederhana jika penomorannya hanya angka, tanpa prefix ataupun suffix. Untuk permasalahan tersebut Anda dapat menggunakan fungsi-fungsi pengolah string pada bahasa pemrograman yang Anda gunakan.
Untuk memudahkan tutorial saya kali ini, saya tentukan penomoran yang akan kita pelajari dengan format : KODE-00001.
Sebelum kita mulai, buatlah sebuah database "penomoran" dan tabel "otomatis", berikut saya sertakan query untuk create tabelnya.
CREATE TABLE `otomatis` (
 `nomor` CHAR(10) NOT NULL,
 `nama` VARCHAR(30) NULL DEFAULT NULL,
 PRIMARY KEY (`nomor`)
)
ENGINE=InnoDB;
Kemudian tambahkan beberapa baris ke tabel tersebut, nomor diisi sesuai format:

Seperti saya sebutkan sebelumnya, pada tutorial kali ini saya asumsikan Anda sudah memahami tentang koneksi dan sudah terhubung ke database.

Delphi

procedure TForm1.Button1Click(Sender: TObject);
var
  no_urut : string;
  no_baru : string;
begin
  with ZQuery1 do begin
    { query mengambil nomor urut terakhir }
    sql.text := 'SELECT nomor FROM otomatis ORDER BY nomor DESC LIMIT 1';
    open;

    { nomor urut saat ini }
    no_urut := fieldbyname('nomor').AsString;

    { karena nomor urut sebenarnya adalah 5 angka terakhir
      contoh: Kode-00001, nomor urutnya adalah 00001,
      maka perlu fungsi mengambil 5 karakter dari kanan. }
    no_urut := rightStr(no_urut,5);

    { nomor urut baru adalah nomor lama + 1}
    no_baru := inttostr( strtointdef( no_urut,0) + 1);

    { tambahkan kembali prefix "Kode" }
    no_baru := 'Kode-'+formatfloat('00000',strtofloat(no_baru));

    { hanya untuk ujicoba hasil }
    showmessage(no_baru);
  end;
end;

PHP

<?php
  mysql_connect('localhost','root','');
  mysql_select_db('penomoran');

  #query ambil urut terakhir
  $qry = mysql_query('SELECT nomor FROM otomatis ORDER BY nomor DESC LIMIT 1');

  #ambil 5 angka terakhir, jika tidak ada record otomatis 0
  if (mysql_num_rows($qry) == 1){
   $nomor = mysql_result($qry,0,0);
   $nomor = substr($nomor,-5);
  }else
   $nomor = 0;

  #tambahkan 1, increment
  $nomor++;

  #format kembali
  $nomor = 'Kode-' . str_pad($nomor, 5, '0', STR_PAD_LEFT);

  echo $nomor;
?>
Jika kedua script di atas dijalankan, maka Anda akan mendapat hasil "Kode-00003", dikarenakan nomor urut terakhir di table adalah "Kode-00002".
Demikian contoh sederhana pembuatan nomor otomatis pada Delphi dan PHP, Anda yang menggunakan Lazarus tentunya dapat menggunakan script Delphi juga.
Untuk pembuatan penomoran otomatis pada Stored Procedure akan saya jelaskan pada tulisan saya berikutnya.

Terbaru di blog ini:

Mungkin Anda juga ingin membaca:

Berkomentarlah sesuai topik.

6 komentar

avatar

uwaaahh... terima kasih, dari kemarin nyoba2 gagal terus, tapi pake cara ini berhasil :))

avatar

sama-sama semoga bermanfaat :)

avatar

kalo setelah di sve nom otomatis ga muncul lagi gimana tuh pak, tapi kalo form ditutup trus dibuka lagi baru muncul lagi pak.

avatar

jangan lupa direfresh dataset (query atau tabel) nya,
terkadang harus close dan open

avatar

kalo format autonumber buat ribuan record gimana bang?

avatar

Caranya sama saja, yg membedakan cuma jumlah karakter yang dipotong, sesuaikan.

Gunakan kode berikut untuk menambahkan emoticon ke komentar:
:)
:(
=(
^_^
:D
=D
|o|
@@,
;)
:-bd
:-d
:P
:ngakak:

Untuk menuliskan Syntax: [code] code disini [/code]

Untuk menuliskan Quote: [quote] quote disini [/quote]

Berkomentarlah sesuai topik