P. 1
Aplikasi Perpustakaan Dengan PHP MySQL

Aplikasi Perpustakaan Dengan PHP MySQL

5.0

|Views: 15,389|Likes:
Dipublikasikan oleh deeta8

More info:

Published by: deeta8 on Jan 17, 2010
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

10/02/2015

pdf

text

original

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"; $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. // username

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/FORMDATA 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 masingmasing 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 $_FILES[‘userfile’][name’] $_FILES[‘userfile’][‘type’] $_FILES[‘userfile’][‘size] $_FILES[‘userfile’][‘error’] Keterangan Menampilkan nama file Menampilkan tipe file Menampilkan ukuran file dalam bytes Menampilkan kode error untuk upload

4

Kode errror upload Nomer Kode 0 1 Keterangan UPLOAD_ERR_OK (upload berhasil) UPLOAD_ERR_INI_SIZE(ukuran file terlalu besar dari batas upload php ini) UPLOAD_ERR_FORM_SIZE(ukuran file terlalu besar dari batas upload MAX_FILE_SIZE) UPLOAD_ERR_PARTIAL(hanya sebagian yang di upload UPLOAD_ERR_NO_FILE(tidak ada file yang di upload)

2

3 4

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 <tr>

align="center"

border=" 1" bordercolor="#dedede">

<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 buku</th><th>Edit</th> </tr> <? include ("server l.php"); $sql = "select buku.isbn, buku.judul pengarang.nama_pengarang, buku.gambar from buku, pengarang Pengarang</th><th>Cover

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 macammacam -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\" value=\ "$row[isbn] \">

name=\"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're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->