Selasa, 16 Desember 2014

Akses Database dengan PHP

Akses Database dengan PHP
Salah satu kelebihan server-side script adalah kemampuan untuk mengakses database.
Dengan demikian pengguna bisa menyimpan data dalam database melalui web. PHP bisa
berhubungan dengan berbagai DBMS seperti mSQL, MySQl, MS-SQL, MS-Access, PostgreSQL,
bahkan sampai FoxPro dan Oracle. Tetapi yang paling umum digunakan berpasangan dengan PHP
adalah MySQL, karena disebutkan MySQL memberikan hasil yang optimal dari sisi kecepatan dan
reliabitas manajemen data, dan sifatnya yang open-source menyebabkannya berkembang secara
pesat dan digunakan begitu banyak pengguna yang tidak ingin mengeluarkan biaya besar untuk
membangun sistem basis data.


Untuk berhubungan dengan MySQL diperlukan pengetahuan tentang SQL sebelumnya.
Pembuatan basis data dan manipulasi basis data bisa dilakukan melalui command line dengan
menggunakan perintah SQL, tetapi sebagian fungsi bisa dilakukan dengan PHPMyAdmin, sebuah
tool dengan web interface untuk administrasi basis data dalam MySQL.
Untuk pembahasan berikutnya, akan digunakan suatu tabel yang berisi data mahasiswa. Ke
dalam tabel itu akan dilakukan entry data, edit data, penghapusan data, menampilkan semua data
di tabel dan query terhadap data tertentu. Untuk studi kasus yang lain (misalnya guestbook atau
forum diskusi), pada dasarnya sama juga karena mencakup entry/edit/delete/query. Perbedaannya
adalah pada logika pemrograman dan masipulasi tampilan saja.
11.1. Membuat tabel / database
Untuk membuat tabel, maka harus dibuat basis datanya (database). Dengan menggunakan
sintaks SQL atau PHPMyAdmin (bagaimana pembuatannya tidak dibahas di sini), buatlah basis
data tentang permasalahan akademik (beri nama AKADEMIK). Salah satu tabelnya adalah tabel
untuk data mahasiswa (beri nama MAHASISWA). Strukturnya kurang lebih sebagai berikut:
Nama Field Tipe data Keterangan
NIM char(10) Primary Key
Nama char(25)
Alamat char(40)
Agama char(1)
JenisKelamin char(1)
TempatLahir char(15)
TanggalLahir Date
11.2. Koneksi database di SQL
Bila database anda sudah ada, maka sekarang kita manfaatkan dalam script PHP. Untuk
melakukan koneksi ke basis data dan tabel, maka harus dipunyai informasi tentang nama server,
nama user dan passwordnya, dan nama basis data yang akan digunakan. Dengan informasi ini
selanjutnya dilakukan koneksi ke database.
$server = "localhost";
$namauser = "root"; // misalkan nama user adalah 'root'
$passuser = ""; // misalkan tidak menggunakan password
$koneksi = mysql_connect($server, $namauser, $passuser)
$koneksi adalah variabel pengenal basis data, variabel ini digunakan selama berhubungan
dengan basis data. Penggunaan perintah mysql_connect tidak harus seperti di atas, bisa juga
nilainya langsung dimasukkan sebagai parameternya, misalkan:
$koneksi = mysql_connect("localhost", "root", "")
11.3. Entry Data
Untuk entry data, caranya hampir sama dengan contoh page pada sub bab 10 (Pengolahan
form), hanya saja sekarang datanya disimpan di tabel. Di sini kita membuat dua buah page: page
pertama (misal nama filenya entrymhs.htm) digunakan untuk melakukan pengisian data,
sedangkan page kedua (simpanentrymhs.php) digunakan untuk menyimpan dan menampilkan
data. Properti action pada form di file entrymhs.htm diarahkan ke simpanentrymhs.php. Contoh
tampilannya:
Berdasar contoh tampilan di atas, buatlah pagenya. Komponen yang digunakan:
Nama Komponen Jenis Keterangan
edNIM Text Untuk pengisian NIM
edNama Text Untuk pengisian Nama
edAlamat Text Untuk pengisian alamat
rdJK Radio Untuk pengisian jenis kelamin. Value “L” untuk lakilaki
dan “P” untuk perempuan.
rdAgama Radio Untuk pengisian kode agama. Value “1” untuk islam,
“2” untuk Kristen, “3” untuk Katolik, “4” untuk Hindu,
“5” untuk Budha, dan “6” untuk Lainnya
edTempat Text Untuk pengisian tempat lahir
edTanggal Text Untuk pengisian tanggal lahir
cbBulan Combo Untuk pengisian bulan lahir. Teks yang ada di setiap
option adalah nama bulan (Januari – Desember).
Value “1” untuk Januari, dan seterusnya.
edTahun Text Untuk pengisian tahun lahir
Perhatikan penamaan komponen form, agar sesuai dengan yang nantinya digunakan pada
page kedua (silahkan pakai nama yang berbeda, asalkan konsisten).
Pada page kedua, yang dilakukan adalah mengambil semua informasi yang dikirimkan oleh
client, menyimpannya di dalam database, lalu menampilkan data yang sudah disimpan. Sebagai
contoh, berikut kode dan tampilan simpanentrymhs.php. Ingatlah bahwa kode yang digunakan
untuk berhubungan dengan database bukanlah satu-satunya, anda mungkin menjumpai kode yang
berbeda di page lain.
<html>
<head>
<title>Proses data mahasiswa</title>
</head>
<body>
<?
// ambil semua isian
$NIM=$_GET['edNIM'];
$nama=$_GET['edNama'];
$alamat=$_GET['edAlamat'];
$agama=$_GET['rdAgama'];
$jenkel=$_GET['rdJK'];
$tempat=$_GET['edTempat'];
$tanggal=$_GET['edTanggal'];
$tahun=$_GET['edTahun'];
$bulan=$_GET['cbBulan'];
// buka koneksi dan database
$server = "localhost";
$namauser = "root"; // user name: root
$passuser = ""; // tanpa password
$koneksi = mysql_connect($server, $namauser, $passuser);
// susun query utk insert data
$tglLahir=$tahun."-".$bulan."-".$tanggal;
$query = 'INSERT INTO mahasiswa VALUES ("'.$NIM.'","'.$nama.'","'.
$alamat.'","'.$agama.'","'.$jenkel.'","'.$tempat.'","'.$tglLahir.'")';
// lakukan proses query
$db = "akademik";
$hasil = mysql_db_query($db,$query,$koneksi) or die('Ada kesalahan pada
query: '.$query);
?>
<p><b>PROSES DATA MAHASISWA</b></p>
<hr>
<table border="0">
<tr>
<td width="100"><b>NIM</b></td>
<td width="400">:<? echo $NIM ?></td>
</tr>
<tr>
<td><b>Nama</b></td>
<td>:<? echo $nama ?></td>
</tr>
<tr>
<td><b>Alamat</b></td>
<td>:<? echo $alamat ?></td>
</tr>
<tr>
<td><b>Agama</b></td>
<td>:<? echo $agama ?></td>
</tr>
<tr>
<td><b>Jenis kelamin</b></td>
<td>:<? echo $jenkel ?></td>
</tr>
<tr>
<td><b>Tempat lahir</b></td>
<td>:<? echo $tempat ?></td>
</tr>
<tr>
<td><b>Tanggal lahir</b></td>
<td>:<? echo $tanggal."-".$bulan."-".$tahun ?></td>
</tr>
</table>
<p><b>Data anda telah tersimpan !</b>
<?
// bebaskan memori yg digunakan untuk proses
mysql_close($koneksi);
?>
</body>
</html>
Alur proses:
1. Mula-mula semua isian dari page sebelumnya diambil (dengan $_GET atau $_POST) dan
dimasukkan ke suatu variabel.
2. Seperti yang telah dijelaskan di 11.2, selanjutnya ditentukan nama server (localhost karena
hanya koneksi komputer lokal), nama user dan password database. Selanjutnya dilakukan
koneksi ke database dengan mysql_connect.
3. Karena MySQL menyimpan data bertipe tanggal dengan format yy-mm-dd, maka kita susun
dulu data tanggal lahir sesuai format yang ditentukan. Berikutnya tentukan perintah SQL untuk
memasukkan data, dan dieksekusi dengan fungsi mysql_db_query. Sebelumnya tentukan
dulu nama databasenya. Perhatikan ada die yang digunakan untuk menampilkan pesan dan
menghentikan eksekusi script jika terjadi kesalahan.
4. Bila semua data telah tersimpan dengan benar maka data ditampilkan di layar.
5. Terakhir koneksi ditutup dengan mysql_close().
Selain menggunakan fungsi mysql_db_query(), anda dapat juga menggunakan fungsi
mysql_query() yang lebih praktis untuk digunakan berulang-ulang pada basis data yang sama.
Untuk menggunakannya, terlebih dahulu definisikan dahulu basis data yang digunakan dengan
fungsi mysql_select_db(). Perintah mysql_db_query di atas bisa digantikan dengan:
...
mysql_select_db($db, $koneksi);
mysql_query($query);
...
Catatan: Perhatikan bahwa yang ditampilkan pada Agama adalah value yang didefinisikan pada
setiap item komponen radio. Untuk menampilkan kata-katanya (misalkan “Islam”) anda harus
gunakan fungsi if. Cobalah!
11.4. Menampilkan semua data dalam bentuk tabel
Sekarang setelah semua data masuk kita tampilkan dalam bentuk tabel. Contoh tampilan:
Berikut ini kodenya. Untuk menghemat waktu, anda tidak perlu ketik semua. Gunakan editor HTML
untuk merancang tabel (satu baris untuk judul kolom dan satu baris kosong), lalu tambahkan kode
PHP ke dalamnya. Filenya bernama dispmhs.php.
<html>
<head>
<title>Display semua data</title>
</head>
<body>
<? // buka koneksi
require("koneksi.php");
mysql_select_db($db, $koneksi); // pilih database
// tentukan perintah untuk query semua data dan eksekusi
$query="SELECT * FROM MAHASISWA";
$hasil=mysql_query($query) or die('Ada kesalahan pada query '.$query);
?>
<b>Display semua mahasiswa<b><hr><p>
<div align="center">
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td width="5%"><div align="center"><b>NIM</b></div></td>
<td width="25%"><div align="center"><b>Nama Mahasiswa</b></div></td>
<td width="3%"><div align="center"><b>Agm</b></div></td>
<td width="3%"><div align="center"><b>JK</b></div></td>
<td width="30%"><div align="center"><b>Alamat</b></div></td>
<td width="20%"><div align="center"><b>Tempat lhr</b></div></td>
<td width="14%"><div align="center"><b>Tgl lahir</b></div></td>
</tr>
<?
// baca satu baris data dan masukkan ke dalam array arData
// proses ini dilakukan SELAMA arData tidak kosong
while ($arData=mysql_fetch_array($hasil))
{
?>
<tr>
<td height="28">
<div align="center"><? echo $arData["NIM"] ?></div></td>
<td><? echo $arData ["Nama"] ?> </td>
<td><div align="center"><? echo $arData["Agama"] ?></div></td>
<td><div align="center"><? echo $arData["JenisKelamin"] ?></div></td>
<td><? echo $arData ["Alamat"] ?></td>
<td><? echo $arData ["TempatLahir"] ?></td>
<td>
<?
$tanggalLahir=$arData["TanggalLahir"];
$tgl=substr($tanggalLahir,8,2);
$bln=substr($tanggalLahir,5,2);
$thn=substr($tanggalLahir,0,4);
echo $tgl."-".$bln."-".$thn;
?>
</td>
</tr>
<?
}
?>
</table>
</center>
</div>
<?
// bebaskan memori yg digunakan untuk proses
mysql_free_result($hasil);
mysql_close($koneksi);
?>
</body>
</html>
Alur proses:
1. Sebelum digunakan, maka dilakukan koneksi ke sistem MySQL. Di program tertulis
require(koneksi.php). Require adalah fungsi untuk menyisipkan file ke dalam kode saat itu.
Isi koneksi.php adalah:
<? // buka koneksi dan database
$server = "localhost";
$namauser = "root"; // user name: root
$passuser = ""; // tanpa password
$koneksi = mysql_connect($server, $namauser, $passuser);
$db = "akademik";
?>
2. Database dipilih dengan menggunakan mysql_select_db. Selanjutnya ditentukan query
pengambilan data dan eksekusi querynya dengan menggunakan mysql_query (anda boleh saja
menggunakan mysql_db_query seperti pada saat entry data).
3. Setelah menampilkan header tabel, selanjutnya lakukan perulangan dengan while untuk
membaca setiap record dan memasukkan ke array arData. Perintah untuk memasukkan field
dari record aktif ke dalam array adalah mysql_fetch_array. Elemen array bisa dikenali
dengan menyebutkan nama field atau angka yang menyatakan urutan field dalam record
(dimulai dari 0). Hal ini dilakukan selama record masih ada (selama arData tidak bernilai false).
4. Setelah semua record ditampilkan (while berakhir), maka memori yang digunakan dibebaskan
dengan mysql_free_result() dan koneksi ditutup dengan mysql_close().
Selain menggunakan fungsi mysql_fetch_array(), anda dapat juga menggunakan fungsi
mysql_fetch_row(). Hasilnya juga berupa array dari record yang sedang aktif saat itu. Demham
mysql_fetch_row, elemen array hanya bisa diakses dengan menyebutkan nomor elemen array,
dimulai dari 0. Pernyataan mysql_fetch_array di atas bisa digantikan dengan:
...
while ($arData=mysql_fetch_row($hasil))
{
...
<td><? echo $arData [0] ?> </td>
<td><div align="center"><? echo $arData[1] ?></div></td>
...
}
...
Catatan: Perhatikan bahwa yang ditampilkan pada kolom Agm dan JK adalah nilai yang tersimpan
di tabel. Untuk menampilkan dalam kata-kata atau kode lain anda harus gunakan fungsi if.
Cobalah!
11.5. Menampilkan data per bagian
Bila anda memiliki email yang diakses melalui web, maka mailbox anda akan ditampilkan per
bagian (misalkan setiap 20 mail). Sisanya bisa diakses melalui link yang disediakan. Cara seperti itu
sekarang akan kita tiru untuk menampilkan data mahasiswa dalam bentuk tabel yang terdiri dari
beberapa record setiap tabelnya. Nantinya disediakan link navigasi untuk berpindah ke data
lainnya. Untuk membuatnya, anda bisa simpan file dispmhs.php di atas, dengan nama
dispmhs2.php.
Isi tabel data akan ditampilkan dalam sejumlah halaman, setiap halaman menampilkan
sejumlah baris data. Pertama kali berarti harus diketahui berapa banyaknya record yang ada dalam
tabel. Pernyataan yang digunakan adalah mysql_num_rows(). Banyaknya halaman bisa
diketahui dari banyaknya record dibagi dengan banyaknya baris data dalam setiap halaman. Setiap
halaman memiliki nomor halaman tertentu dan memiliki link untuk berpindah ke halaman lain.
Pada setiap link kita sertakan nomor halaman yang akan dibuka dan banyaknya record dalam
tabel. Query setiap halaman dituliskan dengan menyertakan klausa LIMIT untuk membatasi
record yang akan ditampilkan.
Perhatikan kode berikut:
<html>
<head>
<title>Display semua data</title>
</head>
<body>
<?
require("koneksi.php");
mysql_select_db($db,$koneksi); // pilih database
$ukuranHal=4; // tentukan banyak record per hal.
$noHal=$_GET['hal']; // nomor hal. saat ini, dari URL
if ($noHal=="") // jika tdk ada nomor hal.
{ $noHal=1; // mulai dari hal. 1
$query="SELECT * FROM mahasiswa"; // ambil semua data
$hasil=mysql_query($query) or die("Kesalahan pada query!");
$bykRec=mysql_num_rows($hasil); // dapatkan byknya record
mysql_free_result($hasil); // tutup recordset
}
else
$bykRec=$_GET['bykrec']; // banyak record yg ada, dari URL
$bykHal=ceil($bykRec/$ukuranHal); // hitung byk halaman
$mulaiRec=($noHal-1)*$ukuranHal; // nomor record awal dlm tiap hal.
// query untuk record tertentu
$query="SELECT * FROM mahasiswa LIMIT $mulaiRec,$ukuranHal";
$hasil=mysql_query($query) or die("Kesalahan pada query: $query");
if ($bykRec!=0) // jika ada data
$mulaiRec+=1; // tentukan no. record awal
$sampaiRec=$mulaiRec+$ukuranHal-1; // tentukan no. record akhir
if ($sampaiRec>$bykRec) // jika no. record akhir > byk record yg ada
$sampaiRec=$bykRec; // sesuaikan no. record terakhir dg byk record
?>
<b>Display semua mahasiswa</b><hr>
<p align="center">Halaman ke: <B><? echo $noHal; ?></B>
<br>(Record no: <? echo $mulaiRec.' - '.$sampaiRec; ?>)</P>
<div align="center">
<TABLE width="100%" border="1" cellpadding="5" cellspacing="0">
ANTARA <TABLE> DAN </TABLE> SAMA DENGAN YG ADA DI DISPMHS.PHP
</table>
</div>
<p><div align="center">
<table border="0" cellpadding="0" cellspacing="0" width="200">
<tr>
<?
$halSblm=($noHal==1 ? 1 : $noHal-1); // no. hal sblmnya
$halStlh=($noHal==$bykHal ? $bykHal : $noHal+1); // no. hal stlhnya
?>
<td width="50"><a href="dispmhs2.php?hal=1&bykrec=<? echo ($bykRec)
?>">First</a></td>
<td width="50">
<a href="dispmhs2.php?hal=<? echo ($halSblm) ?>&bykrec=<? echo
($bykRec) ?>">Prev</a></td>
<td width="50">
<a href="dispmhs2.php?hal=<? echo ($halStlh) ?>&bykrec=<? echo
($bykRec) ?>">Next</a></td>
<td width="50">
<a href="dispmhs2.php?hal=<? echo $bykHal ?>&bykrec=<? echo ($bykRec)
?>">Last</a></td>
</tr>
</table>
</div>
<?
mysql_free_result($hasil);
mysql_close($koneksi);
?>
</body>
</html>
Contoh tampilan:
Alur proses:
1. Karena modifikasi dari dispmhs.php, maka program ini pada awalnya sama. Karena ingin
menampilkan data per bagian, maka mula-mula ditetapkan dulu berapa banyak record per
halaman, yang dimasukkan ke variabel $ukuranHal.
2. Selanjutnya halaman ke berapa yang akan ditampilkan diambil dari URL melalui atribut “hal”
dan dimasukkan ke variabel $noHal. Bila $noHal kosong (URL tidak mengandung atribut “hal”)
maka dilakukan query untuk mengambil semua record dalam tabel mahasiswa, lalu dihitung
berapa banyak record yang ada dengan fungsi mysql_num_rows(). Bila tidak kosong maka
berapa banyaknya record diambil juga dari URL melalui atribut “bykrec”. Sebenarnya banyaknya
record tidak harus disertakan dalam URL, bisa saja dihitung setiap kali akan menampilkan data.
3. Selanjutnya juga dihitung berapa banyak halaman yang diperlukan untuk menampilkan data
dan dimasukkan ke variabel $bykHal.
4. Berikutnya kita hitung berapa nomor record awal untuk halaman itu, dengan menggunakan
variabel $noHal. Nomor ini gunanya untuk mengambil data dari tabel. Perhatikan querynya:
SELECT * FROM mahasiswa LIMIT $mulaiRec,$ukuranHal. LIMIT adalah klausa untuk
menbatasi record mana yang diambil (mulai dari record ke berapa sebanyak berapa record).
Hasil query inilah yang ditampilkan untuk setiap page. Caranya sama dengan yang ada di
dispmhs.php.
5. Pada akhir tabel, diberikan link navigasi untuk membuka page pertama, page sebelumnya, page
sesudahnya, dan page terakhir. Nomor page yang akan dibuka diletakkan di dalam URL,
seperti: <a href="dispmhs2.php?hal=1&bykrec=10">. hal inilah yang akan diperiksa di
awal script untuk menentukan record mana yang harus diambil.
6. Setelah semua selesai, maka memori yang digunakan dibebeaskan dengan
mysql_free_result() dan menutup koneksi dengan mysql_close().
11.5. Mencari data
Berikut ini script untuk mencari data mahasiswa berdasarkan namanya. Ada dua bagian
script: (1) untuk memasukkan nama mahasiswa yang dicari, (2) untuk mencari dan menampilkan
mahasiswa yang ditemukan. Dua bagian ini dimasukkan dalam sebuah file (misal diberi nama
carimhs.php). Contoh tampilan keduanya:
Untuk bagian menampilkan data, kode diambil dari file dispmhs.php. Berikut ini kodenya:
<html>
<head>
<title>Mencari data mahasiswa berdasarkan nama</title>
</head>
<body>
<?
//cek apakah dalam keadaan terkirim atau tidak
if ($_POST["btCari"])
{ // jika tdk dalam kondisi terkirim, tampilkan form pencarian nama
?>
<center>
<form name="frmCari" action="<? echo $PHP_SELF ?>" method="POST">
<font size=3><B>Pencarian Data Mahasiswa</b></font>
<p>Masukkan nama mahasiswa yang dicari :
<p><input type="text" name="edNama" size="50" maxlength="50">
<input type="submit" name="btCari" value=" Cari ">
</form>
</center>
<?
}
else
{ // jika dalam keadaan terkirim, lakukan pencarian dan tampilkan
// buka koneksi
require("koneksi.php");
$nama=$_POST['edNama'];
// menentukan perintah SQL untuk query
$query="SELECT * FROM mahasiswa WHERE Nama LIKE '%$nama%'";
// jalankan perintah SQL untuk query
mysql_select_db($db, $koneksi); // pilih database
$hasil=mysql_query($query) or die("Kesalahan pada query: $query");
// cek apakah pencarian ada hasilnya
$bykRec=mysql_num_rows($hasil);
if (!$bykRec)
{ // jika pencarian tidak ada hasilnya, tampilkan pesan gagal
?>
<center>
<font size=4><B>Nama mahasiswa tidak ditemukan!</B></font><p>
</center>
<?
}
else
{ // jika pencarian memberikan hasil, tampilkan dalam bentuk tabel
?>
<div align="center">
<font size=4>Data ditemukan, ada: <? echo $bykRec ?> data. </font><br>
<p><p>
<table border="1" cellpadding="5" cellspacing="0">
ANTARA <TABLE> DAN </TABLE> SAMA DENGAN YG ADA DI DISPMHS.PHP
</table>
<center>
<p><p><a href=<? echo $PHP_SELF ?>>Klik di sini untuk kembali</a></p>
</center>
</div>
<?
}?>
</body>
</html>
Alur proses:
1. Mula-mula kita cek dulu, apakah btCari berisi nilai (masukkan ke variabel $cari). btCari adalah
nama button yang digunakan untuk memulai pencarian (bila anda gunakan nama yang
berbeda, maka sesuaikan). Ingat bahwa baik metode GET maupun POST akan mengirimkan
semua nilai komponen form yang ada di dalamnya bila melakukan SUBMIT. Jika $cari tidak
memiliki nilai maka ditampilkan form untuk isian nama yang akan dicari.
2. Sebaliknya bila sudah ada isinya, maka yang pertama dilakukan adalah mencari apakah
mahasiswanya ada, dengan query SELECT * FROM mahasiswa WHERE Nama LIKE
'%$edNama%'". $edNama adalah nama textbox untuk isian nama yang dicari. Setelah
dicari, maka dihitung berapa banyak record yang ditemukan dengan fungsi
mysql_num_rows(), nilainya dimasukkan ke $bykRec. Jika $bykRec bernilai 0 berarti tidak
ada data sehingga ditampilkan pesan bahwa tidak ada data, dan bila sebaliknya maka data
yang ditemtukan lalu ditampilkan.
3. Untuk menampilkan data kita manfaatkan kode untuk tabel yang sudah dibuat di dispmhs.php,
sehingga cara kerjanya sama.
4. Pada akshirnya memori dibersihkan dan koneksi ditutup.
11.6. Mengedit data
Kembali ke contoh mailbox anda, bila anda akan membuka salah satu email maka anda
harus mengklik salah satu subject email yang ditampilkan. Hal ini akan kita tiru untuk mengedit
data mahasiswa.
Untuk mengedit data, ada dua hal yang dilakukan: (1) menentukan record yang akan
diubah, (2) memasukkan data baru dan menyimpannya ke tabel. Penentuan record yang diubah
dilakukan dengan memanfatkan tabel untuk menampilkan data yang dibuat sebelumnya. Ubahlah
tabel pada dispmhs2.php dengan menambahkan sebuah kolom baru di kanan yang berisi link
untuk memanggil program edit data. Tampilan halaman setelah diubah kira-kira seperti ini:
Pada dispmhs2.php tambahkan kode yang tercetak tebal berikut. Bagian bertanda titik-titik
menyatakan kode yang lain (tidak perlu diubah):
...
<td width="14%"><div align="center"><b>Tgl lahir</b></div></td>
<td></td>
</tr>
...
<?
$tanggalLahir=$arData["TanggalLahir"];
$tgl=substr($tanggalLahir,8,2);
$bln=substr($tanggalLahir,5,2);
$thn=substr($tanggalLahir,0,4);
echo $tgl."-".$bln."-".$thn;
?></div></td>
<td>
<div align="center">
<a href="editmhs.php?nim=<? echo $arData['NIM'] ?>">Edit</a>
</div></td>
</tr>
...
Perbedaan kodenya dengan dispmhs2.php adalah adanya link “Edit” yang ditambahkan pada
kolom paling kanan. Link ini akan membuka file editmhs.php dengan menyertakan NIM yang
dipilih pada URLnya. Berikut ini kode untuk editmhs.php. Perhatikan bahwa kodenya sebagian
mengambil kode dari entrymhs.htm. Copylah dari file tersebut dan modifikasilah kodenya.
<html>
<head>
<title>Edit data mahasiswa</title>
</head>
<body>
<?
// cek apakah variabel $nim dikirimkan dari page sebelumnya
$NIM=$_GET["nim"];
if (!$NIM)
{ die('Tidak ada NIM yang akan diedit!'); }
// ambil variabel untuk koneksi basis data
require("koneksi.php");
mysql_select_db($db, $koneksi);
// Tentukan query untuk ada yang akan diambil
$query="SELECT * FROM mahasiswa WHERE NIM='$NIM'";
// jalankan query
$hasil=mysql_query($query) or die('Kesalahan pada query: '.$query);
// cek dan ekstrak hasil query
if (mysql_num_rows($hasil)<= 0)
{ die('Data tidak ditemukan!'); }
list($NIM,$nama,$alamat,$agama,$jenkel,$tempat,$tglLahir)=
mysql_fetch_row($hasil);
mysql_free_result($hasil);
mysql_close($koneksi);
?>
<b>EDIT DATA MAHASISWA</b><hr>
<form name="fEditmhs" method="GET" action="simpaneditmhs.php">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="30%"><b>NIM</b></td>
<td width="70%"><? echo $NIM ?>
<input type="hidden" name="edNIM" value="<? echo $NIM ?>"></td>
</tr>
<tr>
<td><b>Nama</b></td>
<td><input type="text" name="edNama" size="30" value="<? echo $nama
?>"></td>
</tr>
<tr>
<td><b>Alamat</b></td>
<td><input type="text" name="edAlamat" size="50" value="<? echo
$alamat ?>"></td>
</tr>
<tr>
<td><b>Jenis kelamin:</b></td>
<td>
<table width="100%">
<tr>
<td width="50%"><input type="radio" name="rdJK" value="L"
<? echo ($jenkel=="L" ? "selected" : "") ?>>Laki-laki</td>
<td width="50%"><input type="radio" name="rdJK" value="P"
<? echo ($jenkel=="P" ? "selected" : "") ?>>Perempuan</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top"><b>Agama:</b></td>
<td>
<table width="100%">
<tr>
<td width="35%"><input type="radio" name="rdAgama" value="1"
<? echo ($agama=='1' ? 'checked' : '') ?>>Islam</td>
<td width="35%"><input type="radio" name="rdAgama" value="3"
<? echo ($agama=='3' ? 'checked' : '') ?>>Katolik</td>
<td width="30%"><input type="radio" name="rdAgama" value="5"
<? echo ($agama=='5' ? 'checked' : '') ?>>Budha</td>
</tr>
<tr>
<td><input type="radio" name="rdAgama" value="2"
<? echo ($agama=='2' ? 'checked' : '') ?>>Kristen</td>
<td><input type="radio" name="rdAgama" value="4"
<? echo ($agama=='4' ? 'checked' : '') ?>>Hindu</td>
<td><input type="radio" name="rdAgama" value="5"
<? echo ($agama=='5' ? 'checked' : '') ?>>Lain-lain</td>
</tr>
</table>
</td>
</tr>
<tr>
<td><b>Tempat lahir</b></td>
<td><input type="text" name="edTempat" size="20" value="<? echo
$tempat ?>"></td>
</tr>
<tr>
<td><b>Tanggal lahir</b></td>
<?
$tgl=substr($tglLahir,8,2);
$bln=substr($tglLahir,5,2);
$thn=substr($tglLahir,0,4);
?>
<td>
<input type="text" name="edTanggal" size="5" value="<? echo $tgl ?>">
- <input type="text" name="edBulan" size="5" value="<? echo $bln ?>">
- <input type="text" name="edTahun" size="10" value="<? echo $thn
?>">
(Tgl - Bln - Thn)</td>
</tr>
</table>
<p>
<input type="submit" value="Submit" name="simpan">
<input type="reset" value="Reset" name="reset"></p>
</form>
</body>
</html>
Alur program untuk editmhs.php adalah:
1. Mula-mula kita cek dulu, apakah atribut URL yang bernama “nim” (dimasukkan ke variabel
$NIM) memiliki nilai. Bila tidak maka program dihentikan. Atribut ini didapat dari pemanggilan
link yang ada di file dispmhs2.php yang baru anda tambahkan di atas.
2. Bila ada maka dilakukan pencarian data mahasiswa menurut NIM yang ada di $NIM. Bila
ditemukan (dicek dengan mysql_num_rows yang tidak bernilai 0) maka record diambil dengan
mysql_fetch_row. Berbeda dengan yang dijelaskan pada 11.4, kali ini setiap field langsung
dimasukkan ke dalam variabel dengan menggunakan perintah list. Yang mengikuti list adalah
nama variabel yang menerima data.
3. Selanjutnya semua nilai dimasukkan ke komponen yang serupa dengan di entrymhs.php melalui
atribut value (untuk komponen text), selected (untuk komponen select) dan checked (untuk
komponen radio). Perhatikan penggunaan inline selection untuk meringkas penulisan if. NIM
tidak diedit sehingga nilainya dimasukkan ke komponen hidden.
4. Bila submit ditekan maka semua isian akan dikirim ke simpaneditmhs.php sesuai dengan yang
didefinisikan di form.
Sekarang kita buat program untuk menyimpan semua isian. Anda bisa mengcopy dari
simpanentrymhs.php dan simpanlah filenya dengan nama simpaneditmhs.php.
<html>
<head>
<title>Proses edit data mahasiswa</title>
</head>
<body>
<?
// dapatkan semua isian dari page sebelumnya
$NIM=$_GET['edNIM'];
$nama=$_GET['edNama'];
$alamat=$_GET['edAlamat'];
$agama=$_GET['rdAgama'];
$jenkel=$_GET['rdJK'];
$tempat=$_GET['edTempat'];
$tanggal=$_GET['edTanggal'];
$tahun=$_GET['edTahun'];
$bulan=$_GET['edBulan'];
// tentukan tanggal
$tglLahir=$tahun."-".$bulan."-".$tanggal;
require("koneksi.php");
mysql_select_db($db, $koneksi);
// tentukan query
$query="UPDATE mahasiswa SET NAMA='$nama', ALAMAT='$alamat',
AGAMA='$agama', JENISKELAMIN='$jenkel', TEMPATLAHIR='$tempat',
TANGGALLAHIR='$tglLahir' WHERE NIM='$NIM'";
// lakukan proses query
$hasil=mysql_query($query) or die('Kesalahan pada query: '.$query);
// Tampilkan pesan proses edit telah selesai
mysql_close($koneksi);
?>
<center>
<p><font size=4><b>Proses edit berhasil!</b></font>
<p><a href="dispmhs2.php">Klik di sini untuk kembali</a></p>
</center>
</body>
</html>
Alur program untuk simpaneditmhs.php adalah:
1. Pertama kali semua isian diambil dari URL dan dimasukkan ke variabel masing-masing. Juga
disusun tanggal lahir sesuai format MySQL.
2. Selanjutnya disusun query untuk update data berdasar NIM dan eksekusinya. Bila berhasil
maka ditampilkan pesan sukses.
3. Bila link yang disediakan diklik, maka yang ditampilkan adalah file dispmhs2.php kembali,
dengan data yang baru.
11.7. Menghapus data
Sama halnya dengan mengedit, ada dua hal yang dilakukan: (1) menentukan record yang
akan dihapus, (2) menghapus record yang dipilih. Penentuan record yang akan dihapus juga
dilakukan dengan memanfatkan tabel untuk menampilkan data sebelumnya. Ubahlah tabel pada
dispmhs2.php dengan menambahkan sebuah kolom baru lagi di kanan. Tampilan halaman
setelah diubah kira-kira seperti ini:
Buka file dispmhs2.php, kemudian tambahkan bagian yang tercetak tebal.
...
<td width="14%"><div align="center"><b>Tgl lahir</b></div></td>
<td>/td>
<td>/td>
</tr>
...
<td>
<div align="center">
<a href="editmhs.php?nim=<? echo $arData['NIM'] ?>">Edit</a>
</div></td>
<td><div align="center">
<a href="deletemhs.php?nim=<? echo $arData['NIM'] >">Del</a>
</div></td>
</tr>
...
Link pada kolom terkanan akan membuka file deletemhs.php dengan menyertakan NIM yang
dipilih pada URLnya. Berikut ini kode untuk deletemhs.php. Kodenya mirip dengan yang ada di
editmhs.php, jadi copykan dari file tersebut untuk mempercepat. Bagian yang bertanda tebal adalah
bagian yang diubah atau ditambahkan.
<html>
<head>
<title>Hapus data mahasiswa</title>
</head>
<body>
<?
// KODE PHP SAMA DENGAN YANG ADA DI EDITMHS.PHP
?>
<b>HAPUS DATA MAHASISWA</b><hr>
<form name="fDelmhs" method="GET" action="prosesdelmhs.php">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="30%"><b>NIM</b></td>
<td width="70%">:&nbsp;<? echo $NIM ?>
<input type="hidden" name="edNIM" value="<? echo $NIM ?>"></td>
</tr>
<tr>
<td><b>Nama</b></td>
<td>:&nbsp;<? echo $nama ?></td>
</tr>
<tr>
<td><b>Alamat</b></td>
<td>:&nbsp;<? echo $alamat ?></td>
</tr>
<tr>
<td><b>Jenis kelamin</b></td>
<td>:&nbsp;
<? if ($jenkel=="L")
{ echo "Laki-laki"; }
elseif ($jenkel=="P")
{ echo "Perempuan"; }
?></td>
</tr>
<tr>
<td><b>Agama</b></td>
<td>:&nbsp;
<? if ($agama=="1")
{ echo "1-Islam"; }
elseif ($agama=="2")
{ echo "2-Kristen"; }
elseif ($agama=="3")
{ echo "3-Katolik"; }
elseif ($agama=="4")
{ echo "4-Hindu"; }
elseif ($agama=="5")
{ echo "5-Budha"; }
else
{ echo "6-Lainnya"; }
?></td>
</tr>
<tr>
<td><b>Tempat lahir</b></td>
<td>:&nbsp;<? echo $tempat ?></td>
</tr>
<tr>
<td><b>Tanggal lahir</b></td>
<?
$tgl=substr($tglLahir,8,2);
$bln=substr($tglLahir,5,2);
$thn=substr($tglLahir,0,4);
?>
<td>:&nbsp;<? echo $tgl."-".$bln."-".$thn; ?></td>
</tr>
</table>
<p><input type="submit" value="Hapus" name="hapus"></p>
</form>
</body>
</html>
Alur program untuk deletemhs.php mirip dengan editmhs.php yaitu:
1. Mula-mula dicek dulu apakah atribut URL yang bernama “nim” (dimasukkan ke variabel $NIM)
memiliki nilai. Bila tidak maka program dihentikan.
2. Bila ada maka dilakukan pencarian data mahasiswa menurut NIM yang ada di $NIM. Bila
ditemukan maka record diambil dengan mysql_fetch_row dan dimasukkan ke dalam variabel
dengan menggunakan perintah list.
3. Selanjutnya semua nilai ditampilkan di layar untuk konfirmasi
4. Bila tombol hapus ditekan maka semua isian akan dikirim ke prosesdelmhs.php sesuai dengan
yang didefinisikan di form.
Sekarang kita buat program untuk menghapus record yang dipilih. Anda bisa mengcopy dari
simpaneditmhs.php atau mengetiknya dari awal:
<html>


0 komentar:

Posting Komentar