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
<?php
$hostname = 'localhost'; // server mysql
$username = 'root'; // user mysql
$password = 'password'; // pasword mysql
$database = 'databaseku'; // nama database
try
{
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
$query = $dbh->query('SELECT MAX(kode_barang) as kodex FROM barang'); // mengambil nilai kode_barang terbesar
$data = $query->fetch();
$kode = $data['kodex']; // kode_barang dengan angka terbesar
$nourut = substr($kode, 3, 4); // contoh JRD0004, angka 3 adalah awal pengambilan angka, dan 4 jumlah angka yang diambil
$nourut++;
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.
Keuntungan menggunakan sprintf("%04s")
adalah format yang kita gunakan akan tetap dalam format 4 angka, bila angkanya masih dibawah 10000, contoh
Bila diatas 1000 hasilnya sama saja
Gan. Klo data udh 999 trs balik lg ke 001. Gmn ya?
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?
itu kepanjangan kode barangnya?
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
kalo mau pake versi mysqli oop, dimana yang harus diubah ya pak?
bagian query ke databasenya
gak ane minta pencerahan untuk bikin kode otomatis input anggota !!!!
karena ane dah coba bikin tapi gagal terus
gagal dimananya?