Membuat ID Otomatis dengan PHP
Membuat ID otomatis dengan PHP
Pada umumnya untuk urusan ID atau Primary Key pada tabel di mysql kita biasa menggunakan Auto Increment(A.I) dimana dengan A.I tersebut id atau key yang di inginkan akan bertambah otomatis setiap kali record bertambah.
Namun, pada kasus2 lain seperti NIM (No Induk Mahasiswa), NIP atau sejenisnya sering kita jumpai format seperti ini : 8020070233 dimana setiap angka mempunyai arti masing2:
dari format diatas, jumlah maksimal mahasiswa yang akan mendaftar ditentukan dengan 4 digit, artinya tidak bisa lebih dari 9999 orang. Untuk kasus seperti NIM diatas, tentu tidak bisa menggunakan fungsi A.I pada MySql, maka dari perlu dibuat suatu fungsi agar NIM tersebut bisa bertambah secara otomatis setiap kali data di inputkan.
langsung ke pokok permasalah. Untuk kasus NIM seperti 8020070233, kita pisahkan terlebih dahulu NIM tersebut dengan fungsi SUBSTR
setelah itu, tambahkan jumlah mahasiswa dengan 1
langkah berikutnya adalah membuat kondisi penambahan 0 di belakang $hasil berdasarkan jumlah karakter hasil penambahan ($pk_n).
Dari kondisi diatas dapat diartikan seperti ini jika jumlah karakternya ($pk_n) = 1 maka jumlah mahasiswa 000 digabungkan dengan $hasil yang berarti jika $hasil adalah 2 maka $jumlah_mhs berisi 0002.
dan jika $hasil=10, berarti $pk_n = 2 (2 karakter) maka $jumlah_mhs = 0010 dst sampai dengan kondisi terakhir dimana jika jumlah karatkter ($pk_n) tidak 1,2,3 atau 4 berarti $jumlah_mhs=Data Error.
lalu langkah terakhir kita gabungkan kembali jurusan, tahun dan jumlah mahasiswa
dan didapatkanlah ID baru setelah ditambah 1 dari id yang lama.
Untuk lebih jelasnya, silahkan coba script dibawah:
file index.php
file proses.php
file function.php
<?php
function getId($id_old){
$jurusan = substr($id_old,0,2);
$tahun = date("Y");
$jumlah_mhs = substr($id_old,6,4);
$hasil = $jumlah_mhs + 1;
$pk_n = strlen($hasil);
if($pk_n == 1){
$jumlah_mhs = "000".$hasil;
}else if($pk_n == 2){
$jumlah_mhs = "00".$hasil;
}else if($pk_n == 3){
$jumlah_mhs = "0".$hasil;
}else if($pk_n == 4){
$jumlah_mhs = $hasil;
}else{
$jumlah_mhs = "Data Error";
}
return $primary = $jurusan.$tahun.$jumlah_mhs;
}
?>
file view.php
Pada contoh yang saya buat diatas, untuk setiap jurusan diwakilkan dengan angka.
80 : Untuk Jurusan TI
40 : Untuk Jurusan SK
30 : Untuk Jurusan SI
Jika pada kasus lain, diperlukan id seperti ini 80-2009-0002 atau lc/produk/01 maka cara nya sama saja, hanya saja kita lebih mudah menggunakan fungsi explode untuk memisahkan tiap karakter.
Semoga bermanfaat :D
Pada umumnya untuk urusan ID atau Primary Key pada tabel di mysql kita biasa menggunakan Auto Increment(A.I) dimana dengan A.I tersebut id atau key yang di inginkan akan bertambah otomatis setiap kali record bertambah.
Namun, pada kasus2 lain seperti NIM (No Induk Mahasiswa), NIP atau sejenisnya sering kita jumpai format seperti ini : 8020070233 dimana setiap angka mempunyai arti masing2:
80 : sebagai identifikasi jurusan
2007 : Tahun pendaftaran
0233 : jumlah mahasiswa
dari format diatas, jumlah maksimal mahasiswa yang akan mendaftar ditentukan dengan 4 digit, artinya tidak bisa lebih dari 9999 orang. Untuk kasus seperti NIM diatas, tentu tidak bisa menggunakan fungsi A.I pada MySql, maka dari perlu dibuat suatu fungsi agar NIM tersebut bisa bertambah secara otomatis setiap kali data di inputkan.
langsung ke pokok permasalah. Untuk kasus NIM seperti 8020070233, kita pisahkan terlebih dahulu NIM tersebut dengan fungsi SUBSTR
$id_old = 8020070233;
$jurusan = substr($id_old,0,2); //mengambil angka jurusannya
$jumlah_mhs = substr($id_old,6,4); //mengambil angka jumlah mahasiswa
$tahun = date("Y"); //mengambil tahun dari sistem.
setelah itu, tambahkan jumlah mahasiswa dengan 1
$hasil = $jumlah_mhs + 1;lalu hitung jumlah karakter dari $hasil dan simpan di $pk_n
$pk_n = strlen($hasil);
langkah berikutnya adalah membuat kondisi penambahan 0 di belakang $hasil berdasarkan jumlah karakter hasil penambahan ($pk_n).
if($pk_n == 1){
$jumlah_mhs = "000".$hasil;
}else if($pk_n == 2){
$jumlah_mhs = "00".$hasil;
}else if($pk_n == 3){
$jumlah_mhs = "0".$hasil;
}else if($pk_n == 4){
$jumlah_mhs = $hasil;
}else{
$jumlah_mhs = "Data Error";
}
Dari kondisi diatas dapat diartikan seperti ini jika jumlah karakternya ($pk_n) = 1 maka jumlah mahasiswa 000 digabungkan dengan $hasil yang berarti jika $hasil adalah 2 maka $jumlah_mhs berisi 0002.
dan jika $hasil=10, berarti $pk_n = 2 (2 karakter) maka $jumlah_mhs = 0010 dst sampai dengan kondisi terakhir dimana jika jumlah karatkter ($pk_n) tidak 1,2,3 atau 4 berarti $jumlah_mhs=Data Error.
lalu langkah terakhir kita gabungkan kembali jurusan, tahun dan jumlah mahasiswa
$primary = $jurusan.$tahun.$jumlah_mhs;
dan didapatkanlah ID baru setelah ditambah 1 dari id yang lama.
Untuk lebih jelasnya, silahkan coba script dibawah:
file index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>@nix</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="proses.php">
<table width="657" border="0">
<tr>
<td width="122">Nama</td>
<td width="519"><input name="nama" type="text" id="nama" /></td>
</tr>
<tr>
<td>Jurusan</td>
<td><select name="jurusan" id="jurusan">
<option value="80">TI</option>
<option value="40">SK</option>
<option value="30">SI</option>
</select>
</td>
</tr>
<tr>
<td>Alamat</td>
<td><label>
<textarea name="alamat" id="alamat"></textarea>
</label></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Simpan" /></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</form>
</body>
</html>
file proses.php
<?php
include "function.php";
mysql_connect("localhost","root","");
mysql_select_db("test");
$nama = $_POST['nama'];
$jur = $_POST['jurusan'];
$alamat = $_POST['alamat'];
$tahun = date("Y");
$query = mysql_query("select * from registrasi where
substr(nim,1,2) = '$jur' order by nim desc");
$data = mysql_fetch_assoc($query);
$id_old = $data['nim'];
if(mysql_num_rows($query) == 0){
$primary = $jur.$tahun."0001";
}else{
$primary = getId($id_old);
}
$qinput = mysql_query("insert into registrasi (nim,nama,alamat) values
('$primary','$nama','$alamat')");
if($qinput){
header("location:./view.php");
exit;
}
?>
file function.php
<?php
function getId($id_old){
$jurusan = substr($id_old,0,2);
$tahun = date("Y");
$jumlah_mhs = substr($id_old,6,4);
$hasil = $jumlah_mhs + 1;
$pk_n = strlen($hasil);
if($pk_n == 1){
$jumlah_mhs = "000".$hasil;
}else if($pk_n == 2){
$jumlah_mhs = "00".$hasil;
}else if($pk_n == 3){
$jumlah_mhs = "0".$hasil;
}else if($pk_n == 4){
$jumlah_mhs = $hasil;
}else{
$jumlah_mhs = "Data Error";
}
return $primary = $jurusan.$tahun.$jumlah_mhs;
}
?>
file view.php
<?php
include "koneksi.php";
$query = mysql_query("select * from registrasi where
substr(nim,1,2) = '40' order by nim desc");
echo "<h2>Jurusan SK</h2>";
while($data = mysql_fetch_assoc($query)){
echo "<br />Nim : $data[nim]";
echo "<br />Nama : $data[nama]";
echo "<br />Alamat : $data[alamat]";
echo "<hr color=blue>";
}
$query = mysql_query("select * from registrasi where
substr(nim,1,2) = '80' order by nim desc");
echo "<h2>Jurusan TI</h2>";
while($data = mysql_fetch_assoc($query)){
echo "<br />Nim : $data[nim]";
echo "<br />Nama : $data[nama]";
echo "<br />Alamat : $data[alamat]";
echo "<hr color=blue>";
}$query = mysql_query("select * from registrasi where
substr(nim,1,2) = '30' order by nim desc");
echo "<h2>Jurusan SI</h2>";
while($data = mysql_fetch_assoc($query)){
echo "<br />Nim : $data[nim]";
echo "<br />Nama : $data[nama]";
echo "<br />Alamat : $data[alamat]";
echo "<hr color=blue>";
}
?>
Pada contoh yang saya buat diatas, untuk setiap jurusan diwakilkan dengan angka.
80 : Untuk Jurusan TI
40 : Untuk Jurusan SK
30 : Untuk Jurusan SI
Jika pada kasus lain, diperlukan id seperti ini 80-2009-0002 atau lc/produk/01 maka cara nya sama saja, hanya saja kita lebih mudah menggunakan fungsi explode untuk memisahkan tiap karakter.
Semoga bermanfaat :D
No comments:
Post a Comment