kode otomatis
DESCRIPTION
sdfTRANSCRIPT
KampusKita.us | Pembuatan kode otomatis berdasarkan kriteria tertentu pada PHP tidaklah sulit caraya
tidak jauh berbeda dengan yang ada di visual. Penjelasan ini atas request dari bos fazar. Ok kita mulai
pada skenarionya..
Dicontohkan anda membuat input barang namun kode barang dibuat secara otomatis (bukan auto
increament) berdasarkan jenis barang tertentu. Misalkan AP001, AP002, MK010, MK100 dan seterusnya.
Terus caranya gimana ? kan pengambilan datanya dari database !!!
Jadi tekniknya adalah anda harus mengambil nilai id terbesar (max) dari suatu record dari database nya.
SELECT max(kode_barang) FROM nama_tabel WHERE kode_barang LIKE ‘AP%’
Setelah mendapatkan nilai terbesar dari field kode_barang misal terakhir data yang ada di tabel nya
AP0023. Kok ada kata LIKE ‘AP%’ artinya apa? coba buka kembali materi SQL nya siapa tahu
muncul..statement itu bemaksud cari karakter yang diawali dengan string AP. Sehingga yang muncul
diseleksi adalah AP001, AP…n, dst. nah dari AP001 tersebut nilai yang kita tambahkan tentunya nilai 1
menjadi AP002. Dalam PHP kita mengenal fungsi sprintf() dan substr() yaitu fungsi untuk mengambil dan
merubah nilai suatu string.
Untuk lebih ringkas berikut contohnya:
1. Buat tabel misal
CREATE TABLE member (
id varchar(6),
nama varchar(20),
alamat text,
PRIMARY KEY(id));
2. Buat file member.php
<h1>New Member</h1>
<form method=”post” action=”add_member.php”>
Jenis Member
<select name=”jenis”>
<option value=”A”>Platinum</option>
<option value=”B”>Gold</option>
<option value=”C”>Silver</option>
</select>
<input type=”submit” name=”submit” value=”Submit” />
</form>
3. Buat file aksi dari file member.php dengan nama file add_member.php
<?php
// koneksi ke mysql
mysql_connect(“localhost”, “root”, “”);
mysql_select_db(“dbtrik6″);
// membaca jenis anggota yang dipilih dari form sebelumnya
$jenis = $_POST['jenis'];
// membaca kode anggota terbesar berdasarkan jenis keanggotaan
$query = “SELECT max(id) as maxID FROM member WHERE id LIKE ‘$jenis%’”;
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$idMax = $data['maxID'];
// mengambil angka atau bilangan dalam kode anggota terbesar,
// dengan cara mengambil substring mulai dari karakter ke-1
// diambil 5 karakter, misal ‘A00001′, akan diambil ’00001′
// stlh substring bilangan diambil, di casting jadi integer
$noUrut = (int) substr($idMax, 1, 5);
// bilangan yang diambil ini ditambah 1
// untuk menentukan nomor urut berikutnya
$noUrut++;
// membentuk kode anggota baru
// perintah sprintf(“%05s”, $noUrut); digunakan
// untuk memformat string sebanyak 5 karakter
// misal sprintf(“%05s”, 12); maka akan dihasilkan ’00012′
// misal sprintf(“%05s”, 1); akan dihasilkan string ’00001′
$newID = $jenis . sprintf(“%05s”, $noUrut);
// kode anggota yang baru tersebut nanti akan ditampilkan
// dalam komponen text box
?>
<h1>Tambah Member Baru</h1>
<form method=”post” action=”submit_member.php”>
<table border=”0″>
<tr><td>ID Member</td><td>:</td>
<td><input type=”text” name=”id”
value=”<?php echo $newID; ?>”></td></tr>
<tr><td>Nama Member</td><td>:</td>
<td><input type=”text” name=”nama”></td></tr>
<tr><td>Alamat Member</td><td>:</td>
<td><input type=”text” name=”alamat”></td></tr>
<tr><td></td><td></td><td>
<input type=”submit” name=”submit” value=”Submit”></td></tr>
</table>
</form>
3. Buat file proses untuk file add_member.php dengan nama submit_member.php
<?php
mysql_connect(“localhost”, “root”, “”);
mysql_select_db(“dbtrik6″);
$idMember = $_POST['id'];
$namaMember = $_POST['nama'];
$alamatMember = $_POST['alamat'];
$query = “INSERT INTO member VALUES(‘$idMember’, ‘$namaMember’, ‘$alamatMember’)”;
$hasil = mysql_query($query);
if ($hasil)
echo “<h1>Tambah member sukses</h1>”;
else
echo “<h1>Tambah member gagal</h1>”;
echo “<a href=’member.php’>Tambah Member</a>”;
?>
( ?php function kdauto($tabel, $inisial){ $struktur = mysql_query("SELECT * FROM $tabel order by no_reg"); $field = mysql_field_name($struktur,0); $panjang = mysql_field_len($struktur,0);
$qry = mysql_query("SELECT max(".$field.") FROM ".$tabel); $row = mysql_fetch_array($qry); if ($row[0]=="") { $angka=0; } else { $angka = substr($row[0], strlen($inisial)); }
$angka++; $angka =strval($angka); $tmp =""; for($i=1; $i<=($panjang-strlen($inisial)-strlen($angka)); $i++) { $tmp=$tmp."0"; } return $inisial.$tmp.$angka; }
? )
cara pakai:
input name="no_reg" type="text" value="( ?=kdauto(daftar,B)? )" size="20" maxlength="15" readonly/
( ? ganti dg <?