You are on page 1of 31

Pada bab-bab awal, Anda sudah membuat database sederhana untuk aplikasi

perpustakaan. Sekarang, akan membahas aplikasi perpustakaan tersebut secara


lengkap. Aplikasi ini hanya sebagai pengantar. Harapan penulis, pembaca dapat
menerapkan materi dalam buku ini clan mampu membuat aplikasi lain yang lebih
kompleks. Untuk itu, disarankan untuk juga membaca buku karya penulis yang
berjudul Membangun Aplikasi Berbasis PHP clan MySQL,
Database yang telah kita buat berguna untuk menyimpan data buku. Data buku
tersebut berisikan informasi mengenai ISBN, judul, pengarang, gambar buku clan
juga foto pengarang. Sebelum mengisi tabel buku, Anda harus mengisi tabel
pengarang terlebih dahulu.
Kemudian, sebelum terhubung ke MySQL, buatlah file terpisah bernama
server.php untuk disisipkan.. Isinya ialah script untuk terhubung ke MySQL.
8erikut ini detail script yang akan digunakan:

server.php

<?

$host = "localhost"; // hostname mysql $user = "syaf'u"; // username


$pass = "123456789"; // password
$db = "php"; // database yang digunakan

$koneksi = mysql_ connect ($host,$user,$pass) or die


("Tidak dapat terhubung ke mysql");
mysql select db($db);
<?

User bernama syafii adalah user yang mampu melakukan perintah insert, delete
clan update, sedangkan user bernama iftah adalah user yang hanya mampu
melakukan perintah insert. Oleh karena itu, buat satu file lagi, semacam
server.php, tetapi untuk user iftah.

server 1. php
<?
$host = "localhost"; // hostname mysql
$user = "iftah"; // username
$pass = "123456789"; // password
$db = "php"; // database yang digunakan

$koneksi = mysql connect ($host,$user,$pass) or die ("Tidak dapat terhubung ke


mysql");
mysql _select _db($db);

<?

1
Simpan file tersebut clan jadikan satu folder saja. Perlu diingat bahwa penggunaan
file untuk disisipkan (include) ke dalam suatu halaman web bertujuan memperkecil
jumlah baris halaman, mengurangi penumpukan baris perintah clan juga untuk
mempermudah administrasi terhadap perubahan data-data yang terhubung dengan
user. ladi, untuk mengubah password dari user bernama syafii, Anda tidak perlu
membuka file satu per satu melainkan tinggal mengubahnya pada file server.php.
Hal itu bisa dilakukan karena semua halaman web akan menyisipkan file
server.php. Dengan alasan efisiensi inilah maka kita perlu memecah program
hingga menjadi bagian yang terkecil.

MembuaF Form Input untuk Tabel Pengarang


Dalam membuat form input untuk tabel pengarang, Anda dapat menggunakan
textpad atau editor lain. Form pengisian tabel pengarang memiliki dua jenis
variabel. Variabel pertama yaitu untuk mengirim nama pengarang sedangkan
variabel terakhir untuk mengirim foto pengarang. Teknik pengiriman foto sama
seperti pengiriman attachment. Berikut ini source code dari form input pengarang:

input_pengarang.html
<html>
<head>
<title>Masukkan Data Pengarang</title>

</head>
<body>
<h3 align="center">Form Data Pengarang</h3> <form method="post"
action="input_pengarang.php" ENCTYPE="MULTIPART/FORM-DATA">
<pre>
Masukkan Nama Pengarang : <input type="text"
name='°nama_pengarang">
<input type="hidden" name="MAX FILE SIZE" value="30000">
Masukkan Foto : <input type="file"
name="foto">
<input type=" submit" value= "Kirim">

</pre>
</form>
</body>
</html>
Karena form tersebut akan digunakan untuk mengirim file yang bisa saja
mempunyai banyak format, misalnya file gif, jpg atau jpeg atau file

2
gambar yang lain, maka perlu ditambahkan atribut ENCTYI'E="MULTIPART/FORM-
DATA pada tag <form>. Arti dari baris perintah:

<input type="hidden" name="MAX_FILE_SIZE" value="30000">

adalah untuk membatasi ukuran file dalam byte yang di-upload. Nama pengarang
disimpan dalam variabel nama_pengarang clan foto pengarang disimpan dalam
variabel bernama foto.

Masukan Data Pengarang


Gambar 5.1 input_pengarang.html

Hanya dengan mengetikkan baris perintah:

<input type="file" name="foto">

secara otomatis akan tercipta textbox beserta tombol Browse...

Isi file input_pengarang.php adalah script untuk memasukkan data ke dalam database
beserta file foto yang sudah di-upload dan dikopi ke suatu folder. Namun, yang
disimpan ke dalam database hanya nama file. Sebelumnya, Anda perhatikan contoh
dan proses upload berikut:
Upload.html>

<html>
<head>

<title>Contoh Upload</title>

</head>
<body>
<h3 align=”center”>contoh Upload</h3>
<form method=”post”action=”upload.php”
ENCTYPE=”MULTIPART/FORM-DATA”>
<pre>
<input type=”hidden” name=”MAX_FILE_SIZE”
VALUE=”30000”>
Masukkan Foto : <input type=”file”
name=”foto”>
<input type=”submit”value=”Kirim”>

</pre>
</form>
</body>
</html>

3
File pemeroses upload.php merupakan inti dari proses upload. PHP versi 5
mempunyai fungsi khusus untuk menangani proses upload.

Upload.php

<?

Include (“server.php”):

If (SHTTP_POST_FILES[‘foto’]) {
echo “Nama File : “.$_FILES[‘foto’][‘nama’];
echo “<br>”;
echo”Type file :”.$_FILES[‘foto’][‘type’];
echo “<br>”;
echo “Ukuran File
“.round(($_FILES[‘foto’][‘size’]/1024)).”Kb”;
echo “<br>”;
echo “Nama file temporary
“.$_FILES[‘foto’][‘tmp_name’];
echo”<br>”;
echo “Kode error: “.$_FILES[‘foto’][‘error’];
copy($HTTP_POST_FILES[‘foto’][‘tmp-name’]
“image/”.$_FILE[‘foto’][‘name’]);

?.

File yang anda upload membawa 5 macam variable cara penanganan masing-
masing variable sama dengan penanganan array. Berikut ini daftar lengkap fungsi
php dalam menangani variable upload . Perlu diperhatikan bahwa contoh di atas
adalah file yang akan di uplod dan disimpan ke dalam variable $foto.

Tabel variabel upload

Variabel Keterangan

$_FILES[‘userfile’][name’] Menampilkan nama file

$_FILES[‘userfile’][‘type’] Menampilkan tipe file

$_FILES[‘userfile’][‘size] Menampilkan ukuran file dalam bytes

$_FILES[‘userfile’][‘error’] Menampilkan kode error untuk upload

4
Kode errror upload

Nomer Kode Keterangan

0 UPLOAD_ERR_OK (upload berhasil)

1 UPLOAD_ERR_INI_SIZE(ukuran file terlalu besar dari batas


upload php ini)

2 UPLOAD_ERR_FORM_SIZE(ukuran file terlalu besar dari batas


upload MAX_FILE_SIZE)

3 UPLOAD_ERR_PARTIAL(hanya sebagian yang di upload

4 UPLOAD_ERR_NO_FILE(tidak ada file yang di upload)

include ("server. php");

$pengarang= $ POST['nama_pengarang'];
$gambar = $ FILES['foto']['name'];
if((!empty($pengarang)) and ($ FILES['foto']['error']
__ "0„))
{

mysql_query ("insert into pengarang values (",'$pengarang','$gambar')");


copy($HTTP POST FILES['foto']['tmp name'],
"images/". $ FILES['foto']['name']);
header ("location:thanks. html");

} else echo "Variabel kosong";


} else echo "Fatal error";
<?

Baris perintah:
if (($HTTP POST_FILES['foto']) and
($ POST['nama_pengarang']))

digunakan untuk memeriksa apakah variabel foto sudah di-upload. Untuk itu,
digunakan $HTTP POST FILES['foto']. Pengiriman variabel nama_pengarang
diperiksa menggunakan method=post dengan perintah $ POST['nama_pengarang'].
Terkadang, kita harus memeriksa asal dan proses kedatangan setiap variabel.
Dengan demikian, aplikasi yang kita buat menjadi semakin aman.

$pengarang= $ POST['nama_pengarang'];
$gambar = $ FILES['foto']['name'];

5
if((!empty($pengarang)) and ($ FILES['foto']['error'] )
==”0”))

Baris perintah di atas berguna untuk memeriksa apakah variabel $


POST['nama_pengarang'] sudah ada isinya atau diinisialisasi dan tidak kosong.
Kemudian juga, $ FILES['foto']['error'] ="0") memeriksa apakah file yang diupload
tetapi mempunyai kode error = 4 juga sukses.

Setelah memeriksanya satu per satu maka langkah selanjutnya iatah


memasukkannya ke dalam database.

mysql_query ("insert into pengarang values (",'$pengarang','$gambar')");

isi tanda petik kosong pada field kode_pengarang karena tanpa Anda isi pun, rekord
akan terisi secara otomatis. Kemudian, setelah nama file ($gambar) dimasukkan ke
dalam database, file tersebut dikopi ke dalam folder bernama images.

copy($HTTP POST FILES['foto']['tmp name'], "images/ ".$_FILES['foto'] ['name']);

Setelah data dimasukkan maka akan memanggil file thanks.html. Untuk file
thanks.html, Anda dapat membuat halaman web yang berisi ucapan terimakasih
saja atau data telah dimasukkan dan juga link untuk mengisi lagi,

thanks.html

<html>

<head><title>Data Sudah dimasukkan</title> </head>


<body>

Terima kasih
</body>
</html>

6
Membuaf Form Input untuk Tabel Buku
input untuk label buku memang sedikit berbeda,Pembuatan for Perbedaannya
ialah bahwa form yang akan dibuat ini juga mengakses , Field pada tabel buku terdiri
dari ISBN, judul, tabel pengarangaran dan gambar. Variabel untuk field
kode_pengarang diambil dari tabel pengarang sehingga form yang akan dibuat
mempunyai korelasi langsung dengan tabel pengarang. Pada form pengisian data
buku, sistem pemasukan 9kan data untuk kode_pengarangtag <select> sehingga user
dapat memilih nama pengarang berdasarkan data yang dimasukkan. Oleh karena itu,
tabel pengarang haru s diisi terlebih dahulu seperti yang ditunjukkan pada contoh
sebelumnya. Berikut ini source code dari form inpu buku:

form input.php

<html>
<head><title>Input Data Buku </title>
</head>
<body>
<h3 align="center">Masukkan data buku </h3>

<form method="post" action="input buku.php"


ENCTYPE="MULTIPART/FORM-DATA">
<table align= "center">
<tr>
<td>Masukkan kode ISBN </td>
<td>: <input type="text" name="isbn"
maxlength=" 11 " size=" 11 "></td>
</tr>
<tr>
<td>Masukkan Judul Buku </td>
<td>: <input type="text" name='Judul" maxlength="50"
size= "50'°></td>
</tr> <tr>
<td>Pilih Nama Pengarang </td>
<td>: <select name= "kode_pengarang">
<option value= "">--Pilih Nama Pengarang-
<?
include ("server l.php");

$sql = "select kode_pengarang,nama_pengarang pengarang";


$query = mysql_query ($sql,$koneksi); while ($row=mysql fetch
array($query))
{

echo "<option
value=\ "$row[kode_pengarang] \ ">$row[nama_pengara ng]„,
}
<?
</select></td></tr>
<input type="hidden" name="MAX_FILE SIZE"

7
value ="30000">
<tr>
<td>Masukkan Cover buku</td><td>: <input
type="file" name="foto"></td>
<tr>
<td><input type=submit" value=" Kirim"><input type="reset' value=" Hapus"></td>
</tr>
</form>
</body>
</html>

Secara umum, pengisian data buku hampir sama dengan pengisian data pengarang,
yaitu proses upload file dengan batasan upload 30000 byte, Textbox untuk isian
ISBN mempunyai panjang karakter sebanyak 11 (maxlength-" 11 ") dan nama
variabelnya yaitu $isbn. Variabel $judul berisi judul buku yang mempunyai panjang
karakter sebanyak 50 (maxlength-"50"). Agar mudah dalam memahami cara mengisi
variabel pengarang, perhatikan contoh berikut:

<select name ="kode_pengarang">

<option value= "">--Pilih Nama Pengarang-<?


include ("server l.php");

$sql = "select kode_pengarang,nama_pengarang from pengarang";


$query = mysql_query ($sql,$koneksi);
while ($row=mysql fetch array($query))
{
echo "
<option
value=\ "$row[kode_pengarang] \">$row[nama_pengara;

</select>

8
Variabel yang akan
bernama kode_pengarang (<select name="kode_pengarang">). Kemudian penulis
akan menyisipkan file serverl.php karena halaman web ini hanya digunakan untuk
menampilkan data atau dengan kata lain hanya menggunakan perintah SQL select.
Untuk itu, penulis menggunakan koneksi ke database yang hanya memiliki
kemampuan tersebut.

dikirim
Setelah itu, query ke dalam database dilakukan.

$sql = "select kode_pengarang,nama_pengarang from pengarang";


$query = mysql_query ($sql,$koneksi);

Terkadang, untuk menampilkan semua field ke dalam database, orang jarang sekali
menyebutkan nama field. Orang lebih suka menggunakan tanda * (asterik) untuk
menginisialisasi pemanggilan semua field. Padahal, query dengan penyebutan nama
field mempunyai efisiensi yang lebih tinggi daripada tanda *. Nah, selanjutnya adalah
menampilkan data hasil query ke dalam halaman web.
while ($row=mysql fetch array($query))
{
echo "

<option

value= \"$row[kode_pengarang] \">$row[nama_pengarang;

Penggalan baris perintah di atas merupakan inti dari output gambar 5.7. Yang
ditampilkan ke dalam halaman web ialah nama_pengarang, sedangkan yang
dimasukkan ke dalam database ialah kode_pengarang. Ketika user memilih
pengarang bernama M Syafii maka data yang dimasukkan ialah kode_pengarang
yang dimiliki oleh nama_pengarang=M Syafii. Penggunaan file upload sekiranya
sudah dibahas pada bagian sebelumnya clan secara teknis sama dengan form
pengisian pengarang. Gambar 5.8 di bawah ini merupakan output dari file form
input.php.

File pemroses form input.php ialah input buku.php. File input_buku.php mempunyai
source code yang tidak jauh berbeda dari file input_pengarang.php.

9
input _buku.php

<?

if (($HTTP POST FILES['foto']) and


($ POST['kode_pengarang'J) and ($ POST['isbn'])
and ($ POST[ judul']) )
{

include ("server.php");

$kode_pengarang= $ POST['kode_pengarang'];
$gambar = $ FILES['foto']['name'];
$isbn = $ POST['isbn'];
$judul = $ POST['judul'];

if((!empty($kode_pengarang)) and
($-FILES ['foto']['error'] __ "0") and (!empty($isbn)) and
(!empty($judul)))
{
mysql_query ("insert into buku values
('$isbn','$judul','$kode_pengarang','$gambar') ") ;

copy($HTTP POST FILES['foto'J['tmp name'],


"images/". $ FILES['foto']['name']};

header ("locationthanks. html");


}
else
echo "fatal error”:

?>

Perintah pertama berguna untuk memeriksa apakah variabel foto


(($HTTP_POST_FILES[‘foto’]), variabel kode_pengarang ($_POST[‘isbn’] dan
judul($_POST[‘kode_pengarang’]),variabeisbn ($_POST[‘isbn’])dan judul
($_POST[‘judul’]) telah benar-benar dikirim menggunakan method=post jika tidak
menggunakan method=post atau method=get atau langsung memanggil file
input_buku php maka akan tampil pesan.
Echo “fatal error”;

Sesudah itu dilakukan pengecekan lagi apakah variabel –variabel tersebut


nilainya tidak kosong atau belum diisi tetapi sudah dikirim dengan method=post
Include (“server.php”);
$kode_pengarang =$_POST[‘kode_pengarang’];
$gambar=$_FILES[‘foto’][name’];
$isbn=$_POST[‘isbn’];
$judul=$_POST[‘judul’];

10
If((!empty($kode_pengarang))and
($_FILES[‘foto’][‘error’]==”0”)and (tempty($isbn))and (!empty($judul)))
{

valid clan mengirimkannya. Hal semacam ini sering penulis temui pada buku tamu
sebuah website yang menggunakan validasi dengan javascript. Untuk mengatasinya,
Anda dapat menyimpan halaman form pengisian dan menghapus javascript. Untuk
action, arahkan kepada URL lengkap misalnya action=http://www.url.com/input
bukutamu.php. Nah, sebagai antisipasi tindakan merugikan yang mungkin terjadi,
lakukan validasi atau pengecekan pada saat form dikirim, bukan pada saat akan
dikirim, dengan javascript.
Kembali ke penggalan baris perintah di atas. Untuk memeriksa apakah variabel sudah
diisi atau belum, Anda dapat menggunakan fungsi empty(). Jika masih ada variabel
yang kosong, akan tampil pesan:

echo "Variabel kosong";


Setelah pemeriksaan sudah Anda lakukan maka dapat dipastikan data yang akan
dikirim ke dalam database ialah data valid,
mysql_query ("insert into buku values ('$isbn','$judul','$kode_pengarang','$gambar') ")
;
Perintah di atas berguna untuk memasukkan data ke dalam database.
Untuk mengopi file gambar ke dalam folder images, gunakan perintah:

copy($HTTP POST FILES['foto']['tmp name'], Images/'.$ FILES['foto']['name']);


Sekarang, untuk memeriksa 2 file yang sudah dibuat di atas, langkah berikut ini:
Pertama, isi data pengarang.

Menampilkan Data Pengarang

Setelah membuat form pengisian untuk memasukkan data ke dafam database,


selanjutnya ialah menampilkan data ke dalam halaman web. lika sebelumnya Anda
menggunakan PHPMyAdmin, sekarang Anda dapat membuat halaman web yang
berfungsi untuk melihat isi suatu tabel. Data yang akan ditampilkan juga memuat
foto. Penulis ingatkan kembali bahwa yang disimpan di dalam database ialah nama
file saja clan kemudian dikopi pada folder images. File tersebut akan ditampilkan
Berikut ini source code file untuk melihat rekord pada tabel pengarang.
lihat_pengarang.php

<html>

<head><title>Lihat Data Pengarang</title>

</head>
<body>
<h3 align= "center">Lihat Data Pengarang</h3>

11
<table align="center" border=" 1" bordercolor="#dedede">
<tr>

<th>Nama Pengarang</th><th>Foto</th>

</tr>
<?

include ("server l.php");

$sql = "select nama_pengarang,foto

from pengarang";
$query = mysql_query ($sql,$koneksi); while ($row=mysql fetch
array($query))
{
echo "
<tr>
<td>$row[nama_pengarang]</td>
<td><img src=\"images/$row[foto]\"></td>
</tr>";
}
<?
</table>
</body>
</html>

Penulis menggunakan file serverl.php karena hanya digunakan untuk melihat rekord
dan menampilkannya. Cara menampilkan tidak terlalu
V-APLIKASI PERPUSTP
sulit, yaitu hanya perhatikan ialah
<td><img src=\"images/$row[foto]\"></td>

Variabel $row[foto] menghasilkan output nama file, sedangkan file tersebut


sudah dikopi dan diletakkan pada folder images. Oleh karena itu, untuk
memanggilnya digunakan path lengkap, yaitu <img src=\ "images /$row[foto] \">.

Output yang dihasilkan seperti gambar 5.13 di atas. Isi data pengaran sebanyak
mungkin. Pada file lihat_pengarang.php, terdapat sat kekurangan. Jika file dari foto
tidak terdapat di dalam folder image~ halaman web akan menampilkan tampilan
seperti:
Litrai Data Fengarang - Microsoft Internet Expl:.:
hktp:fjlocalhostJphpf6ab°l°205flihat_pengarang,php v
Gambar 5.14 File tidak dapat ditampilkan

Sekarang, bagaimana cara memeriksanya? Sebelum gambar ditampilkar periksa


dahulu keberadaan file gambar tersebut. Jika file tersebut ada c folder images maka
gambarnya tampil, dan jika tidak, akan tampil pesa error.

12
<html>

<head><title>Lihat Data Pengarang< jtitle>

</head>
<body>
<h3 align="center">Lihat Data Pengarang</h3>
<table align= "center" border=" 1"
bordercolor="#dedede">
<tr>

<th>Nama Pengarang<Jth><th>Foto< jth> </tr>


<?

include ("server l.php");


$sql = "select nama_pengarang,foto from pengarang";
$query = mysql_query ($sql,$koneksi);
while ($row=mysql fetch array($query))
{
echo "
<tr>
<td>$row[nama_pengarang]< jtd><td>";

if (file-exists ("images/ $row[foto]"))

echo " <img src=\"irnages/$row[foto]

else
echo "<font color=\"red\">File tidak ada< /font>

</td>

</tr>";
}

?>

< /table>
</body>
</html>

13
File lihat_pengarang.php dengan file lihat_pengarangl.php hamp sama.
Perbedaannya terletak pada pemeriksaan file gambar. Unh pemeriksaan tersebut,
Anda dapat menggunakan fungsi file-exists().

if (file_exists("images/$row[foto]"))

Baris perintah di atas berguna untuk memeriksa apakah terdapat fi~ dengan alamat
lengkap di images/ $row[foto]. lika memang ac maka tampilkan file tersebut.
echo " <img src=\"images/$row[foto]\">";
Jika tidak, berikan pesan error.

echo "<font color=\"red\">File tidak ada</font>

echo “
<tr><td>$row[isbn]</td><td>$rowUudul]</td><td>$row[nama_pengarang]</td>
<td>";
if (file_exists("images/$row(gambar]"))

echo "<img src=\"images/$row(gambar]

else

echo "File tidak ada";

echo " </td></tr>";


}
<?
</table> Jumlah data <? echo mysql num rows($query); ?> </body>
</html>

Dalam menampilkan rekord yang terdapat dalam database, perhatikan perintah SQL
yang digunakan. Untuk menampilkan data hanya pada satu tabel jelas sangat mudah
bagi kita semua, tetapi tidak demikian saat menampilkan data dari 3 tabel yang memuat
relasi antartabel. Misalnya, pada setiap tabel selain primary key, juga terdapat foreign
key. Semua itu tergantung pada perintah SQL yang digunakan. Ada satu tips
sederhana dalam menampilkan data. Jika Anda ingin menampilkan data, yang harus
dilakukan ialah mencoba perintah SQL Anda pada PHPMyAdmin. Jalankan perintah
SQL tersebut pada link yang sudah disediakan oleh PHPMyAdmin. Kemudian jika
output yang ditampilkan sesuai dengan kehendak Anda, baru Anda lakukan dengan
teknik pemrograman atau membuat file PHP tersebut.
Perintah SQL untuk menampilkan data buku beserta nama pengarang ialah:

14
$sql = "select buku.isbn,
buku.judul.
pengarang.nama_pengarang,
buku.gambar from buku,pengarang
where
buku.kode_pengarang=pengarang.kode_pengarang

Sebaiknya perintah SQL tersebut Anda paste ke dalam PHPMyAdmin. Menurut


pengalaman penulis, akan sulit untuk menampilkan data ke dalam halaman web jika
perintah SQL yang Anda gunakan salah. Walau sintaks perintah SQL benar tetapi
output yang dihasilkan bisa saja tidak sesuai dengan keinginan Anda. Berikut ini
adalah cara mengopikan perintah SQL di atas. Buka PHPMyAdmin,
http://127.0.0.1/phpmyadmin. kemudian pilih database php. Klik link SQL.

Update
Proses update ialah proses memperbaharui data sesuai dengan kebutuhan
sekarang. Ada banyak cara untuk melakukannya. Misalnya, data ditampilkan
semua kemudian dicari yang kurang dan perlu diupdate, atau data dicari terlebih
dahulu dengan menggunakan fasilitas pencarian kemudian di-update. Pertama,
kita buat dengan cara yang mudah, yaitu data ditampilkan kemudian, dengan
menggunakan fasilitas link, menuju ke halaman form update.

lihat buku l .php


<html>

<head><title>Lihat Data buku</title> </head>


<body>

<h3 align="center">Daftar Buku Perpustakaan</h3> <table border=" 1"


bordercolor="#dedede" align="center">
<tr>

<th>ISBN</th><th>Judul</th><th>Nama Pengarang</th><th>Cover
buku</th><th>Edit</th> </tr>
<?

include ("server l.php");

$sql = "select buku.isbn,

buku.judul

pengarang.nama_pengarang,

buku.gambar from buku, pengarang

15
where

buku.kode_pengarang=pengarang.kode_pengarang
$query = mysql_query($sql,$koneksi);
while ($row=mysql fetch array($query))
{
echo " <tr><td>$row[isbn]</td><td>$rowUudul]</td><td>$r ow[nama_pengarang]
</td>
<td>";

if (file-exists ("images /$row(gambar]"))

echo "<img src=\"images/$row[gambar]

else

echo "File tidak ada";

echo "

</td>

// link yang ditambahkan <td>[<a


href--\"edit buku.php?id=$row[isbn]\">Edit</a>/</td
>
</tr>";
}
?>
th><th>Nama ~ku</th><th>Edit</th>
</table>

Jumlah data <? echo mysql num rows($query); ?>

</body>
</html>
Perhatikan link baru yang ditambah;
<td>[<a

href--\"edit buku.php?id=$row[isbn]\">Edit</a>]</td >

Untuk melakukan proses ini, harus dipahami bahwa update hanya berlaku pada 1
(satu) rekord untuk satu waktu. Jadi, Anda tidak bisa mengirim 2 variabel id
sekaligus pada file edit buku.php. Link di atas merupakan sebuah teknik pengiriman
variabel $row[isbn] untuk diproses pada file edit _buku.php. Dengan modal ISBN
inilah data akan di-update. Karena ISBN merupakan primary key, tidak akan ditemui
data kembar.

16
Perhatikan gambar 5.20. Ketika kursor diarahkan ke link edit maka t,' yang terbentuk
ialah http:/llocalhostlphp/bab%2( edit buku.php?id=9797310809. Arti dari link
tersebut ialah nomor IS 9797310809 akan dikirim ke file edit buku.php dan
id=97973108 artinya nilai variabel id ialah 9797310809.

edit buku.php
<html>

<head><title>Edit Data buku</title> </head>


<body>
<?

include ("server l.php");

$sq1 = "select buku.kode_pengarang,buku.isbn,

buku.judul,
pengarang, nama_pengarang,
buku.gambar from buku, pengarang
where
buku.kode_pengarang=pengarang.kode_pengarang
and
buku.isbn='$id'
$query = mysql_query($sql,$koneksi);
if (mysql num rows($query) == "0") echo "Jangan macam-
macam -macam";
else
{
echo "
<form method=\"post\" action=\"update buku.php\"
ENCTYFE=\"MULTIPART/FORM-DATA\">";
$row=mysql fetch array($query);

echo "

<h3 align=\ "center\ ">Daftar Perpustakaan< Jh3>


<h5 align=\"center\">ISBN : $row[isbn]</h5>

<table border=\"1\" bordercolor=\"#dedede\" align=\ "center\">

<tr>
<td>Judul</td>
<td><input type=\"text\" name=\'judul\"
value=\ "$row(j udul] \"
maxlength=\"50\" size=\"50\">< /td>

17
</tr>

<tr><td>Pengarang</td><td>";

$sql_pengarang "select
kode_pengarang,nama_pengarang $query_pengarang
$query _pengarang = mysql_query
($sql_pengarang,$koneksi);
echo "<select name=\"kode_pengarang\>”;
while
($row_pengarang=mysql fetch array($query_pengaran g))
{

if ($row_pengarang[kode_pengarang] $row[kode_pengarang])==

($row[kode-pengarang))
{

echo
value=\"$row_pengarang[kode_pengarang] \"
selected>$row_pengarang[nama_pengarang]";
}
else
{
echo value=\"$row_pengarang[kode_pengarang] \"

>$row pengarang[nama_pengarang]";

echo "</select></td></tr>";
echo "

</td></tr>

<tr> <td>Cover</td>

<td><input

name=\"cover\">*</td></tr>

<tr>
<input type=\"hidden\" name=\"cover asli\"

18
value=\"$row(gambar] \">
<input type=\"hidden\" name=\"isbn\"

value=\ "$row[isbn] \">

<td><input type=\"submit\" value=\"Update\">

<input type=\"reset\" value=\"Hapus\">

</td>
</tr>
</table>
</form>

Pilih Gambar jika ingin mengganti gambar yang lama. Jika Anda kosongi, gambar
yang lama tetap akan digunakan.

</body> < jhtml>

Terdapat banyak variabel yang harus pemroses, yaitu update buku.php.

$sql = "select buku.kode_pengarang,buku.isbn,


buku.judul,
pengarang.nama_pengarang,
buku.gambar from buku,
pengarang
where
buku.kode_pengarang=pengarang.kode_pengarang and
buku.isbn==$id

Inti dari perintah SQL di atas ialah menampilkan semua data yang dimiliki oleh
buku yang mempunyai isbn='$id'. Untuk menangani perubahan variabel $id
langsung pada address bar maka perlu adanya pemeriksaan apakah ada data
buku yang memiliki rekord isbn=$id.

$query = mysql_query($sql,$koneksi);

if (mysql num rows($query) == "0")


echo "Jangan macam-macam";

jika tidak ada data buku yang mempunyai isbn=$id maka dapat dipastikan bahwa
user telah menggantinya dari address bar. Program harus mampu mengatasi baris
perintah seperti di atas. langan lupa

19
bahwa proses update buku juga berlaku pada gambar atau cov sehingga format tag
<form> menjadi:

<form method=\"post\" action=\"update buku. ENCTYPE=\"MULTIPART/FORM -


DATA\">";
Untuk menampilkan judul dari proses update, penulis menggunakan

<h5 align=\"center\">ISBN : $row[isbn]</h5:

Mengapa harus menggunakan $row[isbn] dan bukan $id langsung? Jika kita
menggunakan $id maka apabila variabel 1 diganti melalui address bar, ia akan
mengikuti perubahan ti Tetapi, jika diisi $row[isbn] akan tampil ISBN dari buk
mempunyai isbn=$id,
<input type=\"teXt\" name=\' jt value=\"$row[judul \"
Value=\$row[judul]\”
maxlength=\"50\" size=\"50\">

Textbox di atas tetap menyertakan judul yang lama. lika ingin judul baru maka Anda
dapat menghapusnya langsung dari text mengisinya dengan yang baru.

$sql_pengarang = “select
kode_pengarang,nama_pengarang from pengarar
$query_pengarang = mysql_query
($sql_pengarang,$koneksi);

Perintah SQL di atas berguna untuk menampilkan kode_pengarang dan


nama_pengarang dari tabel pengararn tabel buku terdapat field kode_pengarang
yang akan dicocokkan kode_pengarang milik tabel buku. Untuk itu, digunakan
perintah bE

echo "<select name=\"kode_pengarang\


while
($row_pengarang=mysql fetch array($query_pengaran g))
{
if ($row_pengarang[kode_pengarang] ==
$row(kode_pengarang])
{
echo
value=\ "$row_pengarang[kode_pengarang] \"
selected>$row pengarang[nama_pengarang]";
}

else
{
echo
value= \ "$row_pengarang[kode_pengarang] \"
>$row pengarang[nama_pengarang]";
}

20
}

echo "</select>

Jika ada pengarang dengan kode_pengarang bernilai sama dengan


buku.kode_pengarang maka pilih nama pengarang. Sintaksnya:

echo "

<option value=\"$row_pengarang[kode_pengarang]\"
selected>
$row_pengarang[nama_pengarang]";
Dengan sintaks di atas, jika terdapat buku milik M Syafii maka saat diedit pada tag
<select> akan secara otomatis memilih nama M Syafii.

Variabel untuk cover baru bernama cover.

<input type=\"file\" name= \"cover\">

Ada beberapa variabel yang harus disimpan sebagai syarat untuk melakukan proses
update, yaitu:

<input type=l"hidden\" name= \"cover\">_asli

value= \"$row[gambar] \">

<input type= \"hidden\" name= \"sbn\”

value= \"$row[isbn] \">

Sesuai dengan namanya, cover asli ialah variabel yang berisi cover asli dari buku.
Jika cover dari buku tersebut di-update maka cover yang lama harus dihapus dari
folder images. Nah, untuk itu, cover asli harus disertakan agar pada file
update_buku.php, file lama dapat dihapus.

Syarat query ke dalam database adalah menggunakan ISBN.

update_buku.php
<? if (($ POST['kode_pengarang']) and ($ POST['isbn']) and ($ POST['judul']) and ($
POST['cover asli ]))
{
include ("server. php");

$kode_pengarang= $ POST['kode_pengarang'];
$gambar = $ FILES['cover']['name'];
$isbn = $ POST['isbn'];
$judul = $ POST['judul'];
name=\"cover asli\"

21
name=\"isbn\"

if((!empty($kode_pengarang)) and (!empty($isbn)) and (!empty($judul)))


{
if (($ FILES['cover']['error'] __ "0"))
{
mysql-query ("update buku set
judul='$judul',kode_pengarang='$kode_pengarang',gambar='$gambar'
where isbn='$isbn"');
copy($HTTP POST FILES['cover']['tmp name'], "images/". $
FILES['cover']('name']);
unlink ("images/'.$ POST['cover asli']);
}
else

if ($ FILES['cover']['error'] =="4")

{
mysql_query ("update buku set
judul='$judul',kode_pengarang='$kode_pengarang' where isbn='$isbn"');
}
header ("location:thanks. html");
} else echo "Variabel kosong";
} else
echo "Fatal error";

?>

Seperti biasa, pemeriksaan masih perlu dilakukan untuk mengetahui apakah


variabel dikirim melalui action=post.

if (($ POST['kode_pengarang']) and ($ POST['isbn']) and ($ POST[ judul']) and ($


POST['cover asli']))

mysql_query ("update buku set judul='$judul',kode_pengarang='$kode_pengarang'


where isbn='$isbn"');

Dalam melakukan proses update data, perlu dipertahankan keamanan data atau
variabel yang akan di-update karena jika Anda salah, efek yang ditimbulkan bisa
sangat fatal. Contoh sederhana ialah kesalahan dalam melakukan query. Berikut ini
pengalaman penulis ketika membuat kesalahan atau kurang memberikan statement
update:

22
mysql_query ("update buku set judul='$judul',kode_pengarang='$kode_pengarang'
");

Akibat perintah SQL di atas, semua data akan di-update sesuai dengan statement
tersebut. Artinya, Anda akan mempunyai data atau rekord yang sama. Letak
kesalahannya adalah tidak adanya klausa where sehingga perlu ditambahkan where
isbn='$isbn'. Proses update data memang sangat penting. Perlu diingat bahwa
kemudahan end-user dalam meng-update data atau rekord menjadi sangat utama
karena yang menjalankan aplikasi yang Anda buat bisa saja adalah orang yang tidak
mengerti pemrograman atau bahkan tidak mengerti komputer sama sekali. ladi,
buatlah sebuah form update yang banyak memberikan kemudahan.

Setelah selesai melakukan coding maka perlu dilakukan pengujian ulang terhadap
file-file yang sudah kita buat.

Pertama ialah memilih buku yang ingin diedit. Buka pada browser file lihat bukul.php.

Dari gambar di atas, tampak bahwa teknik injection tidak berpengaruh. Perhatikan
bahwa pada source code file edit buku.php terdapat sintaks:

<h5 align=\"centeri">ISBN : $row[isbn]</h5>

Penulis menampilkan ISBN bukan dari variabe! id melainkan dari hasil query ke dalam
database. Jika penulis menggunakan:

<h_5 a] ign=\"center\">ISBN : $id</h5>

maka akan tampii seperti:


Gambar 5.25 Perbedaan $row [isbn] dan $id
Kembali lagi ke inti pembahasan. Sekarang, silakan Anda meng-update data tersebut.
Misalnya, nama pengarang diganti dari M Syafii ke M Zainal A dengan cover tetap
clan tidak diganti.

Anda perhatikan pada gambar 5.30 di atas, perintah unlink memang berfungsi
untuk menghapus file. File migrasi+linux+copyl.jpeg merupakan cover buku
dengan ISBN 9797310809 clan karena cover diupdate maka fife tersebut harus
dihapus.
Selanjutnya ialah membuat proses update untuk tabel pengarang. Prosesnya sama
dengan update tabel buku karena juga terdapat proses upload.

lihat_pengarang2.php
<html>
<head><title>Edit Data Pengarang</title> <Jhead>
<body>

<h3 align= "center">Edit Data Pengarang</h3>

23
<table align=" center" border=" 1"
bordercolor="#dedede">
<tr>
<th>Nama
Pengarang</th><th>Foto< jth><th>Edit</th>

<head><title>Edit Data Pengarang</title> </head>


<body>
<?

include ("server l.php");

$sql = "select kode_pengarang,nama_pengarang,foto from pengarang


$query = mysql_query($sql,$koneksi);
while($rows=mysql_array($query))

{
echo

<tr>
<td>$row[nama_ Pengarang]</td><td>”:

If (file_exis[“images/$row[foto]”)){
Echo”<img scr=\”image/$row[foto]\”>;}
Else{
Echo “<font color=\”red\”>file tidak ada </font>”;}
Echo”
</td><td>]</td>

</tr>”;
}

</table>
</body>
</html>

Tidak banyak perubahan pada source code di atas Karena mengubah dari
file lihat_pengarang.php penulis hanya menambahkan link.

File edit_pengarang mempunyai source code yang hamper mirip dengan


edit_buku sehingga tidak sulit untuk memahaminya.Berikut ini source code
file update_pengarang.php

Update_pengarang.php

<?

24
If (($_POST[kode_pengarang “]]
($_post[‘nama_pengarang’])
And ($_POST[‘foto_asli’]))
{
Include(“server.php”);

$gambar=$_FILES[‘foto’][‘name’];
$kode_pengarang=$_POST[‘kode_pengarang’];
$nama_pengarang=$_POST’[nama_pengarang’];
If((!empty($kode_pengarang))
(!empty($nama_pengarang ))
{
If(($_FILES[foto’][error’]==”0”))
{
Mysql_query (“update pengarang set nama_pengarang=
$gambar Where kode_pengarang = $kode_pengarang “);

Copy ($HTTP_POST_FILES[‘foto’][tmp_name’]
“image/”$_FILES[‘foto_asli’]);
Unlink (“image/”.$_POST’foto_asli’]);
}
Else
If ($_FILES[‘foto’][error’] ==”4”)
{
Mysql_query (“update pengarang set nama_pengaarang= $nama
_pengarang =$nama_pengarang’ where
Kode_pengarang= $kode_pengarang”);
}
Header (“location:thanks.html”);

} else echo”variabel kosong “;

Else
Echo”Fatal error”;
?>

File update_pengarang juga mirip dengan file update buku.php. Semua itu penulis
lakukan semata-mata agar tidak perlu terlalu repot untuk mengetikkan ulang
perintah, melainkan tinggal memodifikasi dan menyimpannya dengan nama file yang
lain. Ouput updatie pengarang sama dengan update pada tabel buku. lika gambar
tidak diisi maka tetap gunakan gambar yang lama tetapi sebaliknya jika gambar diisi
maka gambar yang lama dihapus dari folder images.

Delete
Selain memperbaharui, kadangkala data juga perlu dihapus. Misalnya, terdapat data
transaksi dengan kesalahan penulisan dan kemudian transaksi tersebut di-update.

25
Jika pada halaman web yang menampilkan transaksi terdapat link untuk di-update
maka bisa saja terjadi korupsi di dalamnya atau terjadi update nilai transaksi dengan
Nat mengambil untung. Dalam kasus seperti itu, setiap transaksi yang memiliki
kesalahan harus memiliki link untuk delete, bukan update. ladi, pada menu transaksi
nanti terdapat 2 macam opPrasi, yaitu memasukkan data transaksi atau
menghapusnya. Dari contoh kasus tersebut, Anda harus mempelajari manipulasi
database terakhir, yaitu menghapus rekord.

Untuk menghapus rekord pada tabel buku dan pengarang secara teknis sama
dengan update. Hanya saja, perintah untuk delete lebih sederhana dan teknis
pemrogramannya juga lebih mudah. Kita awali dari tabel buku.

<html>

<head><title>Lihat Data buku</title> </head>


<body>

<h3 align="center">Daftar Buku Perpustakaan</h3> <table border=" 1"


bordercolor="#dedede" align= "center°'>
<tr>

<th>ISBN</th><th>Judul</th><th>Nama Pengarang</th><th>Cover
buku</th><th>Edit</th> </tr>
<?

include ("server l.php"); $sql = "select buku.isbn, buku.judul,


pengarang.nama_pengarang, buku.gambar from buku, pengarang where
buku.kode_pengarang=pengarang.kode_pengarang
$query = mysql_query($sql,$koneksi);
while ($row=mysql fetch array($query)) t

echo "
<tr><td>$row[isbn]</td><td>$row(judul]</td><td>$r ow[nama_pengarang] </td>
<td>";
if (file exists("images/$row[gambar]"))

echo "<img src=\"images/$row[gambar]

else

echo "File tidak ada";

echo " </td><td>[<a href=\"edit buku.php?id=$row[isbn]\">Edit</a>]


//tambahan link untuk delete [<a
href--\"delete buku.php?id=$row(isbn]\">Delete</a>]
</td></tr>";
</table>

26
Jumlah data <? echo mysql num rows($query); ?>

</body>
</html>

File lihat buku3.php sama dengan file lihat buku2.php. Penulis hanya
menambahkan link untuk delete saja.
[<a

Href=\"delete_buku.php?id=$row[isbn] \">Delete</a>]
Untuk menghapus gunakan field ISBN. Nanti pada file delete buku.php, data
dengan ISBN tersebut akan dihapus menggunakan perintah SQL.
delete buku.php

<?

include ("server. php");

$sql-gambar = "select gambar from buku where


isbn='$id"';
$query_gambar
mysql_query($sql-gambar, $koneksi);
$row = mysql fetch array($query-gambar);
// hapus file gambar

//hapus,_gambar = unlink ("images/". $row[gambar]);


$sql = "delete from buku where isbn='$id"';
$query = mysql_query($sql,$koneksi);
if (($query) and ($hapus-gambar))

header ("location: konfirmasi_hapus.php?pesan=Data $id Sudah dihapus");


else
header
("location: konfirmasi hapus.php?pesan=Data tidak dapat dihapus, cek isbn");
?>

Proses untuk menghapus rekord pada tabel buku juga melibatkan penghapusan file
gambar. Karena rekord pada tabel buku memuat file gambar maka ketika rekord
dihapus, file gambar tersebut juga harus dihapus dari folder images.

$sql-gambar = "select gambar from buku isbn='$id"';


$query-gambar mysql_query($sql-gambar,$koneksi); $row = mysql
fetch_array($queiMambar);
// hapus file gambar

27
$hapus-gambar = unlink (Images/". $row[gambar]);
where

$sql-gambar = "select gambar from buku where isbn='$id"';


$query-gambar mysql_query($sql-gambar,$koneksi); $row = mysql fetch
array($query-gambar);
// hapus file gambar
$hapus-gambar = unlink ("images/". $row[gambar]);
$sql = "delete from buku where isbn='$id"';
$query = mysql_query($sql,$koneksi);
if (($query) and ($hapus-gambar))
header ("location: konfirmasi hapus.php?pesan=Data $id Sudah dihapus");
else
header ("location:konfirmasi_hapus.php?pesan=Data tidak
dapat dihapus, cek isbn");
?>

Proses untuk menghapus rekord pada tabel buku juga melibatkan penghapusan file
gambar. Karena rekord pada tabel buku memuat file gambar maka ketika rekord
dihapus, file gambar tersebut juga harus dihapus dari folder images.

$sql-gambar = "select gambar from buku where


isbn='$id"';
$query_ gambar
mysql_query($sql-gambar,$koneksi);
$row = mysql fetch array($query-gambar);

// hapus file gambar


$hapus-gambar = unlink ("images/". $row[gambar]};

Bagian di atas ialah untuk menghapus gambar. Cara mendapatkan nama file tentunya
dengan melakukan query. Perlu diketahui bahwa untuk menghapus gambar, Anda
tidak dapat melakukannya setelah rekord dihapus• Penghapusan file gambar tidak
dapat dilakukan karena untuk mendapatkan file gambar, Anda harus tahu rekord file
tersebut. Jika gambar sudah dihapus maka rekord juga bisa dihapus.

$sql = "delete from buku where isbn='$id"';

$query = mysql_query($sql,$koneksi);

Pada proses penghapusan gambar dan rekord, pesan kesuksesan maupun


kegagalan akan selalu diberikan kepada user.

if (($query) and ($hapus_gambar))

header ("location: konfirmasi hapus.php?pesan=Data $id Sudah dihapus");


else

28
header
("location:konfirmasi hapus.php?pesan=Data ``tidak

dapat dihapus, cek isbn");

Buat file konfirmasi hapus.php yang isinya:

<?

echo $pesan;

?>
Urutan proses penghapusan rekord dan gambar secara jelas ditunjukkan pada contoh
berikut:
Pertama pilih rekord yang ingin dihapus.

Pencarian
Dalam satu bulan jika aplikasi yang dibuat benar-benar dimanfaatkan sesuai
fungsinya maka rekord yang terisi bisa mencapai ratusan atau bahkan ribuan. Untuk
menghapus satu rekord saja, Anda mungkin periu melihat seluruh isi rekord, baru
kemudian Anda klik link untuk menghapus. Namun, jika Anda ingin mencari rekord
dengan judul buku tertentu, tidak mungkin jika harus melihat seiuruh rekord
kemudian mencari yang sesuai satu per satu. Bila memahami perintah SQL dan
tahu bagaimana memanfaatkan perintah tersebut dalam dunia pembuatan aplikasi
web maka Vita dapat menggunakan mekanisme semacam search engine.
Pencariannya dapat dilakukan dengan menggunakan bermacam cara, misalnya
berdasarkan nama pengarang, judul buku atau juga berdasarkan field-field yang lain.
Semua itu akan mempermudah end-user dalam menggunakan program yang Anda
buat.
Pertama buat dahulu form untuk pencarian.

cari.html
<html> <head><title>Pencarian data</title></head> <body>
<h3 align="center">Pencarian Perpustakaan</h3>
<form method="post" action= "cari.php"> <table align="center">
<tr>
<td>Pencarian berdasarkan</td>
<td><select name="field">
<option value= "">-pilih jenis
Pencarian -
<option value="kode_pengarang">Kode -

Pengarang
<option value="nama_pengarang">Nama
Pengarang
<option value="judul">Judul Buku
<option value="isbn">ISBN
</select>

29
</td>
<td><input
name="keyword"></td>
<td><input
value="Search"></td>
</table> </form>
</body>
</html>
User nanti dapat memilih mekanisme pencarian berdasarkan nama pengarang,
judul, ISBN atau kode pengarang. Dengan memberikan fleksibilitas yang tinggi,
hal ini akan mempermudah pengoperasian. Setelah memilih jenis pencarian,
masukkan keyword pada textbox. Kemudian, data diproses di file cari.php clan
ditampilkan lengkap beserta link edit clan delete.

cari.php

<?
if ((empty($field)) or (empty($keyword))) {
echo "Cek kembali form pencarian Anda
else
{ ?> <html>
<head><title>Lihat Data buku</title>
</head>
<body>
<?

Include
("server l.php");
if ($field =_ "nama_pengarang")
{
$where = "where pengarang.nama_pengarang like '%$keyword%'
and buku.kode_pengarang=pengarang.kode_pengarang";
}
Else{
$where = "where pengarang.nama_pengarang like '%$keyword%' and
buku.kode_pengarang=pengarang.kode_pengarang";
}
sql = "select buku.isbn,buku.judul,buku.kode_
pengarang,buku.gambar,pengarang.nama_pengarang from buku, pengarang
$where";
$query=mysql_query($sql.$koneksi);
If(mysql_num_row($query)==”0”
Echo”pencarian dengan kata kunci ‘$keyword’ pada
‘$field’tidak ditemukan”;
Else
{
Echo “<h3 align=\”center\”>Daftar bukuperpustakan</h3>
Pencarian dengan kata kunci ‘$keyword’ pada filed ‘$field’ ditemukan
“.mysql_num_row($query).”<br>

30
<tabel boerder=\”1\” bordercolor=\”#dedede\” align=\”center\”>
<tr>
<tht>kode
Pengarang</th><th>ISBN</th><th>Judul</th><th>Nama
pengarang</th><th>Cover
Buku</th><th>edit</th>
</tr>
While ($row=mysql_fetch_array($query))

<table border=\”1\”
{
Echo”
<tr><td>$row[kode_pengarang]</td><td>$row[isbn]</td><td>$row[judul]
</td><td> $row[judul]</td><td>$row[nama_pengarang]
</td>
<td>
If(file_exists[“images/$row[gambar]”))
Echo”<img src=\”images/$rowgambar]\>”;
Else
Echo “file tidak ada”;
Echo”
</td><td>[<a
Href=\”edit_buku.php?id=$row[isbn]\”>Delete</a>]
</td></tr>”;
}
}
?>
</tabel>
</body>
</html>
<?
}
?>

31

You might also like