我有这些代码:
//ambil nomor surat maksimum pada tabel surat_keterangan
$query = "SELECT MAX(nomor_surat) as noMax FROM surat_keterangan";
$result = mysqli_query($link,$query);
$row = mysqli_fetch_array($result);
$nomor = $row['noMax'];
//ambil karakter nomor urut surat paling kiri sebanyak 1 karakter (0, 1)
$noUrut = (int) substr($nomor, 0, 1);
$noUrut++;
//mengambil bulan dan tahun dari tanggal surat
$bulan = substr($tgl_surat,3,2);
$tahun = substr($tgl_surat,6,4);
//membuat nomor surat
$nomor_surat = $noUrut."/SK/".$bulan."/DPK3/".$tahun;
输出将是
1 / SK / 06 / DPK3 / 2014。
每次插入数据时,第一个字符串(1)都会添加。 我已经尝试过10 / SK / 06 / DPK3 / 2014,但是当我继续输入时,输出仍然是
10 / SK / 06 / DPK3 / 2014,而非11 / SK / 06 / DPK3 / 2014。
还有另外一种方法吗? 谢谢你的每一个回复和答案。
答案 0 :(得分:1)
问题与$noUrut = (int) substr($nomor, 0, 1);
一致,你在第一个字符中使用alwazy(当字符串以10
开头时,你只使用1
而1++
使用2。
因此,您需要找到第一个斜杠(/)位置,而不是使用substr。
$noUrut = (int)substr($nomor, 0, strpos($nomor, '/'));
$noUrut++;
或只是在线
$noUrut = (int)substr($nomor, 0, strpos($nomor, '/')) + 1;
答案 1 :(得分:1)
你的领域是" nomor_surat"使用varchar变量?如果是这样,那么你需要将它转换为int
how to query get max id from varchar type and the values in numeric?