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%">: <? echo $NIM ?>
<input type="hidden"
name="edNIM" value="<? 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>Jenis
kelamin</b></td>
<td>:
<? if
($jenkel=="L")
{ echo
"Laki-laki"; }
elseif
($jenkel=="P")
{ echo
"Perempuan"; }
?></td>
</tr>
<tr>
<td><b>Agama</b></td>
<td>:
<? 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>: <? 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>: <? 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