Tanya Generate Kode Otomatis

Assalamualaikum, permisi suhu saya mau tanya...saya kan punya field kode yg dimana field itu hanya berisi 2 digit saja. Nah bagaimana caranya ketika data sudah mencapai 99 dan ingin input lagi, value kode nya itu tidak ingin jadi 100, tapi jadi A0,A1,A2...dan seterusnya sampai A9? ini kode yang saya pakai


$kd_last = 0;
$sql = "SELECT MAX( SUBSTRING(kode,2,2) ) as kode_max, max(kode) as max_kode, ho_bo as hobo
FROM mst_nasabah_konstruksi
WHERE kode LIKE '".$kd1."%0'";
$q = $this->db->query($sql);
$res = $q->row_array();
$maxkode = $res['max_kode'];
$kodemax = $res['kode_max'];
$nextHO = $kodemax;
if($nextHO >= '99')
$nextHO = 'A0';
$sql = "SELECT MAX( SUBSTRING(kode,2,2) ) as kode_max, max(kode) as max_kode, ho_bo as hobo
FROM mst_nasabah_konstruksi
WHERE kode LIKE '".$kd1.$nextHO."%0'";
$q = $this->db->query($sql);
$res = $q->row_array();
$maxkode = $res['max_kode'];
$kodemax = $res['kode_max'];
$nextHO = $kodemax;
$nextHO++;
$kode = $kd1.sprintf("%02s", $nextHO).'0';
avatar yugaaghnia
@yugaaghnia

3 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

6 Jawaban:

Trus kalau sudah sampai Z9 atau ZZ mau seperti apa?

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 6 tahun yang lalu

kode maksimalnya ZZ gan

avatar yugaaghnia
@yugaaghnia

3 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

menurut ane sih kalau yang mudah kode itu misal KODE0001, jadi nanti selanjutnya KODE0002 atau gak gabungan dari beberapa ketentuan dan di belakang nya di sisipkan no, misal racikan nya FR-tanggalsekarang001, nah nanti selanjut nya jadi FR-tanggalsekarang002 => FR-190917001(hanya contoh)

avatar sukmaw
@sukmaw

340 Kontribusi 75 Poin

Dipost 6 tahun yang lalu

@yugaaghnia itu pengkodean kenapa cuma dibuat 2 digit sangat terbatas sekali kalau untuk digunakan dalam aplikasi yg kedepannya akan banyak data. Saya sepakat dengan kang @sukmaw

avatar firmanza
@firmanza

1 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

@sukmaw @firmanza terimakasih sudah bantu jawab pertanyaan saya. Sebenarnya saya bikin 4 digit gan untuk pengkodeannya. Contohnya "B010" Dimana: - Digit ke1 itu saya ambil string pertama dari nama perusahaan, contohnya Bumi Asri -Digit ke2-3 itu menunjukan nomor urut, seperti yg saya tanyakan -Digit terakhir menunjukan 0 untuk kantor pusat dan 1 untuk kantor cabang Nah, kira2 agan2 punya solusi nggak buat kasus saya, hehe

avatar yugaaghnia
@yugaaghnia

3 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Jawaban Terpilih

ini saya coba dari 00 - ZZ, maksimal entry 1000 (0-999)

<?php
function getAlphanum($num)
{
  $alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $alphanum = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  if($num < 100)
  {
    if(strlen($num) < 2)
      return '0' . $num;

    return $num;
  }
  else if($num >= 100)
  {
    $newNum = $num - 99;
    $firstLetter = (int)($newNum / 35);
    $secondLetter = ($newNum % 36) - 1;
    if($secondLetter == -1)
      $secondLetter = 35;

    return substr($alpha, $firstLetter, 1) . substr($alphanum, $secondLetter, 1);
  }
}

for($i=0;$i<1000;$i++)
{
  echo 'Number: ' . $i . ' = ' . getAlphanum($i);
  echo '<br>';
}

hasilnya bisa dicek disini https://tehplayground.com/5Rx1JLFf3y3PU4zt klik save and run

sekilas sih kelihatannya bener sampe ZZ :D

avatar rachmatsasongko
@rachmatsasongko

410 Kontribusi 426 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban