Contoh kasus, kita akan membuat kode barang berurutan secara otomatis, formatnya adalah JRD0000 dimana JRD adalah kode perusahaan dan 0000 empat angka ini adalah no urutan barang.

Buat database contoh sebagai berikut

CREATE TABLE IF NOT EXISTS `barang` (
  `ID` int(11) NOT NULL,
  `kode_barang` varchar(20) NOT NULL,
  `nama_barang` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
 
 
INSERT INTO `barang` (`ID`, `kode_barang`, `nama_barang`) VALUES
(1, 'JRD0001', 'Susu Ultra'),
(2, 'JRD0002', 'Kacang Ijo'),
(3, 'JRD0003', 'Ultramilk'),
(4, 'JRD0004', 'Shampoo Ini');
 
 
ALTER TABLE `barang`
  ADD PRIMARY KEY (`ID`);
 
ALTER TABLE `barang`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
COMMIT;

buat file php dengan nama nourut.php, isinya sebagai berikut

  1. <?php
  2.  
  3. $hostname = 'localhost'; // server mysql
  4. $username = 'root'; // user mysql
  5. $password = 'password'; // pasword mysql
  6. $database = 'databaseku'; // nama database
  7. try
  8. {
  9. 	$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
  10.  
  11. }
  12. catch(PDOException $e)
  13. {
  14. 	echo $e->getMessage();
  15. }
  16. $query = $dbh->query('SELECT MAX(kode_barang) as kodex  FROM  barang'); // mengambil nilai kode_barang terbesar
  17. $data = $query->fetch();
  18. $kode = $data['kodex']; // kode_barang dengan angka terbesar
  19. $nourut = substr($kode, 3, 4); // contoh JRD0004, angka 3 adalah awal pengambilan angka, dan 4 jumlah angka yang diambil
  20. $nourut++; 
  21. echo sprintf("%04s", $nourut) ; // mencetak no urut dengan 4 angka, lihat bedanya jika hanya menggunakan echo $nourut;

baris 18-21 adalah bagian yang berguna untuk membuat urutan kode barang tersebut. Baris 19 berguna untuk memecah kode barang JRD0004 menjadi JRD dan 0004.

Jalankan script diatas di browser hasilnya adalah 0005, karena data yang ada di database baru ada 4 baris.
hasil no urut

Keuntungan menggunakan sprintf("%04s") adalah format yang kita gunakan akan tetap dalam format 4 angka, bila angkanya masih dibawah 10000, contoh
bedanya sprintf dan ngga
Bila diatas 1000 hasilnya sama saja
diatas 10000

Join the Conversation

8 Comments

Your email address will not be published. Required fields are marked *

    1. Ane udah buat kode barang otomatis pas dihosting malah kode barang melebihi batas jumlah huruf jadinya muncul Query salah : Data too long for column ‘kd_barang’ at row satu, itu bagaimana memperbaikinya?

  1. kalau karakter kode nya mau dibuat berbeda gimana ya?
    misal TB0201 dan kodenya TB0302
    disini permasalahannya 4 karakter didepan memiliki perbedaan, jadi 2 digit no urutnya tidak bertambah karna yang terbaca di database max nya itu kode pertama yaitu TB0201
    mohon bantuannya terima kasih

  2. gak ane minta pencerahan untuk bikin kode otomatis input anggota !!!!
    karena ane dah coba bikin tapi gagal terus