Membuat nomor urut otomatis di mysql

Tutorial kali ini kita akan membahas Cara Membuat nomor urut saat menampilkan data pada PHP Mysqli atau mysqli. Untuk Menampilkan No urut terhadap data yang kita tampilkan pada database dengan PHP mysql cukup mudah, dengan fungsi mysql_fetch_array pada mysql, kita tidak perlu menuliskan no urut secara manual, lo ko manual.. apa bisa.. ? ya iya lah kan datanya di tampilkan dengan loop atau perulangan biasanya (while) , Jadi kita tidak perlu membuat No urut manual..

 OK.. back to pint,,, Cara Membuat nomor urut otomatis saat menampilkan data di database kita cukup Sederhana , berikut code sample nya :

 

$no=0;//variabel no
$tampil = mysqli_query($koneksi, "SELECT * FROM kategori ORDER BY id_kategori ASC");
while ($r=mysqli_fetch_array($tampil)){
$no++;
echo "$no"; //Untuk menampilkan no urut otomatis
}

Ingat, $koneksi , merupakan koneksi ya , jika belum mengerti cara membuat koneksi di mysqli , silahkan lihat di artikel Membuat Koneksi di Mysql dan Mysqli

Perhatikan script di atas, pertama kita buat sebuat variabel $no=0 , kemudian lakukan perintah menampilkan data di database , Dalam perulangan while , yang artinya data di database kita tampilkan dengan looping, kita berikan nilai variabel  $no dengan ++ lihat pada code $no++; , yang artinya kita menambahkan no dengan 1 pada setiap perulangan

Nah.. Jika anda Tidak menggunakan Perulangan WHILE untuk menampilkan data, anda bisa mengaplikasikan perulangan yang lainnya yang dapat anda baca di Perbedaan Antara FOR, WHILE, Dan DOWHILE

Bagaimana.. ? Mudah Bukan... ? Cara Membuat no urut otomatis saat menampilkan data pada PHP MYsql... Semoga Bermanfaat ... keep coding....

Terkadang terdapat suatu kondisi yang membutuhkan pengurutan kode secara manual dalam database MySQL, walaupun sudah terdapat pengkodean urut secara sistem (autoincrement).

Artikel ini menjelaskan cara pembuatan kode urut melalui Query SQL seperti contoh format di bawah ini :

  • 001, 002, 003, … 999
  • A0001, A0002, … A9999
  • AB00001, AB00002, … AB99999

Ketentuan penggunaan Query SQL adalah sebagai berikut :

  1. Mesti ada data awal dalam suatu tabel sebagai format contoh, misalkan : A001. Selanjutnya Query SQL baru dapat menghasilkan kode selanjutnya sesuai dengan format pengurutan
  2. Kode awal dapat hanya berupa angka, atau mengandung alphabet di depan (maksimal 3 huruf)
  3. Jumlah maksimum digit mengikuti data format awal, sebagai contoh A001 mempunyai kode maksimum A999

Query SQL :

SELECT IFNULL(CONCAT(kode,LPAD(angka,lebar_angka,'0')),'') AS kode FROM
  (
  SELECT CONCAT(
    CASE SUBSTR(nama_field_kode,1,1) REGEXP '[A-Z]' WHEN 1 THEN SUBSTR(nama_field_kode,1,1) ELSE '' END,
    CASE SUBSTR(nama_field_kode,2,1) REGEXP '[A-Z]' WHEN 1 THEN SUBSTR(nama_field_kode,2,1) ELSE '' END,
    CASE SUBSTR(nama_field_kode,3,1) REGEXP '[A-Z]' WHEN 1 THEN SUBSTR(nama_field_kode,3,1) ELSE '' END
  ) AS kode,
  CONCAT(
    CASE SUBSTR(nama_field_kode,3,1) REGEXP '[A-Z]' WHEN 1 THEN LENGTH(SUBSTR(nama_field_kode,4)) ELSE
    CASE SUBSTR(nama_field_kode,2,1) REGEXP '[A-Z]' WHEN 1 THEN LENGTH(SUBSTR(nama_field_kode,3)) ELSE
    CASE SUBSTR(nama_field_kode,1,1) REGEXP '[A-Z]' WHEN 1 THEN LENGTH(SUBSTR(nama_field_kode,2)) ELSE
    LENGTH(nama_field_kode)
      END
    END END
  ) AS lebar_angka,
  CONCAT(
    CASE SUBSTR(nama_field_kode,3,1) REGEXP '[A-Z]' WHEN 1 THEN MAX(SUBSTR(nama_field_kode,4))+1 ELSE
    CASE SUBSTR(nama_field_kode,2,1) REGEXP '[A-Z]' WHEN 1 THEN MAX(SUBSTR(nama_field_kode,3))+1 ELSE
    CASE SUBSTR(nama_field_kode,1,1) REGEXP '[A-Z]' WHEN 1 THEN MAX(SUBSTR(nama_field_kode,2))+1 ELSE
    MAX(nama_field_kode)+1
      END
    END END
  ) AS angka
  FROM nama_tabel GROUP BY 1 LIMIT 1
) temp;

Penjelasan Sistem Kerja Query SQL :

  1. Pencarian kode inisial (jika ada), misalkan A pada A001
  2. Penghitungan jumlah maksimum digit
  3. Nilai urut sesudah angka terbesar
  4. Penggabungan kode inisial(poin 1), dengan nilai urut selanjutnya(poin 3) dengan lebar digit sesuai dengan poin 2

Penjelasan parameter :

  • nama_tabel : nama tabel
  • nama_field_kode : field yang menyimpan kode urut (varchar)

Jika ingin menjadikannya sebagai Store Procedure :

CREATE PROCEDURE sp_getKodeBaru(IN nama_tabel VARCHAR(255),
  IN nama_field_kode VARCHAR(255),
  OUT varhasil VARCHAR(255))
BEGIN
  SET @strQuery =
  CONCAT('SELECT IFNULL(CONCAT(kode,LPAD(angka,lebar_angka,''0'')),'''') INTO @varhasil FROM ',
    '(
    SELECT CONCAT(
      CASE SUBSTR(',nama_field_kode,',1,1) REGEXP ''[A-Z]'' WHEN 1 THEN SUBSTR(',nama_field_kode,',1,1) ELSE '''' END,
      CASE SUBSTR(',nama_field_kode,',2,1) REGEXP ''[A-Z]'' WHEN 1 THEN SUBSTR(',nama_field_kode,',2,1) ELSE '''' END,
      CASE SUBSTR(',nama_field_kode,',3,1) REGEXP ''[A-Z]'' WHEN 1 THEN SUBSTR(',nama_field_kode,',3,1) ELSE '''' END
    ) AS kode,
    CONCAT(
      CASE SUBSTR(',nama_field_kode,',3,1) REGEXP ''[A-Z]'' WHEN 1 THEN LENGTH(SUBSTR(',nama_field_kode,',4)) ELSE
      CASE SUBSTR(',nama_field_kode,',2,1) REGEXP ''[A-Z]'' WHEN 1 THEN LENGTH(SUBSTR(',nama_field_kode,',3)) ELSE
      CASE SUBSTR(',nama_field_kode,',1,1) REGEXP ''[A-Z]'' WHEN 1 THEN LENGTH(SUBSTR(',nama_field_kode,',2)) ELSE
      LENGTH(',nama_field_kode,')
        END
      END END
    ) AS lebar_angka,
    CONCAT(
      CASE SUBSTR(',nama_field_kode,',3,1) REGEXP ''[A-Z]'' WHEN 1 THEN MAX(SUBSTR(',nama_field_kode,',4))+1 ELSE
      CASE SUBSTR(',nama_field_kode,',2,1) REGEXP ''[A-Z]'' WHEN 1 THEN MAX(SUBSTR(',nama_field_kode,',3))+1 ELSE
      CASE SUBSTR(',nama_field_kode,',1,1) REGEXP ''[A-Z]'' WHEN 1 THEN MAX(SUBSTR(',nama_field_kode,',2))+1 ELSE
      MAX(',nama_field_kode,')+1
        END
      END END
    ) AS angka
    FROM ',nama_tabel,' GROUP BY 1 LIMIT 1
    ) tabel_temp');
  PREPARE stmt FROM @strQuery;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;

  SET varhasil = @varhasil;
END

Penjelasan parameter :

  • nama_tabel : nama tabel
  • nama_field_kode : field yang menyimpan kode urut (varchar)
  • varhasil : penampung hasil (kode urut selanjutnya)

Cara pemanggilan Store Procedure di atas :

CALL sp_getKodeBaru('tabel1','kode_urut',@varhasil);
SELECT @varhasil AS kode;

Bayu Kandukeswara

Mengenal apa itu MySQL?

MySQL yang dibaca “MY-ES-KYOO-EL" merupakan sistem manajemen database yang bersifat open-source yang menggunakan perintah dasar atau bahasa pemrograman yang berupa structured query language (SQL) yang cukup populer di dunia teknologi. MySQL berguna sebagai database.

Apa itu where MySQL?

“WHERE” digunakan untuk menetapkan kriteria yang harus dipenuhi dalam memperoleh hasil query. Dalam tutorial ini kita akan menggunakan database Pos.

Apa yang membedakan PhpMyadmin dan MySQL?

(Perbedaan PhpMyadmin dengan MySQL serta Kemampuan MySQL menyimpan Database) – Phpmyadmin adalah hanya alat memudahkan untuk mengoperasikan database MySQL sedangkan MySQL adalah database tempat penyimpanan data.