You are on page 1of 44

Keanehan Penggunaan Function date() di PHP dan Solusinya

Nah.. suatu ketika, saya iseng-iseng membuat script sederhana untuk menampilkan tanggal, bulan dan tahun saat ini, plus ada jam, menit dan detiknya. Adapun script nya sbb:
<?php echo date("d-m-Y H:i:s"); ?>

Keterangan: d : tanggal m : bulan Y : tahun (4 digit) H : jam i : menit s : detik Harapan saya ketika script tersebut ditampilkan di browser akan muncul tanggal, bulan, tahun, jam, menit dan detik yang benar sesuai waktu di sistem saat itu. Dan ternyata apa yang terjadi. perhatikan screen shot di bawah ini.

Dalam screen shot tersebut saya ingin bandingkan antara waktu yang tampil di browser dari script dengan waktu yang ada di sistem. Untuk tanggal, bulan dan tahun kebetulan sama. Namun untuk jam nya ternyata berbeda. Nah.. lho ?? wah ternyata function date() di PHP tidak sesuai dengan waktu yang ada di sistem. Dalam kasus saya ini, selisih waktu antara di sistem dengan

apa yang tampil di browser tersebut adalah 1 jam. Untuk menit sama, dan untuk detiknya berbeda sekitar 2 detik. Perbedaan detik ini terjadi karena waktu yang saya butuhkan untuk mengambil gambar nya (nge-screen shot) adalah sekitar 2 detik, jadi ada jeda waktu antara waktu di sistem dengan yang tampil di browser. Apakah Anda juga mengalami hal yang sama?? Saya tidak tahu persis mengapa hal itu bisa terjadi. Mungkin PHP menggunakan settingan Time Zone yang berbeda dengan yang ada di PC, CMIIW. Trus solusinya bagaimana dong? OK solusinya adalah dengan menambahkan Time Zone sendiri sesuai di daerah Anda. Kebetulan di Indonesia sudah ada Time Zone nya sendiri yaitu menggunakan Asia/Jakarta. OK sekarang bagaimana cara mengatur Time Zone nya? caranya adalah dengan menambahkan perintah
date_default_timezone_set("Asia/Jakarta");

pada script di atas, sehingga scriptnya menjadi


<?php date_default_timezone_set("Asia/Jakarta"); echo date("d-m-Y H:i:s"); ?>

Setelah ditambahkan perintah pengaturan Time Zone untuk Jakarta tersebut, alhamdulillah waktunya bisa tepat.

Membuat Script PHP Untuk Report atau Rekap Data (2)


December 12th, 2009 | by rosihanari | Cetak Artikel Ini

Ingin beriklan di atas?

Beberapa waktu yang lalu saya pernah nulis artikel tentang cara buat script untuk rekap data untuk kasus yang agak simple. Nah kali ini saya akan mencoba menulis kembali untuk masalah yang sama, namun dengan kasus yang agak sedikit kompleks. Perhatikan studi kasus berikut ini, misalkan kita punya data karyawan yang tersimpan dalam 3 buah tabel yaitu karyawan, golongan dan bidang sebagaimana tampak pada gambar berikut ini

Tabel: Bidang

Tabel: Golongan

Tabel: Karyawan

Yang jadi permasalahan adalah, bagaimana cara kita membuat script PHP untuk menghasilkan output seperti di bawah ini?

OK sebelum kita mulai membuat scriptnya, terlebih dahulu kita harus punya ide pembuatannya dulu. Apabila kita perhatikan bahwa setiap baris data pada tabel output menunjukkan informasi mengenai jumlah total pegawai, jumlah pegawai pada masing-masing golongan untuk setiap bidangnya. Maka nanti idenya adalah, kita baca semua bidang yang ada dahulu, kemudian untuk setiap bidangnya kita cari jumlah data masing-masing item nya (total pegawai dan jumlah karyawan berdasarkan golongan). Sambil mencari jumlah masing-masing item untuk setiap bidang, jangan lupa kita jumlahkan jumlah masing-masing itemnya untuk mencari total item di akhir tabel.

Berdasarkan ide tersebut, kita buat script PHP sbb:


<?php /* perintah koneksi ke db ditulis di sini */ // membuat awal dan header tabel echo "<table>"; echo "<tr><th>No</th><th>Bidang</th><th>Jum Karyawan</th><th>Gol. Satu</th><th>Gol. Dua</th><th>Gol. Tiga</th></tr>"; // nilai awal untuk nomor urut data $no = 1; // nilai awal jumlah total karyawan $totalKaryawan = 0; // nilai awal jumlah karyawan gol 1 $totalGol1 = 0; // nilai awal jumlah karyawan gol 2 $totalGol2 = 0; // nilai awal jumlah karyawan gol 3 $totalGol3 = 0; // membaca semua data bidang $query = "SELECT * FROM bidang"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { // baca kode bidang $kodeBidang = $data['kd_bidang']; // baca nama bidang $namaBidang = $data['nama_bidang']; // cari jumlah karyawan untuk setiap kode bidang $query2 = "SELECT count(*) as jum FROM karyawan WHERE kd_bidang = '$kodeBidang'"; $hasil2 = mysql_query($query2); $data2 = mysql_fetch_array($hasil2); $jumlah = $data2['jum']; // menjumlahkan setiap jumlah karyawan setiap bidang // untuk menghitung total seluruh karyawan $totalKaryawan += $jumlah; // cari jumlah karyawan untuk setiap kode bidang bergolongan 1 $query2 = "SELECT count(*) as jum1 FROM karyawan WHERE kd_bidang = '$kodeBidang' AND kd_gol = 1"; $hasil2 = mysql_query($query2); $data2 = mysql_fetch_array($hasil2); $jumGol1 = $data2['jum1'];

// menjumlahkan setiap jumlah karyawan gol 1 di setiap bidang // untuk menghitung total seluruh karyawan bergolongan 1 $totalGol1 += $jumGol1; // cari jumlah karyawan untuk setiap kode bidang bergolongan 2 $query2 = "SELECT count(*) as jum2 FROM karyawan WHERE kd_bidang = '$kodeBidang' AND kd_gol = 2"; $hasil2 = mysql_query($query2); $data2 = mysql_fetch_array($hasil2); $jumGol2 = $data2['jum2']; // menjumlahkan setiap jumlah karyawan gol 2 di setiap bidang // untuk menghitung total seluruh karyawan bergolongan 2 $totalGol2 += $jumGol2; // cari jumlah karyawan untuk setiap kode bidang bergolongan 3 $query2 = "SELECT count(*) as jum3 FROM karyawan WHERE kd_bidang = '$kodeBidang' AND kd_gol = 3"; $hasil2 = mysql_query($query2); $data2 = mysql_fetch_array($hasil2); $jumGol3 = $data2['jum3']; // menjumlahkan setiap jumlah karyawan gol 3 di setiap bidang // untuk menghitung total seluruh karyawan bergolongan 3 $totalGol3 += $jumGol3; // tampilkan baris datanya untuk setiap bidang echo "<tr><td>".$no."</td><td>".$namaBidang."</td><td>".$jumlah."</td><td>".$jumGo l1."</td><td>".$jumGol2."</td><td>".$jumGol3."</td></tr>"; // increment untuk nomor urut data $no++; } // membuat baris untuk total data echo "<tr><td colspan='2'>Jumlah</td><td>".$totalKaryawan."</td><td>".$totalGol1."</td><td> ".$totalGol2."</td><td>".$totalGol3."</td></tr>"; // membuat akhir dari tabel echo "</table>"; ?>

What do u think? ternyata tidak sulit bukan membuat report atau rekap data dengan PHP. Selamat mencoba ya. Oya, script di atas, belum saya coba jalankan sendiri di browser melainkan menulis kodenya langsung di WordPress, so.. kalo ada error mohon maklum. Tolong koreksi script di atas ya, siapa tahu ada error atau bug nya

Input Data Ke MySQL Secara Simultan Via Form dengan PHP

September 14th, 2009 | by rosihanari |

Cetak Artikel Ini

Ingin beriklan di atas?

Seringkali kita membuat script untuk input data hanya terdiri dari sebuah data atau record saja. Itu sangat-sangat mudah dilakukan. Lantas, bagaimana bila sekali entri langsung beberapa record sekaligus secara simultan? Dengan demikian kita bisa entri beberapa data sekaligus tanpa repot bolak-balik membuka form baru ketika mau menyisipkan data. Kira-kira hal ini bisa dilakukan nggak ya? He.. 3x Ya jelas bisa donk! Oleh karena itu akan saya paparkan bagaimana ide membuat script seperti itu dengan PHP melalui artikel ini. Sebelum kita mulai membahas cara pembuatannya, ada baiknya Anda simak gambar berikut ini yang merupakan grand design studi kasus yang akan kita buat sebagai contoh input data simultan ini. Studi kasus yang saya ambil terkait dengan entri data mahasiswa. Pertama, user diminta memasukkan jumlah data yang mau dientri terlebih dahulu (lihat gambar di bawah ini)

Kedua, setelah user memasukkan jumlah data yang mau dientri, selanjutnya muncul form dengan komponen entri sejumlah data yang tadi dimasukkan. Pada form inilah data yang mau disimpan ke database, dimasukkan.

Setelah form di atas disubmit, maka data akan tersimpan ke database, seperti tampak pada gambar berikut ini

Nah bagaimana cara membuatnya? Pertama kita siapkan dahulu tabel database MySQL nya. Pada studi kasus ini, kita buat simpel saja deh (cukup 2 field saja dulu)
CREATE TABLE mhs ( nim varchar(5), namamhs varchar(20), PRIMARY KEY (nim) );

Kemudian kita buat form untuk memasukkan jumlah datanya terlebih dahulu. form.html
<h1>Input Data Mahasiswa</h1> <form method="post" action="submit.php"> Jumlah Data <input type="text" name="jum"> <input type="submit" name="submit" value="Submit"> </form>

Saya kira untuk membuat form di atas tidak ada masalah kan?

Berikutnya kita buat script untuk menampilkan komponen inputnya sejumlah data yang tadi dimasukkan pada form di atas. Konsepnya adalah kita gunakan looping untuk menampilkan komponen inputnya. Lantas loopingnya dilakukan berapa kali? ya sebanyak jumlah datanya donk. submit.php
<h1>Input Data Mahasiswa</h1> <form method="post" action="insert.php"> <table border="1"> <tr><td>NIM</td><td>NAMA MHS</td></tr> <?php $n = $_POST['jum']; // membaca jumlah data for ($i=1; $i<=$n; $i++) { echo "<tr><td><input type='text' name='nim".$i."'></td><td><input type='text' name='nama".$i."'></td></tr>"; } ?> </table> <br> <input type="hidden" name="jum" value="<?php echo $n; ?>"> <input type="submit" name="submit" value="Submit"> </form>

Bila Anda perhatikan script di atas, maka nama komponen untuk input NIM berbentuk
<input type='text' name='nim".$i."'>

yang mana nantinya looping ($i=1, 2, 3, , $n) akan membentuk komponen-komponen dengan nama
<input type='text' name='nim1'> <input type='text' name='nim2'> <input type='text' name='nim3'> . . dst

Nah hal yang sama kita buat juga untuk komponen input nama mahasiswa. Kemudian, coba perhatikan pula bahwa di bagian akhir script terdapat perintah
<input type="hidden" name="jum" value="<?php echo $n; ?>">

Perintah tersebut akan menghasilkan komponen hidden untuk menyimpan nilai $n (banyaknya data). Nilai ini nanti akan ikut disubmit ke script berikutnya guna pemrosesan lebih lanjut.

Terakhir.. kita buat script untuk insert datanya. Untuk membuat script insert data secara simultan ini, mungkin yang menjadi kendala adalah bagaimana cara membaca semua data yang telah diinputkan dalam form sebelumnya untuk kemudian disimpan ke dalam database. Adapun konsep pembacaan datanya adalah dengan menggunakan looping juga. Looping ini dilakukan sebanyak jumlah datanya ($n). Oleh karena itulah pada script ini kita butuh nilai $n yang ikut tersubmit dari script sebelumnya. insert.php
<?php // koneksi ke mysql mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); $n = $_POST['jum']; // membaca jumlah data // looping for ($i=1; $i<=$n; $i++) { $datanim = $_POST['nim'.$i]; $datanama = $_POST['nama'.$i]; if ((!empty($datanim)) && (!empty($datanama))) { $query = "INSERT INTO mhs (nim, namamhs) VALUES ('$datanim', '$datanama')"; $hasil = mysql_query($query); if ($hasil) echo "Input data sukses<br>"; else echo "Input data gagal<br>"; } } ?>

Perhatikan perintah $datanim = $_POST['nim'.$i]; yang terdapat dalam looping di atas. Perintah tersebut digunakan untuk membaca value yang diinputkan dari komponen form bernama nim1, nim2, dst. Hal yang sama juga berlaku untuk perintah $datanama = $_POST['nama'.$i];. Setelah value NIM dan Nama Mhs dari komponen pertama (nim1 dan nama1) dibaca, selanjutnya baru disimpan ke database. Kemudian pembacaan dan insert data ke database dilanjutkan pada komponen kedua (nim2 dan nama2), begitu seterusnya sampai dengan komponen terakhir. Oya.. tambahan lagi, dalam script di atas juga terdapat statement
if ((!empty($datanim)) && (!empty($datanama))) { ... }

Statement tersebut digunakan untuk mengecek jika ada baris komponen form yang tidak diisi NIM maupun nama mahasiswanya. Proses insert data ke database hanya akan dilakukan bila komponen input NIM dan nama mahasiswanya tidak kosong.

Script PHP Updating Data Secara Simultan (Studi Kasus Update Nilai Kuliah Mahasiswa)
May 18th, 2009 | by rosihanari | Cetak Artikel Ini

Ingin beriklan di atas?

Setelah beberapa waktu yang lalu saya memposting artikel tentang cara hapus data secara simultan dengan teknik multi selection dan insert data secara simultan menggunakan komponen checkbox, kali ini saya akan coba memposting artikel bagaimana proses update data secara simultan. Ada seorang member saya, mas Christ, menanyakan sebuah kasus. Dalam kasusnya diceritakan bahwa ia ingin membuat aplikasi untuk keperluan update nilai siswa. Namun dia tidak ingin proses update nilainya satu-persatu, namun bisa secara simultan sekaligus. Proses ini terjadi ketika dalam proses entri nilai mata pelajaran. Perlu diketahui bahwa ketika siswa mengambil pelajaran, terlebih dahulu data siswa dan mata pelajaran yang diikutinya disimpan ke dalam database, namun belum ada nilainya (nilainya 0). Begitu nilai sudah ada dan ingin diinputkan, maka proses updatelah yang terjadi. Nah saudara Christ ini menghendaki proses updatenya bisa dilakukan sekaligus secara simultan dan tidak satu-satu. Kalau satu-satu jadi repot, apalagi kalau jumlah siswanya banyak. So dalam artikel ini akan dibahas teknik atau ide untuk membuat aplikasi seperti yang dimaksud oleh member saya tersebut, namun dengan sedikit modifikasi dalam kasusnya. Kali ini saya ambil kasus proses update nilai kuliah mahasiswa. Ya supaya lebih mudah saja saya memahaminya, karena saya orang kampus kalee Nggak kok just kidding, saya pilih kasus ini karena dalam komputer saya sudah ada tabel dan data terkait dengan hal ini. Jadi gak perlu repot-repot bikin tabel dan data baru. Tapi yang jelas konsepnya sama seperti yang diinginkan mas Christ kok. Untuk keperluan pembahasannya dalam studi kasus ini, kita siapkan terlebih dahulu tabel dan datanya

CREATE TABLE mhs ( nim varchar(10), namamhs varchar(30), alamat text, sex varchar(10), PRIMARY KEY(nim) ); CREATE TABLE mk ( kodemk varchar(5), namamk varchar(20), sks int(11), smt int(11), PRIMARY KEY(kodemk) ); CREATE TABLE ambilmk ( nim varchar(10), kodemk varchar(5), nilai float, PRIMARY KEY(nim,kodemk) ); INSERT INTO mhs VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L'); INSERT INTO mhs VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P'); INSERT INTO mhs VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L'); INSERT INTO mhs VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P'); INSERT INTO mhs VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L'); INSERT INTO mk VALUES ('K001', 'KALKULUS II', 3, 4); INSERT INTO mk VALUES ('K004', 'NUMERIK', 3, 4); INSERT INTO ambilmk VALUES ('M0197001', 'K001', 0); INSERT INTO ambilmk VALUES ('M0197002', 'K001', 0); INSERT INTO ambilmk VALUES ('M0197003', 'K001', 0); INSERT INTO ambilmk VALUES ('M0197004', 'K001', 0); INSERT INTO ambilmk VALUES ('M0197005', 'K004', 0);

Perhatikan pada sampel tabel dan data di atas bahwa, misalkan hanya terdapat 2 matakuliah yang ada (Kalkulus II dan Numerik). Sedangkan mahasiswa yang mengambil Kalkulus II ada 4 orang yaitu yang bernim M0197001, M0197002, M0197003, dan M0197004. Tampak pula bahwa nilai matakuliah tersebut untuk keempat mahasiswa adalah masih 0 (belum diinputkan nilainya). Selanjutnya kita coba desain skenario untuk proses update nilai secara simultan ini. Skenario pertama adalah memilih nama matakuliah yang akan kita update nilainya (lihat gambar di bawah ini)

Setelah dipilih nama matakuliah, akan muncul daftar form nilai untuk semua mahasiswa yang mengambil matakuliah tersebut. Nah.. di form inilah kita kan lakukan proses entri nilai atau edit nilai untuk mahasiswanya.

Contoh tampilan di atas menggambarkan proses update nilai mahasiswa yang mengambil Kalkulus II OK.. skenario sudah, berikutnya kita mulai buat aplikasinya. Pertama kita buat form untuk memilih nama matakuliahnya terlebih dahulu. formnilai.php
<?php // koneksi ke mysql mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); ?> <form method="post" action="submit.php"> Pilih Mata Kuliah : <select name="mk"> <?php // query untuk menampilkan semua matakuliah dari tabel 'mk' $query = "SELECT * FROM mk"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { echo "<option value='".$data['kodemk']."'>".$data['namamk']."</option>"; } ?>

<input type="submit" value="Submit" name="submit" /> </select> </form>

Keterangan: Nilai yang disubmit oleh form di atas menuju submit.php adalah kode matakuliahnya. Selanjutnya kita buat script submit.php. Script ini nanti akan memunculkan form update nilai untuk semua mahasiswa yang mengambil matakuliah yang dipilih dari formnilai.php submit.php
<h1>Update Nilai</h1> <form method="post" action="update.php"> <table border="1"> <tr><td>No</td><td>NIM</td><td>Nilai</td></tr> <?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // membaca kode matakuliah yang disubmit dari formnilai.php $kodeMK = $_POST['mk']; // menampilkan data nim dan nilai mahasiswa yang mengambil matakuliah berdasarkan kode MK $query = "SELECT nim, nilai FROM ambilmk WHERE kodemk = '$kodeMK'"; $hasil = mysql_query($query); // inisialisasi counter $i = 1; while ($data = mysql_fetch_array($hasil)) { echo "<tr><td>".$i."</td><td>".$data['nim']."</td><td><input type='hidden' name='mhs".$i."' value='".$data['nim']."' /> <input type='text' name='nilai".$i."' value='".$data['nilai']."' /></td></tr>"; $i++; } $jumMhs = $i-1; ?> </table><br /> <input type="hidden" name="n" value="<?php echo $jumMhs ?>" /> <input type="submit" value="Update" name="submit" /> </form>

Keterangan: Perintah <input type=hidden name=mhs.$i. value=.$data['nim']. /> digunakan untuk membuat komponen hidden yang berisi nim mahasiswa yang mengambil matakuliah tersebut.

NIM ini nantinya akan ikut disubmit ketika proses updating nilai. Mengapa NIM perlu disubmit ketika proses updating nilai? ya karena NIM akan diperlukan dalam query SQL update nilai yang berbentuk
UPDATE ambilmk SET nilai = ... WHERE nim = ...

Query SQL di atas nanti akan diletakkan dalam script update.php Dalam script di atas terdapat pula perintah <input type=hidden name=n value=<?php echo $jumMhs ?> />. Nilai n ini nanti akan ikut disubmit untuk proses looping dalam membaca semua nilai dan NIM yang berasal dari form sekaligus menjalankan query SQL update data. Proses pembacaan dan menjalankan query update data ini dilakukan sebanyak n kali (sebanyak jumlah mahasiswa yang mengambil). Terakhir kita buat script update.php nya update.php
<?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // membaca jumlah mahasiswa (n) dari submit.php $jumMhs = $_POST['n']; // proses looping untuk membaca nilai dan nim mahasiswa dari form, serta menjalankan query update for ($i=1; $i<=$n; $i++) { // membaca nim mahasiswa ke-i, i = 1, 2, 3, ..., n $nimMhs = $_POST['mhs'.$i]; // membaca nilai mahasiswa ke-i, i = 1, 2, 3, ..., n $nilai = $_POST['nilai'.$i]; // update nilai mahasiswa ke-i, i = 1, 2, 3, ..., n $query = "UPDATE ambilmk SET nilai = $nilai WHERE nim = '$nimMhs'"; mysql_query($query); } echo "<h2>Update nilai sukses</h2>"; ?>

Nah mudah dan simpel bukan membuatnya? Dalam kasus yang nyata, tentu struktur tabel dan datanya tidak sesimpel yang saya bahas di atas namun kemungkinan jauh lebih kompleks. Di sini saya hanya memberikan ide dan konsep dasarnya saja untuk proses update data secara simultan. Untuk selanjutnya silakan Anda kembangkan sendiri sesuai kasus yang Anda hadapi masing-masing. OK?

Teknik Proses Edit Data Dengan Berbagai Komponen Form


August 5th, 2009 | by rosihanari | Cetak Artikel Ini

Ingin beriklan di atas?

Seringkali saya ditanyai oleh rekan-rekan mahasiswa maupun pengunjung setia blog ini tentang bagaimana cara edit data dengan komponen combobox, checkbox, radiobutton dll. Daripada saya menjawabnya satu-persatu, mending saya jadiin satu saja jawabannya melalui artikel ini Untuk menjawab pertanyaan di atas, di sini saya akan mengimplementasikannya ke dalam sebuah studi kasus yaitu terkait dengan data personal seseorang. OK.. andaikan kita ingin membuat script untuk pendataan personal seseorang yang terdiri dari: nama, alamat, pekerjaan, jenis kelamin, dan status pernikahan. Dari kebutuhan tersebut, maka kita buat dulu struktur tabel di MySQL sebagai berikut
CREATE TABLE pendataan ( id int(20) AUTO_INCREMENT, nama varchar(30), alamat text, pekerjaan varchar(30), sex varchar(1), statusNikah int(11), PRIMARY KEY(id) );

Sebelum kita lanjutkan membuat scriptnya, kita bahas dulu fungsi masing-masing field. Field id digunakan untuk menyimpan nomor ID unik setiap orang yang didata. Nomor ini digenerate secara autoincrement. Field nama, alamat saya kira sudah jelas. Untuk field pekerjaan ini nanti akan diisi melalui pilihan dari sebuah combo box yang menampilkan beberapa jenis pekerjaan. Oya untuk nama nantinya menggunakan textfield atau textbox, sedangkan alamat menggunakan textarea. Field sex atau jenis kelamin nantinya diisi melalui komponen radiobutton. Nilai field ini berupa L (laki-laki) atau P (perempuan). Terakhir field statusNikah ini nanti juga akan diisi dengan angka 0 atau 1 (0 = blm menikah, 1 = sudah menikah). Status menikah ini nanti akan diisi melalui sebuah komponen checkbox. Nah.. andaikan kita memiliki form input seperti di bawah ini: form.html

<h1>Baca input dari form</h1> <form method="post" action="insert.php"> <table> <tr><td>Nama Anda</td><td>:</td><td><input type="text" name="nama"></td></tr> <tr><td>Alamat</td><td>:</td><td><textarea name="alamat" rows="10" cols="20"></textarea></td></tr> <tr><td>Jenis Kelamin</td><td>:</td><td><input type="radio" name="sex" value="L">Laki-laki <input type="radio" name="sex" value="P">Perempuan </td></tr> <tr> <td>Pilih Pekerjaan</td> <td>:</td> <td> <select name="pekerjaan"> <option value="Petani">Petani</option> <option value="Guru">Guru</option> <option value="Dokter">Dokter</option> <option value="Lain-lain">Lain-lain</option> </select> </td> </tr> <tr><td>Status Menikah</td><td>:</td><td><input type="checkbox" name="statusNikah" value="1"> Ya</td></tr> </table> <input type="submit" name="submit" value="Submit"><input type="reset" name="reset" value="Hapus"> </form>

Untuk membuat script insertnya ke mysql bisa Anda buat sendiri bukan? Nah selanjutnya bagaimana dengan script editnya? Pada prinsipnya script edit berisi form, namun bukan blank form namun sudah terisi dengan data yang telah diinputkan. Biasanya form untuk edit ini sama dengan form ketika input data. Permasalahan utama dalam proses edit adalah cara menampilkan data menggunakan komponenkomponen input pada form. Sebagai contoh misalkan bila ada data dimana jenis kelaminnya lakilaki, maka ketika proses edit via form menunjukkan radiobutton jenis kelaminnya nya telah dipilih laki-laki, begitu pula untuk jenis pekerjaan pada komponen combo boxnya. Bagaimana cara membuat hal yang demikian? Konsepnya adalah dengan menggunakan IF. Sebagai contoh untuk jenis kelamin. Dalam script edit nantinya akan dicek dulu apakah nilai jenis kelamin yang telah tersimpan laki-laki (L) atau perempuan (P). Jika nilainya L maka radiobutton untuk laki-laki akan diberi label checked yang artinya terpilih. Sedangkan jika P maka label checked akan diberikan pada radiobutton perempuan. Hal yang sama juga berlaku untuk komponen yang lain. Berikut ini script untuk form editnya, yang sama dengan form insertnya. edit.php

<h1>Edit Data</h1> <?php // koneksi ke mysql mysql_connect("localhost", "root", "rahasiappob"); mysql_select_db("data"); // membaca data id data yang akan diedit (bisa juga menggunakan POST) $id = $_GET['id']; // membaca data dalam database sesuai id datanya $query = "SELECT * FROM pendataan WHERE id = $id"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); ?> <form method="post" action="update.php"> <table> <tr><td>Nama Anda</td><td>:</td><td><input type="text" name="nama" value="<?php echo $data['nama'];?>"></td></tr> <tr><td>Alamat</td><td>:</td><td><textarea name="alamat" rows="10" cols="20"><?php echo $data['alamat'];?></textarea></td></tr> <tr><td>Jenis Kelamin</td><td>:</td><td> <?php // proses pengecekan jenis kelamin // jika jenis kelamin dalam databasenya 'L', maka label 'checked' diberikan pada radiobutton yang laki-laki // demikian pula jika 'P' (perempuan) if ($data['sex'] == "L") echo "<input type='radio' name='sex' value='L' checked>Laki-laki <input type='radio' name='sex' value='P'>Perempuan"; else if ($data['sex'] == "P") echo "<input type='radio' name='sex' value='L'>Laki-laki <input type='radio' name='sex' value='P' checked>Perempuan"; ?> </td></tr> <tr> <td>Pilih Pekerjaan</td> <td>:</td> <td> <select name="pekerjaan"> <?php // proses menampilkan pilihan jenis pekerjaan. // jika pekerjaan = petani, maka pada option 'petani' diberi label 'selected', demikian seterusnya if ($data['pekerjaan'] == "Petani") echo "<option value='Petani' selected>Petani</option>"; else echo "<option value='Petani'>Petani</option>";

if ($data['pekerjaan'] == "Guru") echo "<option value='Guru' selected>Guru</option>"; else echo "<option value='Guru'>Guru</option>"; if ($data['pekerjaan'] == "Dokter") echo "<option value='Dokter' selected>Dokter</option>"; else echo "<option value='Dokter'>Dokter</option>"; if ($data['pekerjaan'] == "Lain-lain") echo "<option value='Lainlain' selected>Lain-lain</option>"; else echo "<option value='Petani'>Lain-lain</option>"; ?> </select> </td> </tr> <tr><td>Status Menikah</td><td>:</td><td> <?php // proses untuk menampilkan pilihan status nikah // jika status nikahnya sudah menikah (bernilai 1), maka label 'checked' diberikan ke checkbox nya // sedangkan jika tidak, maka label 'checked' tidak dituliskan if ($data['statusNikah'] == 1) echo "<input type='checkbox' name='statusNikah' value='1' checked> Ya"; else echo "<input type='checkbox' name='statusNikah' value='1'> Ya"; ?> </td> </tr> </table> <input type="hidden" name="id" value="<?php echo $data['id']; ?>"> <input type="submit" name="submit" value="Submit"><input type="reset" name="reset" value="Hapus"> </form>

Oya.. jangan lupa untuk menambahkan komponen hidden input untuk menyimpan ID datanya. ID ini nanti akan digunakan untuk proses updatenya. Dalam script di atas, hidden inputnya diletakkan sebelum tombol submit. Mudah bukan? sekali lagi konsepnya adalah dengan menggunakan IF saja, bukan yang lain. Script di atas sengaja tidak saya berikan secara lengkap untuk proses insert dan updatenya, supaya Anda bisa melengkapinya sendiri. Anda hanya melengkapi script untuk insert dan updatenya saja, serta interface sebelum proses edit via form di atas. Untuk interface sebelum proses edit, tekniknya Anda bisa menampilkan semua data dalam bentuk list tabel, lalu diberikan link edit ke script edit.php di atas berdasarkan parameter ID datanya (menggunakan GET Method) seperti yang ditunjukkan pada video dalam artikel saya yang lain. Cara lain proses editnya melalui proses pencarian terlebih dahulu, misalkan sebelum mengedit data, user diminta memasukkan ID data yang mau diedit, lalu setelah disubmit muncul form edit.php di atas (menggunakan POST method).

Membuat Pilihan Combobox Dinamis Tanpa AJAX


May 13th, 2009 | by rosihanari | Cetak Artikel Ini

Ingin beriklan di atas?

Ada salah seorang rekan (mas Arif Budiman) yang sekaligus menjadi member saya menanyakan Bisakah membuat pilihan combobox dinamis tanpa menggunakan AJAX?. Beliau menggambarkan kasusnya sebagai berikut: Misalkan terdapat dua buah combobox. Combobox pertama berisi pilihan tentang spesialisasi dokter, serta combobox kedua berisi pilihan dokter yang sesuai pada spesialisasi dalam combobox pertama. Sebagai contoh misalkan pada combobox pertama dipilih spesialisasi penyakit dalam, maka secara otomatis dan langsung pada combobox dua menampilkan daftar pilihan dokter yang spesialisasinya penyakit dalam. Adapun data yang ditampilkan pada kedua combobox disimpan dalam database MySQL sehingga tidak bersifat statis. Memang solusi yang bisa dipilih untuk menyelesaikan kasus di atas adalah dengan AJAX (Asynchronous Javascript and XML). Namun bagi yang belum paham tentang AJAX, jangan khawatir.. ada kok solusi lainnya yaitu dengan menggunakan gabungan Javascript DOM dan PHP. Mau tahu caranya? Nah simak lebih lanjut artikel ini OK bagaimana sih konsep penggunaan gabungan antara Javascript DOM dan PHP untuk menyelesaikan kasus di atas? Ya.. konsepnya adalah kita akan mengenerate Javascript DOM dengan PHP. Javascript itu nanti yang akan digunakan untuk memberikan efek dinamisnya. Mungkin ada yang bertanya, ngapain harus pakai PHP? apa dengan Javascript DOM saja tidak cukup? Mmm jawabannya saya belum tahu karena saya belum pernah menjumpai cara koneksi dari Javascript ke MySQL. Kemungkinan bisa dengan menggunakan ODBC, namun saya belum pernah mencobanya. Mengingat Javascript adalah client side (artinya terletak di sisi client) dan MySQL adalah server side (terletak di sisi server), maka kita butuh server side scripting yang bisa mengenerate Javascript sekaligus bisa koneksi ke MySQL di server, dalam hal ini kita menggunakan PHP.

Nah.. kembali ke masalah di atas, pada artikel ini akan dibahas contoh aplikasinya namun dengan kasus yang diambil tidak sesuai dengan kasus yang dicontohkan mas Arif Budiman di atas. Adapun kasus yang saya ambil di sini adalah terkait pemilihan Nama Propinsi dan Nama Kabupaten. Skenario dari aplikasi ini adalah, setelah user memilih salah satu nama propinsi dari combo box pertama, maka secara otomatis pada combo box kedua memunculkan daftar pilihan nama-nama kabupaten yang terdapat pada propinsi terpilih. Sesuai kasus pertama yang disampaikan mas Arif di atas, yaitu data pilihan dalam combo box disimpan dalam MySQL, maka terlebih dahulu kita siapkan tabel dan sampel datanya untuk kasus ini.
CREATE TABLE propinsi ( idProp int(11), namaPropinsi varchar(50), PRIMARY KEY (idProp) ) CREATE TABLE kab ( idKab int(11), namaKabupaten varchar(50), idProp int(11), PRIMARY KEY (idKab) ) INSERT INTO propinsi VALUES (1, 'Jawa Tengah'); INSERT INTO propinsi VALUES (2, 'Jawa Barat'); INSERT INTO propinsi VALUES (3, 'Jawa Timur'); INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO kab kab kab kab kab kab kab VALUES VALUES VALUES VALUES VALUES VALUES VALUES (1, (2, (3, (4, (5, (6, (7, 'Kab. 'Kab. 'Kab. 'Kab. 'Kab. 'Kab. 'Kab. A', B', C', D', E', F', G', 1); 1); 1); 2); 2); 2); 3);

Dari sampel data di atas tampak bahwa untuk propinsi Jawa Tengah terdapat 3 kabupaten yang bisa dipilih yaitu A, B dan C. Jawa Barat terdapat 2 kabupaten yaitu D dan E, sedangkan Jawa Timur terdapat kabupaten F dan G. OK.. langkah berikutnya kita terlebih dahulu siapkan halaman untuk membuat combobox pertama. demo.php
<?php // koneksi mysql mysql_connect('dbhost', 'dbuser', 'dbpass'); mysql_select_db('dbname'); ?>

<html> <head> </head> <body> <h1>Demo</h1> <form name="demo" method="post" action="submit.php"> <table> <tr><td>Pilih Propinsi</td><td>:</td> <td> <select name="prop" onchange="showKab()"> <option>Silakan Pilih</option> <option>------------------------</option> <?php // query untuk menampilkan propinsi $query = "SELECT * FROM propinsi"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { echo "<option value='".$data['idProp']."'>".$data['namaPropinsi']."</option>"; } ?> </select> </td> </tr> </table> </form> </body> </html>

Dari script di atas ada beberapa catatan yang perlu kita perhatikan adalah: untuk form kita berikan nama demo (name=demo), kemudian pada combobox propinsi tersebut kita kasih event onchange. Maksudnya adalah ketika proses selection pada combobox tersebut dilakukan maka akan muncul suatu efek tertentu. Nah event onchange ini nanti akan memanggil function dalam Javascript bernama showKab(). Selanjutnya, kita buat juga combobox kedua untuk memilih kabupatennya. Combobox ini kita letakkan dalam form yang sama dengan combobox kedua. Namun.. untuk combobox kedua ini, kita kasih NULL option atau sementara tidak ada daftar option pilihannya karena option tersebut nantinya akan digenerate secara dinamis. demo.php
<?php // koneksi mysql mysql_connect('dbhost', 'dbuser', 'dbpass'); mysql_select_db('dbname'); ?> <html> <head> </head> <body>

<h1>Demo</h1> <form name="demo" method="post" action="submit.php"> <table> <tr><td>Pilih Propinsi</td><td>:</td> <td> <select name="propinsi" onchange="showKab()"> <option>Silakan Pilih</option> <option>------------------------</option> <?php // query untuk menampilkan propinsi $query = "SELECT * FROM propinsi"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { echo "<option value='".$data['idProp']."'>".$data['namaPropinsi']."</option>"; } ?> </select> </td> </tr> <tr><td>Pilih Kabupaten</td><td>:</td> <td> <select name="kab" id="kabupaten"> </select> </td> </tr> </table> </form> </body> </html>

Perlu dicatat pula bahwa untuk combobox kedua ini kita perlu beri nama id (id=kabupaten) karena akan digunakan sebagai referensi untuk Javascript DOM nya. Javascript DOM nantinya akan mengenerate daftar item option ke dalam komponen berdasarkan nama id ini. Nah selanjutnya kita akan berfokus ke dalam Javascript DOM nya. Anda sudah mengenal Javascript DOM (Document Object Model) bukan? Ya.. dalam kasus ini Javascript DOM akan digunakan untuk mengisi daftar option pada combox box kedua. Secara umum perintah dalam Javascript DOM untuk menyisipkan tag HTML ke dalam suatu komponen dalam halaman web adalah:
document.getElementById('nama id komponen').innerHTML = "...";

Sehingga dari kasus ini, karena komponen yang akan disisipkan tag HTMLnya adalah yang memiliki id=kabupaten maka perintah Javascript DOM nya adalah
document.getElementById('kabupaten').innerHTML = "...";

Keterangan: Tanda titik-titik tersebut nantinya akan diisi dengan tag HTML untuk membuat option comboboxnya.

Berikut ini contoh perintah Javascript DOM untuk menyisipkan option combobox ke dalam komponen id=kabupaten bila propinsi yang dipilih adalah Jawa tengah (idProp = 1)
<script language="JavaScript" type="text/JavaScript"> function showKab() { if (document.demo.propinsi.value == "1") { document.getElementById('kabupaten').innerHTML = "<option value='1'>Kab. A</option><option value='2'>Kab. B</option><option value='3'>Kab. C</option>"; } } </script>

Keterangan: Maksud dari if (document.demo.propinsi.value == "1") adalah bila yang dipilih dari combobox propinsi adalah 1 (Jawa Tengah) maka tampilkan option berisi kabupaten yang ada dalam propinsi Jawa Tengah. Maksud dari demo sendiri adalah nama form dimana di dalamnya terletak combobox propinsinya (<form name="demo" .../>), propinsi adalah nama komponen dari combobox propinsi (<select name="propinsi" ... />) Namun mengingat dalam database terdapat 3 propinsi, kita perlu mengenerate Javascript secara otomatis untuk ketiga propinsi tersebut. Berarti nanti diharapkan terdapat 3 buah IF untuk masing-masing pilihan propinsi. Lantas.. bagaimana cara mengeneratenya? ya kita gunakan PHP.
<script language="JavaScript" type="text/JavaScript"> function showKab() { <?php // membaca semua propinsi $query = "SELECT * FROM propinsi"; $hasil = mysql_query($query); // membuat if untuk masing-masing pilihan propinsi beserta isi option untuk combobox kedua while ($data = mysql_fetch_array($hasil)) { $idProp = $data['idProp']; // membuat IF untuk masing-masing propinsi echo "if (document.demo.propinsi.value == \"".$idProp."\")"; echo "{"; // membuat option kabupaten untuk masing-masing propinsi $query2 = "SELECT * FROM kab WHERE idProp = $idProp"; $hasil2 = mysql_query($query2);

$content = "document.getElementById('kabupaten').innerHTML = \""; while ($data2 = mysql_fetch_array($hasil2)) { $content .= "<option value='".$data2['idKab']."'>".$data2['namaKabupaten']."</option>"; } $content .= "\""; echo $content; echo "}\n"; } ?> } </script>

Hasil script di atas akan mengenerate Javascript sbb:


<script language="JavaScript" type="text/JavaScript"> function showKab() { if (document.demo.propinsi.value == "1"){document.getElementById('kabupaten').innerHTML = "<option value='1'>Kab. A</option><option value='2'>Kab. B</option><option value='3'>Kab. C</option>"} if (document.demo.propinsi.value == "2"){document.getElementById('kabupaten').innerHTML = "<option value='4'>Kab. D</option><option value='5'>Kab. E</option><option value='6'>Kab. F</option>"} if (document.demo.propinsi.value == "3"){document.getElementById('kabupaten').innerHTML = "<option value='7'>Kab. G</option>"} } </script>

Nah terakhir kita gabungkan script di atas dengan script sebelumnya menjadi satu kesatuan. demo.php
<?php // koneksi mysql mysql_connect('dbhost', 'dbuser', 'dbpass'); mysql_select_db('dbname'); ?> <html> <head> <script language="JavaScript" type="text/JavaScript"> function showKab() { <?php // membaca semua propinsi

$query = "SELECT * FROM propinsi"; $hasil = mysql_query($query); // membuat if untuk masing-masing pilihan propinsi beserta isi option untuk combobox kedua while ($data = mysql_fetch_array($hasil)) { $idProp = $data['idProp']; // membuat IF untuk masing-masing propinsi echo "if (document.demo.propinsi.value == \"".$idProp."\")"; echo "{"; // membuat option kabupaten untuk masing-masing propinsi $query2 = "SELECT * FROM kab WHERE idProp = $idProp"; $hasil2 = mysql_query($query2); $content = "document.getElementById('kabupaten').innerHTML = \""; while ($data2 = mysql_fetch_array($hasil2)) { $content .= "<option value='".$data2['idKab']."'>".$data2['namaKabupaten']."</option>"; } $content .= "\""; echo $content; echo "}\n"; } ?> } </script> </head> <body> <h1>Demo</h1> <form name="demo" method="post" action="submit.php"> <table> <tr><td>Pilih Propinsi</td><td>:</td> <td> <select name="propinsi" onchange="showKab()"> <option>Silakan Pilih</option> <option>------------------------</option> <?php // query untuk menampilkan propinsi $query = "SELECT * FROM propinsi"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { echo "<option value='".$data['idProp']."'>".$data['namaPropinsi']."</option>"; } ?> </select> </td> </tr> <tr><td>Pilih Kabupaten</td><td>:</td> <td> <select name="kab" id="kabupaten">

</select> </td> </tr> </table> </form> </body> </html>

Bila Anda coba teknik dan script di atas, maka akan tampil sebagaimana screen shot berikut ini

OK.. selamat mencoba ya demikian mas Arif Budiman artikelnya mudah-mudahan bermanfaat bagi Anda dan pengunjung setia blog ini semuanya.

Ide Membuat Generator Kode Unik Incremental Otomatis


April 10th, 2009 | by rosihanari | Cetak Artikel Ini

Ingin beriklan di atas?

Artikel kali ini akan saya coba bahas mengenai bagaimana ide membuat generator kode unik incremental secara otomatis. Wah apa tuh maksudnya? OK saya gambarkan hal tersebut melalui contoh berikut ini. Misalkan terdapat suatu sistem yang digunakan untuk pendaftaran anggota. Setiap anggota yang mendaftar nantinya akan diberikan kode unik, misalnya berbentuk A00001. Dalam keanggotaan tersebut terdapat 3 jenis anggota, yaitu Platinum, Gold dan Silver. Wah kok kayak keanggotaan apa

gitu ya? Its OK, itu hanya contoh. Untuk Platinum, kode anggotanya berawalan A dan dilanjutkan dengan nomor urutnya. Keanggotaan Gold kodenya berawalan B dan Silver C. Sehingga misalkan terdapat seseorang pendaftar pertama, dan kebetulan ia ikut yang Platinum, maka harusnya kode dia adalah A00001. Selanjutnya bila terdapat pendaftar kedua dan ia juga ikut Platinum, maka kode berikutnya adalah A00002. Bagaimana bila terdapat pendaftar yang ketiga namun ia ingin ikut yang Gold? Ya.. karena sebelumnya belum ada anggota yang Gold, maka pendaftar ketiga ini mendapat kode B00001. Begitu seterusnya Nah.. paham kan gambaran di atas? Selanjutnya pertanyaannya adalah bagaimana membuat kode unik incremental seperti di atas secara otomatis setiap kali ada pendaftar yang baru? Hal inilah yang akan dibahas pada artikel kali ini. Memang sih untuk kode unik ini kita bisa menggunakan fasilitas auto increment dalam database, namun auto increment yang hanya berupa bilangan bulat positif 1, 2, 3, .. dst ini menjadi tidak bermakna. Contoh kasus lain yang menggunakan konsep kode unik incremental ini adalah kode transaksi yang ada di supermarket. Setiap kali kita membayar di kasir, pasti kita mendapatkan struk yang terdapat kode transaksi. Kode transaksi ini unik. Contoh kode transaksi ini misalkan TR2801200900001, dimana TR menunjukkan transaksi pembelian, 28012009 menunjukkan tanggal transaksi yaitu pada tanggal 28/1/2009 dan 00001 menunjukkan transaksi pembelian pertama pada tanggal tersebut. Bila nanti terdapat transaksi kedua pada tanggal yang sama, maka kodenya menjadi TR2801200900002, dst. Adapun contoh yang lain yang menggunakan konsep di atas adalah ketika membuat KTP, dimana setiap orang akan diberikan nomor KTP unik. Selain itu juga dalam kasus membuat nomor SIM. OK.. akan saya paparkan bagaimana ide membuat kode unik incremental tersebut. Dalam hal ini akan saya ambil kasus mengenai pendaftaran anggota seperti halnya contoh pertama di atas. Nah.. bagaimana ide untuk membuat kode unik tersebut? Misalkan terdapat anggota baru yang mendaftar dengan jenis keanggotaan Platinum. Maka proses pertamanya adalah mencari kode anggota terbesar yang berawalan A**** dalam database. Dalam hal ini kita bisa menggunakan query SQL
SELECT max(field_kode) FROM TABLE WHERE field_kode LIKE 'A%'

Sebagai contoh misalkan terdapat kode anggota A00001, A00002, dan A00003, maka hasil query di atas adalah A00003. Trus setelah mendapatkan kode terbesarnya, selanjutnya adalah mengambil angka dalam kode. Angka dalam kode ini nanti akan ditambah satu. Misalkan kode terbesarnya adalah A00003, maka kita ambil substring bilangan 3 untuk nantinya ditambah satu menjadi 4. Untuk mengambil angka dalam kode ini kita bisa gunakan perintah substr() dalam PHP.

Setelah mengambil angka dalam kode dan ditambah satu, lalu hasilnya digabung kembali menjadi string kode. Untuk membentuk atau memformat string kode ini, kita bisa menggunakan sprintf() dalam PHP. OK sekarang kita coba membuat scriptnya. Kita pertama siapkan tabel untuk menyimpan data member
CREATE TABLE member ( id varchar(6), nama varchar(20), alamat text, PRIMARY KEY(id) );

Selanjutnya kita buat form untuk pendaftaran member baru. member.htm


<h1>New Member</h1> <form method="post" action="add.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>

Form di atas digunakan untuk memilih jenis keanggotaan untuk anggota baru yang akan ditambahkan. Setelah memilih jenis keanggotaan selanjutnya akan menuju form untuk memasukkan data anggota. Nah.. untuk form kedua ini, kode anggota tidak perlu diisi secara manual namun secara otomatis telah muncul. Data yang diisi hanyalah nama dan alamat anggota saja. add.php
<?php // koneksi ke mysql mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // 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' // setelah substring bilangan diambil lantas dicasting menjadi 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' // atau misal sprintf("%05s", 1); maka akan dihasilkan string '00001' $newID = $jenis . sprintf("%05s", $noUrut); // kode anggota yang baru di atas nanti akan ditampilkan dalam komponen text box ?> <h1>Tambah Member Baru</h1> <form method="post" action="submit.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>

Terakhir kita buat script untuk menyimpan data anggota ini submit.php
<?php mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); $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='new.php'>Tambah Member</a>"; ?>

Bagaimana mudah bukan membuatnya? Artikel ini sekaligus menjawab pertanyaan salah satu member saya (mas Ropi). Mau mendapatkan triks dan tips yang lain serta bagaimana cara menerapkan PHP di banyak studi kasus? Ikuti saja kursus bersama saya.

Tips Optimisasi Script PHP


Artikel ini berisi tentang beberapa tips terkait dengan bagaimana cara mengoptimisasi script PHP Anda supaya didapat kinerja yang baik dan cepat. Tips ini diramu dari beberapa sumber di internet: 1. Untuk menampilkan string, sebaiknya gunakan perintah echo daripada print. 2. Gunakan function unset() untuk menghapus variabel dari memori, khususnya array berukuran besar, bila tidak digunakan lagi pada proses berikutnya. 3. Mmm sebaiknya hindari penggunaan require_once(), karena function ini butuh load memori yang besar 4. Bila Anda ingin mengetahui kapan suatu script mulai dijalankan, sebaiknya gunakan $_SERVER['REQUEST_TIME'] daripada time(). 5. Untuk mengganti substring, penggunaan str_replace() lebih baik dari preg_replace(). But. function strtr() malah lebih cepat 4 kali lipat daripada str_replace(). 6. Untuk mencari posisi substring, function yang paling cepat prosesnya adalah strpos(), diikuti preg_match(), dan terakhir ereg(). 7. Lebih baik gunakan switch untuk menyatakan kondisional statement daripada multiple IF, atau IF ELSE 8. Tutup koneksi database Anda bila sudah tidak digunakan lagi 9. Untuk memfetch data dari database, sebaiknya gunakan $row['id'] daripada $row[id] karena penggunaan $row['id'] akan lebih cepat 7 kali lipat 10. Hindari penggunaan function dalam looping FOR, misalnya penggunaan function count() dalam for ($x=0; $x < count($array); $x++) 11. Penggunaan increment pada properti obyek, misal $this->$x++ menyebabkan proses 3 kali lebih lambat daripada increment pada variabel lokal $x++. 12. Script PHP akan diproses oleh Apache 2 10 kali lebih lambat daripada halaman HTML statis, oleh karena itu usahakan perbanyak penggunaan halaman HTML statis untuk membangun aplikasi web.

13. Tidak semua script PHP harus dinyatakan dalam bentuk OOP, karena seringnya malah membuat memori penuh. Hal ini disebabkan setiap method dan object membutuhkan memori yang tidak sedikit 14. Sebaiknya setiap struktur data jangan dinyatakan dalam bentuk class, terkadang array juga berguna untuk efisiensi memori. 15. Sebaiknya gunakan single quote untuk mengapit string, daripada double quote. Sebagai contoh $string = Hello; lebih baik daripada $string = Hello; Semoga tips di atas useful for you

Script PHP untuk Mencegah Submit Form Berulang Kali


Pernahkah Anda mendapati seseorang yang telah mensubmit form yang ada di situs Anda beberapa kali dalam waktu yang hampir bersamaan? Biasanya hal ini dilakukan oleh user yang mengira proses submit form belum sukses, sehingga ia berulang kali mengklik REFRESH atau mengklik tombol SUBMIT padahal sebenarnya proses submit sendiri sudah berhasil. Apabila data dari form tersebut disimpan di database maka Anda akan mendapati beberapa data yang sama (duplicate data). Lebih buruk lagi, seandainya yang mengirim data melalui form adalah sebuah spam yang bisa jadi akan menghabiskan space quota hostingan Anda di server karena puluhan bahka ratusan data akan disubmit dalam waktu yang hampir bersamaan melalui form. Nah berikut ini ada tips untuk menanggulangi submit form yang berulang kali tersebut. Misalkan Anda memiliki form berikut ini form.php
1 2 3 4 <form method="post" action="submit.php"> <p>Masukkan nama Anda: <input name="nama" type="text" /></p> <p><input type="submit" /></p> </form>

Form di atas digunakan untuk memasukkan nama user lalu mensubmitnya. Ini hanyalah contoh sederhana saja. Anda dapat membuat beberapa field tambahan bila diperlukan. Teknik untuk mencegah submit berulang kali disini menggunakan bantuan session. Bagaimana idenya? OK Pertama-tama untuk inisialisasi, session dibuat bernilai TRUE. Submit dikatakan berhasil jika nilai session yang tadinya bernilai TRUE, kemudian berubah menjadi FALSE. Sedangkan apabila submit belum berhasil maka status session masih TRUE dan memungkinkan user melakukan re-submit. Apabila submit sebelumnya berhasil (status session menjadi FALSE), maka ia tidak bisa mensubmit lagi.

Nah, oleh karena itu kita harus modifikasi script untuk formnya untuk menerapkan ide di atas. form.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php // memulai session session_start(); // jika session belum dibuat, maka inisialisasi awal diberi nilai TRUE if (!isset($_SESSION['submit'])) { $_SESSION['submit'] = true; } ?> <form method="post" action="submit.php"> <p>Masukkan nama Anda: <input name="nama" type="text" /></p> <p><input type="submit" /></p> </form>

Nah selanjutnya kita buat script untuk memproses submitnya. submit.php


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?php session_start(); // cek apabila submit tidak valid if (!$_SESSION['submit']) { echo "ERROR: form sudah disubmit sebelumnya!"; } else { // mengubah session menjadi false setelah submit sukses $_SESSION['submit'] = false; // Bagian ini dapat dimodifikasi sendiri sesuai keperluan // misalnya ditambah perintah untuk // entri data ke tabel database // dalam contoh ini data yang diisi via form // hanya sekedar ditampilkan saja setelah disubmit echo "Nama anda".$_POST['nama']; } ?>

OK begitu kira-kira tips sederhana untuk mengatasi submit data yang berulang-ulang via form. Selamat mencoba dan mudah-mudahan bermanfaat bagi Anda. Nantikan tips-tips berikutnya dari saya, so stay tune terus di blog ini.

Script PHP untuk Edit Data dengan Komponen RadioButton pada Form
Tutorial kali ini masih terkait dengan proses editing data melalui form yang langsung terintegrasi dengan database MySQL. Masalah yang diangkat pada tutorial ini adalah bagaimana membuat script PHP untuk mengedit data melalui form menggunakan komponen RadioButton. Seperti yang kita tahu bahwa komponen RadioButton digunakan untuk memilih salah satu dari beberapa pilihan yang ada. Nah yang jadi pertanyaan, bagaimana cara mengimplementasikannya dalam aplikasi edit data dengan form. So hal ini akan dibahas tuntas pada tutorial kali ini. Untuk studi kasus, kita mengambil contoh data mahasiswa yang terdiri dari NIM, NAMA MHS dan JENIS KELAMIN. Komponen RadioButton akan digunakan untuk mengubah JENIS KELAMIN ini. Berikut ini adalah struktur tabel yang digunakan pada contoh ini
CREATE TABLE mhs ( nim varchar(10), namaMhs varchar(30), jnsKelamin varchar(20), PRIMARY KEY (nim) )

dengan sampel data sbb:


INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO mhs mhs mhs mhs mhs VALUES VALUES VALUES VALUES VALUES ('M0197001', ('M0197002', ('M0197003', ('M0197004', ('M0197005', 'ROSIHAN ARI YUANA', 'Pria'); 'DWI AMALIA FITRIANI', 'Wanita'); 'FAZA FAUZAN KH.', 'Pria'); 'NADA HASANAH', 'Wanita'); 'MUH. AHSANI TAQWIM', 'Pria');

Apabila kita perhatikan pada form proses edit, khususnya pada JENIS KELAMIN, maka RadioButton akan melakukan CHECKED sesuai dengan data. Sebagai contoh, misalkan kita akan mengedit mahasiswa bernama Rosihan Ari yang berjenis kelamin PRIA, maka begitu link EDIT diklik, akan muncul form edit dengan RadioButton langsung men-CHECKED pada PRIA. Bagaimana membuat hal seperti tersebut di atas? Perhatikan script PHP berikut ini dan ingat jangan hanya asal copy and paste lalu jadi tapi perhatikan komentar-komentarnya, karena komentar tersebut akan membantu Anda untuk mempelajari alur script.
<?php // koneksi ke mysql

mysql_connect("namahost", "dbuser", "dbpass"); mysql_select_db("dbname"); // mendapatkan nilai dari parameter 'op' dari link $op = $_GET['op']; // bagian untuk proses edit if ($op == "edit") { // membaca nilai dari parameter 'nim' dari link $nim = $_GET['nim']; // query untuk menampilkan data mahasiswa dengan // nim tertentu yang akan diedit via form $query = "SELECT * FROM mhs WHERE nim = '$nim'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); // setting untuk radio button jenis kelamin // jika jenis kelamin pria, maka radiobutton pria dicek if ($data['jnsKelamin'] == "Pria") { $option1 = "<input type=\"radio\" name=\"sex\" value=\"Pria\" checked>"; $option2 = "<input type=\"radio\" name=\"sex\" value=\"Wanita\">"; } // jika jenis kelamin wanita, maka radiobutton wanita // dicek else if ($data['jnsKelamin'] == "Wanita") { $option1 = "<input type=\"radio\" name=\"sex\" value=\"Pria\">"; $option2 = "<input type=\"radio\" name=\"sex\" value=\"Wanita\" checked>"; } // menampilkan data hasil query pada form edit echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']. "?op=update\">"; echo "<table border=\"1\">"; // menampilkan komponen edit data berisi nim echo "<tr> <td>NIM</td> <td><input type=\"text\" name=\"nim\" value=\"".$data['nim']."\"></td> </tr>"; // menampilkan komponen edit data berisi nama mhs

echo "<tr> <td>Nama Mahasiswa</td> <td> <input type=\"text\" name=\"namaMhs\" value=\"".$data['namaMhs']."\"> </td> </tr>"; // menampilkan radiobutton edit untuk jenis kelamin echo "<tr> <td>Jenis Kelamin</td> <td>Pria ".$option1." Wanita ".$option2."</td> </tr>"; echo "</table>"; // komponen hidden berisi nim lama yang akan digunakan // untuk kriteria dalam query update echo "<input type=\"hidden\" name=\"nimLama\" value=\"".$data['nim']."\">"; // menampilkan tombol submit echo "<input type=\"submit\" name=\"submit\" value=\"Simpan Perubahan\">"; echo "</form>"; } // proses update data setelah data diedit else if ($op == "update") { // membaca nim dari form edit $nim = $_POST['nim']; // membaca nama mahasiswa dari form edit $namaMhs = $_POST['namaMhs']; // membaca nim lama mhs dari form edit $nimLama = $_POST['nimLama']; // membaca jenis kelamin mhs dari form edit $sex = $_POST['sex']; // query update data $query = "UPDATE mhs SET nim = '$nim', namaMhs = '$namaMhs', jnsKelamin = '$sex' WHERE nim = '$nimLama'"; $hasil = mysql_query($query); // menampilkan status update

if ($hasil) echo "<p>Proses Update Sukses</p>"; else echo "<p>Proses Update Gagal</p>"; } ?> <!--- header tabel --> <table border="1"> <tr> <th>No</th> <th>NIM</th> <th>Nama Mahasiswa</th> <th>Jenis Kelamin</th> <th>Action</th> </tr> <?php // nilai awal untuk no urut data dalam tabel $no = 1; // query untuk menampilkan semua data mahasiswa $query = "SELECT * FROM mhs"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { echo "<tr>"; // menampilkan no. urut data echo "<td>".$no."</td>"; // menampilkan nim mhs echo "<td>".$data['nim']."</td>"; // menampilkan nama mahasiswa echo "<td>".$data['namaMhs']."</td>"; // menampilkan jenis kelamin mhs echo "<td>".$data['jnsKelamin']."</td>"; // menampilkan link untuk proses edit echo "<td> <a href=\"".$_SERVER['PHP_SELF']. "?op=edit&nim=".$data['nim']."\"> Edit </a> </td>"; echo "</tr>"; // increment untuk no. urut $no++; } ?> </table>

Bagaimana, mudah bukan membuatnya?

Rosihan Ari`s Blog


Ketika ilmu tidak sekedar teori
ABOUT ME | CONTACT ME | NO REKENING | NO RESI PENGIRIMAN BARANG

Ingin Punya Script SMS Gateway dengan PHP + MySQL?


Kami menyediakan software pengirim SMS massal untuk bisnis Anda. Atau... Anda punya konsep sendiri dengan aplikasi SMS Gateway? Request saja ke saya untuk dibuatkan [Info Lengkap...]

Script PHP untuk Menghapus Data Via Panel di Tabel


August 22nd, 2008 | by rosihanari | Cetak Artikel Ini

Ingin beriklan di atas?

OK artikel kali ini akan membahas tentang bagaimana cara membuat script PHP untuk menghapus record atau data dari database (MySQL). Adapun penghapusan tersebut dilakukan melalui panel hanya dengan mengklik link yang bersesuaian dengan data atau baris record yang akan dihapus. Perhatikan video berikut ini yang merupakan tampilan hasil dari script yang akan dibuat kali ini

Pada tampilan video di atas tampak bahwa sebelum data terhapus, muncul semacam konfirmasi apakah user benar-benar ingin menghapus data atau tidak. Konfirmasi ini muncul supaya

menghindari hal-hal yang diluar dugaan, misalnya data terhapus secara tidak sengaja karena klik. Untuk memunculkan konfirmasi semacam in, di sini akan digunakan Javascript. Dalam contoh ini, kita membutuhkan struktur tabel mahasiswa sbb
CREATE TABLE mhs ( nim varchar(10), namaMhs varchar(30), PRIMARY KEY (nim) )

dan sampel data record sbb


INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO mhs mhs mhs mhs mhs VALUES VALUES VALUES VALUES VALUES ('M0197001', ('M0197002', ('M0197003', ('M0197004', ('M0197005', 'ROSIHAN ARI YUANA'); 'DWI AMALIA FITRIANI'); 'FAZA FAUZAN KH.'); 'NADA HASANAH'); 'MUH. AHSANI TAQWIM');

Untuk lebih jelasnya perhatikan script di bawah ini


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <html> <head> <script language="JavaScript"> function konfirmasi(nim) { tanya = confirm('Anda yakin ingin menghapus mahasiswa bernim '+ nim + '?'); if (tanya == true) return true; else return false; } </script> </head> <body> <?php mysql_connect("namahost","dbuser","dbpass"); mysql_select_db("dbname"); $op = $_GET['op']; if ($op == "delete") { $nim = $_GET['nim']; $query = "DELETE FROM mhs WHERE nim = '$nim'"; $hasil = mysql_query($query); } ?> <table border="1"> <tr> <th>No</th>

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

<th>NIM</th> <th>Nama Mahasiswa</th> <th>Action</th> </tr> <?php $no = 1; $query = "SELECT * FROM mhs"; $hasil = mysql_query($query); while ($data = mysql_fetch_array($hasil)) { echo "<tr>"; echo "<td>".$no."</td>"; echo "<td>".$data['nim']."</td>"; echo "<td>".$data['namaMhs']."</td>"; echo "<td><a href=\"".$_SERVER['PHP_SELF']."?op=delete&nim=".$data['nim']."\" onclick=\"return konfirmasi('".$data['nim']."')\">Hapus</a></td>"; echo "</tr>"; $no++; } ?> </table> </body> </html>

Penjelasan script: Proses penghapusan data atau record pada script ini dilakukan dengan mengklik link yang ada pada setiap baris record. Dalam hal ini, parameter data yang dihapus menggunakan nim mengingat nim adalah sesuatu yang unik. Pada link tersebut diberikan event onclick() yang berarti akan memicu suatu script apabila link tersebut diclick. Script yang dipicu tersebut berbentuk Javascript, dan diberinama function konfirmasi() dengan parameternya adalah nim yang akan dihapus. Dalam function konfirmasi(), terdapat perintah confirm(), ini digunakan untuk meminta konfirmasi user tentang suatu action. Konfirmasi ini akan memunculkan kotak dialog yang di dalamnya terdapat tombol OK dan CANCEL. Maksud perintah if (tanya == true) return true; adalah jika tombol yang ditekan pada konfirmasi adalah OK, maka function konfirmasi() akan mengembalikan nilai TRUE yang mengakibatkan menjalankan link penghapusan. Jika yang ditekan tombol CANCEL (tanya == false) maka yang dikembalikan oleh konfirmasi() adalah FALSE, yang artinya link penghapusan tidak dijalankan. Mudah bukan.

Penggunaan Function REPLACE() di SQL


Dalam artikel ini, akan saya paparkan mengenai penggunaan function REPLACE() di SQL. Mudah-mudahan ada manfaatnya bagi Anda sekalian. Apa yang saya tulis dalam artikel ini berdasarkan pengalaman yang pernah saya jumpai ketika akan membuat aplikasi, dan secara tidak sengaja menemukan function REPLACE() ini dalam manual. Nah karena saya telah menemukan sesuatu ilmu yang baru, sekarang saatnya saya untuk membagi ilmu tersebut buat Anda Untuk menyingkat penjelasan, sebaiknya kita langsung impelementasikan penggunaan REPLACE ini ke dalam studi kasus saja. Studi kasus yang akan diambil di sini terkait dengan data yang disajikan sebagai berikut:
Kode Karyawan K001 K002 K003 K004 Nama Karyawan ROSIHAN ARI YUANA, S.PD DWI AMALIA FITRIANI, S.PD FAZA FAUZAN, S.PD NADA HASANAH, S.PD

dengan asumsi bahwa data di atas sudah disimpan di database. Apabila Anda perhatikan data di atas, maka nama karyawan semuanya ditulis dalam huruf kapital (termasuk titlenya). Padahal dalam aturan penulisan title untuk S.PD yang benar adalah S.Pd. Nah yang jadi masalah adalah, kita tidak mungkin mengedit data satu-persatu. Apabila cuma hanya sejumlah kecil data maka tentu saja gak masalah. Tetapi bagaimana kalau datanya ratusan bahkan ribuan? Tentu membutuhkan waktu proses pengeditan yang lama. Lantas bagaimana caranya untuk mengubah data tersebut dengan cepat? Untunglah dalam SQL terdapat function REPLACE() yang digunakan untuk menggantikan suatu substring dalam string tertentu. Bagaimana dengan sintaksnya? Sintaks dari REPLACE() adalah sebagai berikut:
REPLACE(string, substring yang akan diganti, substring penggati)

Function ini dapat diletakkan dalam statement SELECT maupun UPDATE. Adapun contoh penggunaan REPLACE() pada SELECT adalah
SELECT REPLACE('www.rosihanari.net', 'www', 'http://www');

Maksud statement di atas adalah mengganti substring www dengan http://www pada string www.rosihanari.net. Sehingga output dari query tersebut adalah http://www.rosihanari.net. Karena function REPLACE() ini diletakkan dalam SELECT maka tidak akan mengubah record apapun dalam tabel database.

Sekarang akan kita implementasikan function ini ke tujuan semula yaitu mengganti semua title S.PD dengan S.Pd untuk semua data karyawan. Karena tujuannya untuk mengubah data, maka kita gunakan perintah UPDATE.
UPDATE tabelKaryawan SET namaKaryawan = REPLACE(namaKaryawan, 'S.PD', 'S.Pd');

Maksud dari statement SQL di atas adalah mengubah data karyawan pada tabel tabelKaryawan, terutama pada field namaKaryawan yaitu nama karyawan yang baru adalah nama karyawan lama dengan title S.PD diganti S.Pd. Anda juga bisa melakukan update data menggunakan REPLACE() hanya pada data tertentu yang dalam hal ini dibatasi dengan klausa WHERE, misalnya:
UPDATE tabelKaryawan SET namaKaryawan = REPLACE(namaKaryawan, 'S.PD', 'S.Pd') WHERE kodeKaryawan < 'K003';

Maksud dari statement di atas adalah mengubah title karyawan hanya untuk karyawan yang berkode K001 dan K002. Mudah bukan???

Rosihan Ari`s Blog


Ketika ilmu tidak sekedar teori
ABOUT ME | CONTACT ME | NO REKENING | NO RESI PENGIRIMAN BARANG

Ingin Punya Script SMS Gateway dengan PHP + MySQL?


Kami menyediakan software pengirim SMS massal untuk bisnis Anda. Atau... Anda punya konsep sendiri dengan aplikasi SMS Gateway? Request saja ke saya untuk dibuatkan [Info Lengkap...]

Ide Dibalik Pembuatan Script Membilang Bilangan

May 10th, 2009 | by rosihanari |

Cetak Artikel Ini

Ingin beriklan di atas?

Bagaimana sih cara membuat script untuk membilang suatu bilangan? Jika kita punya suatu bilangan misalkan 1901 maka script akan menghasilkan output seribu sembilan ratus satu. Demikian pertanyaan yang pernah diajukan oleh salah satu pengunjung setia blog ini. Bila membaca pertanyaan di atas, saya teringat waktu kuliah dulu dimana pertanyaan yang sama pernah diberikan oleh dosen atau guru saya. He.. 3x.. maksud saya tugas kuliah.. Butuh waktu berhari-hari untuk memikirkan ide dalam membuat scriptnya, sampai-sampai tidak sempat tidur. Ah gak usah dilanjutin deh, ntar ketahuan kalo mendramatisir OK.. dalam artikel ini saya coba membahas bagaimana ide dalam membuat script untuk membilang suatu bilangan. Ide utama dari pembuatan script untuk membilang bilangan ini adalah terlebih dahulu kita bagibagi bilangannya ke dalam kelompok 3 digit (ribuan) seperti halnya format bilangan dalam mata uang. Misalkan kita memiliki bilangan 1234567890, maka kita bagi terlebih dahulu menjadi 1.234.567.890. Dari contoh ini kita mendapatkan 4 kelompok ribuan, yaitu 1, 234, 567 dan 890, yang selanjutnya untuk setiap kelompok kita beri nomor urut kelompok, misalkan: kelompok 1 berisi 1, kelompok 2 berisi 234, kelompok 3 berisi 567 dan kelompok 4 berisi 890. Nah.. selanjutnya kita nyatakan setiap kelompok tersebut ke dalam kalimat. Jika kelompok ribuan tersebut terletak pada urutan ke 1 dari 4 kelompok ribuan yang ada, maka nanti berbentuk milyar di mana adalah terbilang dari bilangan pada kelompok tersebut. Jika kelompok ribuan terletak pada urutan ke 2 dari 4 kelompok ribuan yang ada, maka nanti berbentuk juta dst. Sehingga dari contoh di atas, diharapkan akan diperoleh format terbilang: milyar juta ribu Konsep di atas bisa kita kembangkan sampai dengan tingkat trilyun. Bila kita kembangkan dalam tingkat trilyun, maka nantinya terdapat 5 kelompok ribuan. Jika kelompok ribuan terletak pada urutan ke-1 dari 5 kelompok yang ada, maka akan berbentuk trilyun. Jika kelompok ribuan terletak pada urutan ke-2 dari 5, maka berbentuk milyar, urutan ke-3 dari 5 akan berbentuk juta, dst.

Setelah kita dapatkan format terbilang untuk masing-masing kelompok, langkah berikutnya kita terjemahkan semua bilangan yang ada di setiap kelompok. Seperti pada contoh di atas, kita terjemahkan bilangan yang ada di kelompok ke-1 yaitu 1 menjadi satu. Kelompok ke-2 yaitu 234 menjadi dua ratus tiga puluh empat. Kelompok ke-3 yaitu 567 menjadi lima ratus enam puluh tujuh, serta kelompok ke-4 yaitu 890 menjadi delapan ratus sembilan puluh Dengan menggabung kedua langkah di atas maka akan diperoleh hasil terbilang : satu milyar dua ratus tiga puluh empat juta lima ratus enam puluh tujuh ribu delapan ratus sembilan puluh. Nah implementasi dari konsep di atas akan diperoleh script berikut ini (script ditulis dalam PHP) terbilang.php
<?php function bilangRatusan($x) { // function untuk membilang bilangan pada setiap kelompok $kata = array('', 'satu ', 'dua ', 'tiga ' , 'empat ', 'lima ', 'enam ', 'tujuh ', 'delapan ', 'sembilan '); $string = ''; $ratusan = floor($x/100); $x = $x % 100; if ($ratusan > 1) $string .= $kata[$ratusan]."ratus "; // membentuk kata '... ratus' else if ($ratusan == 1) $string .= "seratus "; // membentuk kata khusus 'seratus ' $puluhan = floor($x/10); $x = $x % 10; if ($puluhan > 1) { $string .= $kata[$puluhan]."puluh "; // membentuk kata '... puluh' $string .= $kata[$x]; // membentuk kata untuk satuan } else if (($puluhan == 1) && ($x > 0)) $string .= $kata[$x]."belas "; // kejadian khusus untuk bilangan yang berbentuk kata '... belas' else if (($puluhan == 1) && ($x == 0)) $string .= $kata[$x]."sepuluh "; // kejadian khusus untuk bilangan 10 else if ($puluhan == 0) $string .= $kata[$x]; // membentuk kata untuk satuan return $string; } function terbilang($x) { // membentuk format bilangan XXX.XXX.XXX.XXX.XXX $x = number_format($x, 0, "", ".");

// memecah kelompok ribuan berdasarkan tanda '.' $pecah = explode(".", $x); $string = ""; // membentuk format terbilang '... trilyun ... milyar ... juta ... ribu ...' for($i = 0; $i <= count($pecah)-1; $i++) { if ((count($pecah) - $i == 5) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."triliyun "; // membentuk kata '... trilyun' else if ((count($pecah) - $i == 4) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."milyar "; // membentuk kata '... milyar' else if ((count($pecah) - $i == 3) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."juta "; // membentuk kata '... juta' else if ((count($pecah) - $i == 2) && ($pecah[$i] == 1)) $string .= "seribu "; // kejadian khusus untuk bilangan dalam format 1XXX (yang mengandung kata 'seribu') else if ((count($pecah) - $i == 2) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."ribu "; // membentuk kata '... ribu' else if ((count($pecah) - $i == 1) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i]); } return $string; } ?>

Selanjutnya bagaimana cara menggunakan script di atas? ya tinggal kita includekan script di atas lalu panggil function terbilang(). Berikut ini contohnya:
<?php include "terbilang.php"; $bil = 10001901; echo terbilang($bil); // akan menghasilkan 'sepuluh juta seribu sembilan ratus satu' ?>

Bila Anda menemukan sebuah bug atau kelemahan script di atas bisa kita diskusikan melalui komentar di bawah ini. Semoga bermanfaat.

You might also like