Pada artikel-artikel sebelumnya, kita telah belajar cara menggunakan skrip PHP
untuk memproses informasi masukan dari pengguna atau pengunjung situs kita.
Anda sangat mungkin kini sudah cukup mahir membuat <form> dan
komponen-komponennya untuk dapat diisi oleh pengguna, termasuk juga skrip untuk
memproses dan menanggapi masukan dari pengguna. Sudah cukupkah?
Sampai sekarang kita belum pernah mempelajari cara menyimpan dan mengambil
kembali informasi dalam situs kita, padahal proses penyimpanan, modifikasi,
penghapusan, dan pembacaan data adalah hal yang nyaris tidak terpisahkan dari
pemrosesan data. Apa gunanya kita memproses data, jika kita tidak mampu
mengingatnya?
Saat inilah kita membutuhkan basis data (database). Inilah pahlawan kita
dalam mempermudah pemrosesan informasi. Mari kita mulai.
Pasangan Kita Tahun Ini
Salah satu faktor yang membuat PHP menjadi sangat populer sebagai bahasa skrip
dalam pembuatan aplikasi berbasis web dan situs web dinamis adalah karena bahasa
ini mendukung demikian banyak sistem basis data, mulai dari mSQL, MySQl, MS-SQL,
MS-Access, PostgreSQL, bahkan sampai Oracle. Fungsi-fungsi untuk mempermudah
pengaksesan berbagai jenis basis data tersebut tersedia lebih dari cukup pada
PHP, sehingga meringankan, menyederhakanan, serta mempercepat proses
pengembangan aplikasi berbasis web.
Dari sekian banyak kombinasi PHP dan sistem basis data yang ada, terpilih
pasangan PHP/MySQL sebagai yang terbaik dan terharmonis. Mengapa? Keduanya
adalah produk-produk terbaik dari gerakan open-source. Mudah-mudahan
Anda tidak membuka kedok bahwa Anda bukan 'anak gaul' dengan bertanya apa yang
dimaksud dengan gerakan open-source. Ke mana saja Anda selama ini?
MySQL memberikan hasil yang optimal dari sisi kecepatan dan reliabitas manajemen
data. Sifatnya yang open-source menyebabkan MySQL berkembang secara pesat
dan digunakan begitu banyak pengguna yang tidak ingin membuang dana begitu besar
untuk sebuah sistem basis data seperti jika menggunakan sistem basis data
komersial. Untuk penggunaan pada jumlah data skala medium ke bawah, MySQL memang
pas, apalagi ditambah ketersediaan MySQL pada berbagai platform populer seperti
Linux, FreeBSD, dan MS Windows 9x/NT/2000. Produk open source lain dalam
beberapa hal lebih unggul, misalnya PostgreSQL yang mampu menjamin integritas
data dan dapat digunakan untuk jumlah data skala besar, namun keterbatasan
platform pendukungnya sangat berpengaruh terhadap popularitasnya. Saat ini, PHP
secara built-in telah mendukung MySQL tanpa perlu modul tambahan.
Sementara promosinya kita hentikan dan kita mulai bekerja kembali.
Siapkan Semua Peralatan
Sebelum Anda lanjutkan, perlu Anda pastikan dahulu sistem basis data MySQL telah
terinstall dengan baik di sistem Anda. Jika Anda tidak menemukan tanda-tanda
kehidupan dari server MySQL, Anda dapat menginstalasi MySQL dari distribusi
sistem operasi Anda (jika Anda menggunakan basis Linux) atau dengan mendownload
versi terbarunya dari situs resmi MySQL di
http://www.mysql.com/. Ada perusahaan lain
yang mengedarkan versi modifikasi dari MySQL dengan tambahan fitur transaksi
dan jenis tabel yang berbeda yaitu NuSphere (http://www.nusphere.com/), namun karena masalah ini masih jadi pertentangan
antara MySQL AB sebagai perilis awal kode MySQL dan dengan NuSphere, maka Anda
tidak dianjurkan menggunakan produk MySQL dari NuSphere.
Anda dapat belajar melakukan sendiri instalasi MySQL dari manual yang tersedia.
Mungkin dibutuhkan sedikit usaha jika Anda melakukan instalasi di sistem Linux,
apalagi jika Anda melakukan instalasi bukan dari distribusi biner, tapi
percayalah Anda pasti mampu melakukannya. Instalasi MySQL di sistem operasi
Windows relatif lebih mudah.
Jika instalasi telah selesai dilakukan dan server MySQL telah siap, baiklah Anda
siapkan bekal berikutnya. Ada baiknya Anda mengenal bahasa SQL (Structured
Query Language) yang umum digunakan untuk berinteraksi dengan server basis
data. Pengetahuan mengenai SQL akan sangat membantu karena bahasa ini akan
digunakan pada hampir semua interaksi PHP dengan MySQL. Jika Anda belum mengenal
SQL, tidak perlu khawatir. Tetaplah maju tak gentar karena Anda tetap akan
dibantu tahap demi tahap dalam artikel ini.
Bagaimana jika Anda salah satu pembenci MySQL? Karena PHP mendukung hampir semua
sistem basis data populer yang ada, Anda akan tetap dapat menggunakan
dasar-dasar teknik berinteraksi dengan server basis data yang dibahas dalam
artikel ini untuk diaplikasikan pada sistem basis data yang Anda sukai. Bukalah
manual PHP, maka Anda akan dapati bahwa fungsi-fungsi untuk mengakses basis data
manapun sesungguhnya tidak jauh berbeda. Maka, tetaplah bergabung bersama kami.
Daftar Awak USS Enterprise NCC-1701D
Bayangkan Anda adalah seorang lulusan terbaik akademi militer United Federation
of Planet bidang sistem informasi. Penugasan pertama Anda adalah pada kapal
perang angkasa terbaik USS Enterprise NCC-1701D dipimpin oleh Captain Jean
Luc Piccard yang masih selalu mencari cara untuk menumbuhkan rambut di
kepalanya. Ketika briefing awal, Anda diharapkan membuat sistem informasi
yang mencatat daftar awak USS Enterprise NCC-1701D. Tentu, karena First Officer
William T. Riker fanatik dengan PHP dan MySQL, Anda harus membuatnya dalam PHP.
Officer Geordi LaForge menjelaskan bahwa sistem informasi ini haruslah mencakup
data nama, pangkat, jabatan, lama bertugas, e-mail, dan hobi dari setiap awak.
Sehingga tabel basis data yang dibuat haruslah minimal memuat data tersebut.
Sebagai seorang lulusan terbaik, Anda paham bahwa perintah dasar SQL untuk
pengoperasian basis data antara lain:
- SELECT ; digunakan untuk menampilkan data dari sebuah tabel,
- INSERT ; digunakan untuk memasukkan data baru ke sebuah tabel,
- UPDATE ; digunakan untuk memodifikasi data yang telah ada,
- DELETE ; digunakan untuk menghapus data pada sebuah tabel.
Perintah dasar di atas akan kita gunakan dalam membuat sistem informasi daftar
awak USS Enterprise NCC-1701D, namun sebelumnya kita harus membuat basis data
dan tabelnya pada MySQL kita. Bukalah program CLI (Command Line
Interface) MySQL dengan mengetik baris perintah berikut pada shell
sistem operasi Anda. Pastikan perintah/program mysql dapat dipanggil
dari CLI sistem operasi Anda.
mysql -u [namapengguna] -p
Nama pengguna adalah nama pengguna pada sistem basis data MySQL yang telah
dibuat pada saat instalasi dan konfigurasi server basis data MySQL. Jika
diperlukan password, maka program mysql akan memberikan prompt
bagi Anda untuk memasukkan password. Jika urusan protokoler ini telah selesai,
maka pada layar komputer Anda akan muncul prompt sebagai berikut.
mysql>
Misalkan Anda ingin membuat basis data penyimpanan awak kapal dengan nama
uss_enterprise, dan awak kapal akan disimpan dalam tabel awak
dalam basis data tersebut, maka ketiklah sebagai berikut.
CREATE DATABASE uss_enterprise; USE uss_enterprise;
Baris pertama perintah di atas adalah untuk membuat basis data dengan nama
uss_enterprise pada MySQL. Baris berikutnya adalah perintah kepada
CLI MySQL untuk menggunakan basis data uss_enterprise. Setiap baris
yang akan dieksekusi harus diakhiri dengan tanda titik-koma/semi colon
(;) dan diikuti dengan menekan tombol [return] atau tombol
[enter]. Dengan demikian, Anda dapat meneruskan perintah yang cukup
panjang pada baris berikutnya dengan tombol [enter], dengan catatan
di akhir baris tidak ada tanda semi colon. Tanda semi colon dapat pula diganti
dengan frasa \g.
Kini Anda dapat membuat tabel untuk menyimpan daftar awak, dengan mengetik
perintah berikut ini.
CREATE TABLE awak ( KODE INT(11) NOT NULL AUTO_INCREMENT, NAMA VARCHAR(50) NOT NULL, PANGKAT VARCHAR(50) NOT NULL, JABATAN VARCHAR(50) NOT NULL, BERTUGAS SMALLINT(6) NOT NULL DEFAULT 0, EMAIL VARCHAR(50) NOT NULL, HOBI VARCHAR(50) NOT NULL, PRIMARY KEY (KODE) );
Untuk menguji apakah tabel yang Anda buat sudah terbentuk, Anda dapat mencoba
mengetik perintah berikut ini, masih pada CLI mysql.
DESCRIBE awak;
Jika tidak ada kesalahan dalam proses pembuatan table, maka seharusnya CLI
mysql akan memberikan hasil sebagai berikut.
+----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | KODE | int(11) | | PRI | NULL | auto_increment | | NAMA | varchar(50) | | | | | | PANGKAT | varchar(50) | | | | | | JABATAN | varchar(50) | | | | | | BERTUGAS | smallint(6) | | | 0 | | | EMAIL | varchar(50) | | | | | | HOBI | varchar(50) | | | | | +----------+-------------+------+-----+---------+----------------+ 7 rows in set (0.06 sec)
Sekarang kita perlu mengisi basis data ini dengan data awal. Data awal yang kita
masukkan ada dua. Mengapa dua? Jawabannya sederhana saja, karena saya hanya
ingin memasukkan dua data saja. Mengapa bukan tiga atau satu? Karena saya lebih
suka dua.
INSERT INTO awak VALUES ( Null,'Jean Luc Piccard','Captain','Captain',5, 'piccard@ncc1701d.mil.ufp','Archeology'); INSERT INTO awak VALUES ( Null,'William T. Riker','Commander','First Officer',5, 'riker@ncc1701d.mil.ufp','Holodeck Game');
Kolom/field pertama table awak (KODE) memiliki sifat
AUTO_INCREMENT, jadi secara otomatis akan bertambah nilainya setiap
pengisian data. Hal ini akan menjamin primary key (kolom KODE)
selalu unik. Agar MySQL otomatis mengisi nilai pada kolom KODE, maka
pada saat melakukan pengisian data (INSERT), kolom ini diberikan nilai
Null. Mari kita lihat apakah proses pengisian data telah sukses.
SELECT * FROM awak \G
Perintah di atas adalah perintah SQL, yang artinya "ambillah semua data dan
kolom dari tabel awak". Anda dapat membatasi kolom yang diambil dengan
mengganti tanda * dengan nama kolom yang akan diambil dipisahkan dengan
tanda koma (,). Pembatasan jumlah data yang diambil dapat dilakukan
dengan menggunakan persyaratan (WHERE ....) atau dengan perintah
LIMIT. Bacalah manual MySQL, Anda akan dapati penjelasan mengenai hal
ini secara lebih detil.
Jika Anda jeli, mungkin Anda bertanya mengapa digunakan frasa \G untuk
mengakhiri perintah SELECT dan bukannya semi colon (;) atau
\g? Frasa \G menyebabkan hasil query ditampilkan di layar
secara vertikal, bukan dalam bentuk tabel baris kolom. Jika data ditampilkan
dalam bentuk tabel baris kolom, hasilnya kemungkinan besar akan berantakan
karena terbatasnya lebar layar CLI (80 karakter). Berikut tampilan yang
dihasilkan jika Anda berhasil memasukkan data ke tabel awak.
*************************** 1. row *************************** KODE: 1 NAMA: Jean Luc Piccard PANGKAT: Captain JABATAN: Captain BERTUGAS: 5 EMAIL: piccard@ncc1701d.mil.ufp HOBI: Archeology *************************** 2. row *************************** KODE: 2 NAMA: William T. Riker PANGKAT: Commander JABATAN: First Officer BERTUGAS: 5 EMAIL: riker@ncc1701d.mil.ufp HOBI: Holodeck Game 2 rows in set (0.05 sec)
Anda dapat menggunakan perintah SQL SELECT untuk menghitung jumlah
record/data pada tabel awak.
SELECT COUNT(*) FROM awak;
Hasilnya adalah seperti berikut ini
+----------+ | count(*) | +----------+ | 2 | +----------+ 1 row in set (0.55 sec)
Sampai di sini, berarti basis data, tabel, dan datanya sendiri telah siap untuk
tugas Anda. Kini kita segera mulai dengan membuat skrip PHP untuk mengakses
basis data MySQL. Sebelumnya ketik quit pada program CLI MySQL untuk
keluar dari aplikasi.
Hai MySQL, Saya Datang!
Untuk pemanasan, Mari kita buat dahulu skrip PHP sederhana untuk menghitung
jumlah record/data yang ada di tabel awak.
<html> <head> <title>Menghitung Jumlah Record Pada Tabel Awak</title> </head> <body> <?php // set beberapa variabel untuk mengakses basis data MySQL. // nama server basis data MySQL $server = "localhost"; // nama pengguna basis data $namauser = "test"; // misalkan user adalah 'test' // password pengguna basis data $passuser = "test"; // misalkan password adalah 'test' // nama basis data $db = "uss_enterprise"; // membuka koneksi PHP ke basis data MySQL $koneksi = mysql_connect($server, $namauser, $passuser); // menentukan perintah SQL untuk query $query = "SELECT COUNT(*) FROM awak"; // jalankan perintah SQL untuk query // pada basis data uss_enterprise pada koneksi // yang sudah dibuka ($koneksi) $hasil = mysql_db_query($db, $query, $koneksi); // mengambil data dari variabel $hasil $jml_rec = mysql_result($hasil, 0); // tampilkan hasilnya di halaman html echo "Jumlah record/data pada tabel adalah : $jml_rec"; // bebaskan memori yang digunakan untuk proses //karena hasil proses telah ditampilkan mysql_free_result($hasil); ?> </body> </html>
Anda akan dapati hasilnya sebagai berikut.
Selamat! Skrip PHP pertama Anda untuk mengakses MySQL telah berhasil Anda buat.
Mari sekarang kita bicarakan tahap demi tahap cara kerja skrip yang baru kita
buat di atas.
- Langkah pertama yang harus dikerjakan adalah memberikan informasi-informasi
penting yang dibutuhkan untuk membuat koneksi ke basis data. Informasi ini
meliput: nama server tempat MySQL yang akan diakses, nama pengguna database dan
passwordnya, dan nama basis data yang akan diakses. Informasi ini disimpan dalam
variabel PHP.
- Untuk dapat berkomunikasi dengan basis data, maka dibutuhkan suatu koneksi
basis data ke server MySQL. Semua komunikasi akan dilewatkan pada koneksi ini.
Pada PHP, koneksi ke MySQL diinisiasi dengan perintah mysql_connect().
$koneksi = mysql_connect($server, $namauser, $passuser); Fungsi ini memiliki 3 parameter: nama server, nama pengguna MySQL dan passwordnya. Jika server basis data MySQL dan server web secara fisik berada dan beroperasi dalam satu mesin, maka nama server umumnya cukup ditulis localhost atau dengan nomor IP loopback 127.0.0.1.Hasil dari fungsi ini adalah sebuah "pengenal hubungan" (link identifier) yang dalam skrip PHP di atas disimpan pada variabel $koneksi. Pengenal ini akan selalu digunakan oleh skrip untuk berkomunikasi dengan basis data. - Setelah kita memiliki koneksi ke basis data, maka sekaranglah saatnya
mengirim perintah query dalam SQL ke basis data kita. Fungsi yang digunakan
adalah mysql_db_query(). Fungsi ini memiliki 3 parameter pula: nama
basis data, string query dalam bahasa SQL, dan pengenal hubungan untuk koneksi
yang telah kita bicarakan sebelumnya.
$query = "SELECT COUNT(*) FROM awak"; $hasil = mysql_db_query($db, $query, $koneksi); Hasil dari fungsi mysql_query() disimpan dalam variabel $hasil. Isi dari variabel $hasil ini sangat bergantung dari perintah query SQL yang diberikan. Variabel ini dapat saja berisi satu atau lebih baris atau kolom data yang ada pada basis data.Anda dapat mengambil dan mengekstraksi isi dari variabel hasil query dengan berbagai fungsi yang tersedia dalam PHP sesuai dengan kebutuhan Anda. Kali ini kita gunakan saja fungsi mysql_result() yang akan menggunakan variabel hasil query dan nomor baris serta nama kolom (optional/tidak perlu ada) untuk mengambil informasi dari hasil query yang kita butuhkan.$jml_rec = mysql_result($hasil, 0); Fungsi di atas mengandung arti ambil baris indeks 0 (baris pertama) dari hasil indeks $hasil, dan hasilnya disimpan dalam variabel $jml_rec. Fungsi-fungsi lain sebagai alternatif dari mysql_result() akan kita bicarakan kemudian. - Akhirnya, adalah hal yang bijak untuk memperhatikan bahwa hasil dari query sangat mungkin cukup menyita memory yang sangat Anda butuhkan untuk proses selanjutnya. Hal ini terutama terjadi jika perintah query ini menghasilkan baris dan kolom dalam jumlah yang relatif besar. Anda dapat membebaskan penggunaan memory oleh variabel hasil query ini dengan perintah mysql_free_result(), setelah semua proses yang membutuhkan variabel hasil query itu telah selesai dilaksanakan.
Perlihatkan Sesuatu Padaku!
Skrip PHP di atas merupakan contoh yang amat dasar. Sekarang kita ingin
menggunakan skrip PHP untuk menampilkan data yang ada pada tabel awak,
bukan hanya jumlahnya saja.
Kebetulan Anda termasuk species manusia yang pemalas, sehingga sangat enggan
untuk menulis berulang-ulang perintah dan variabel yang sama pada setiap skrip
PHP yang Anda buat. Anda akan memisahkan beberapa variabel untuk kebutuhan
koneksi basis data dan menyimpannya pada file terpisah, misalkan
koneksi.inc.php. File ini akan berisi skrip sebagai berikut.
<?php // set beberapa variabel untuk mengakses basis data MySQL. // nama server basis data MySQL $server = "localhost"; // nama pengguna basis data $namauser = "test"; // misalkan user adalah 'test' // password pengguna basis data $passuser = "test"; // misalkan password adalah 'test' // nama basis data $db = "uss_enterprise"; // membuka koneksi PHP ke basis data MySQL $koneksi = mysql_connect($server, $namauser, $passuser) or die("Salah server, nama pengguna, atau passwordnya!"); ?>
File ini yang kita sisipkan pada setiap skrip PHP yang akan kita buat dengan
menggunakan perintah/fungsi include() atau require().
Anda ingin mengetahui kegunaan fungsi die()? Fungsi ini berguna untuk
menghentikan seluruh eksekusi program dan menampilkan string yang
tertentu jika proses eksekusi perintah gagal atau ditemukan kesalahan.
Skrip PHP berikut ini akan menampilkan isi dari tabel awak ke dalam
format halaman HTML. Untuk mempermudah tata letak, kita akan minta bantuan pada
tag <table> dan rekan-rekannya.
<html> <head> <title>Menampilkan Isi Tabel Awak</title> </head> <body> <?php // ambil data koneksi dari file koneksi.inc.php require("koneksi.inc.php"); // menentukan perintah SQL untuk query $query = "SELECT * FROM awak"; // jalankan perintah SQL untuk query $hasil = mysql_db_query($db, $query, $koneksi) or die("Kesalahan pada query!"); // tampilkan hasilnya di halaman html dengan tabel echo "<table border=1 cellpadding=1 cellspacing=0>\n"; echo "<tr>\n"; echo "<td>Kode</td>\n"; echo "<td>Nama</td>\n"; echo "<td>Pangkat</td>\n"; echo "<td>Jabatan</td>\n"; echo "<td>Tugas</td>\n"; echo "<td>Hobi</td>\n"; echo "</tr>\n"; // gunakan perulangan while // perulangan akan terjadi sepanjang masih ditemukan record while ($barisdata = mysql_fetch_array($hasil)) { // isikan elemen array baris ke masing-masing variabel $kode = $barisdata["KODE"]; $nama = $barisdata["NAMA"]; $pangkat = $barisdata["PANGKAT"]; $jabatan = $barisdata["JABATAN"]; $bertugas = $barisdata["BERTUGAS"]." th"; $email = "mailto:".$barisdata["EMAIL"]; $hobi = $barisdata["HOBI"]; // format dalam baris dan kolom tabel echo "<tr>\n"; echo "<td>$kode</td>\n"; echo "<td>"; echo "<a href=$email>$nama</a>"; echo "</td>\n"; echo "<td>$pangkat</td>\n"; echo "<td>$jabatan</td>\n"; echo "<td>$bertugas</td>\n"; echo "<td>$hobi</td>\n"; echo "</tr>\n"; } echo "</table>\n"; // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); ?> </body> </html>
Pada contoh di atas, digunakan fungsi mysql_fetch_array() yang akan
mengekstraksi variabel hasil query $hasil ke dalam variabel array
$barisdata. Indeks komponen variabel array ini secara otomatis adalah
nama kolom dari hasil query. Dengan demikian, kita dapat mengakses tiap
komponen/elemen dari variabel array $barisdata sesuai dengan nama
kolomnya, seperti pada baris-baris perintah berikut ini.
$kode = $barisdata["KODE"]; $nama = $barisdata["NAMA"]; $pangkat = $barisdata["PANGKAT"]; .... dan seterusnya ....
Perulangan yang digunakan adalah perulangan while yang akan terus
melakukan perulangan sampai fungsi mysql_fetch_array() tidak memberikan
hasil atau dengan kata lain sampai pernyataan $barisdata =
mysql_fetch_array($hasil) bernilai false. Berikut ini adalah hasil
skrip di atas.
Kode | Nama | Pangkat | Jabatan | Tugas | Hobi |
1 | Jean Luc Piccard | Captain | Captain | 5 th | Archeology |
2 | William T. Riker | Commander | First Officer | 5 th | Holodeck Game |
Cara Lain Ada Nggak, Sih?
Jangan khawatir, karena begitu banyaknya fungsi yang disediakan pada PHP,
mungkin suatu saat Anda akan bingung dalam memilih cara yang akan digunakan.
Kita dapat juga menggunakan fungsi mysql_fetch_row() untuk maksud yang
sama dengan di atas, hanya saja variabel array yang dihasilkan akan berindeks
angka sederhana, mulai dari 0 untuk kolom pertama sampai dengan
(n - 1) untuk kolom terakhir (n). Berikut ini adalah contoh
penerapan untuk maksud yang sama dengan skrip di sebelumnya.
<html> <head> <title>Menampilkan Isi Tabel Awak</title> </head> <body> <?php // ambil data koneksi dari file koneksi.inc.php require("koneksi.inc.php"); // menentukan perintah SQL untuk query $query = "SELECT * FROM awak"; // jalankan perintah SQL untuk query $hasil = mysql_db_query($db, $query, $koneksi) or die("Kesalahan pada query!"); // tampilkan hasilnya di halaman html dengan tabel echo "<table border=1 cellpadding=1 cellspacing=0>\n"; echo "<tr>\n"; echo "<td>Kode</td>\n"; echo "<td>Nama</td>\n"; echo "<td>Pangkat</td>\n"; echo "<td>Jabatan</td>\n"; echo "<td>Tugas</td>\n"; echo "<td>Hobi</td>\n"; echo "</tr>\n"; // gunakan perulangan while // perulangan akan terjadi sepanjang masih ditemukan record while ($barisdata = mysql_fetch_row($hasil)) { // isikan elemen array baris ke masing-masing variabel $kode = $barisdata[0]; $nama = $barisdata[1]; $pangkat = $barisdata[2]; $jabatan = $barisdata[3]; $bertugas = $barisdata[4]." th"; $email = "mailto:".$barisdata[5]; $hobi = $barisdata[6]; // format dalam baris dan kolom tabel echo "<tr>\n"; echo "<td>$kode</td>\n"; echo "<td>"; echo "<a href=$email>$nama</a>"; echo "</td>\n"; echo "<td>$pangkat</td>\n"; echo "<td>$jabatan</td>\n"; echo "<td>$bertugas</td>\n"; echo "<td>$hobi</td>\n"; echo "</tr>\n"; } echo "</table>\n"; // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); ?> </body> </html>
Huruf tebal (bold) pada skrip di atas menunjukkan perbedaan dengan skrip
sebelumnya.
Dengan fungsi list(), Anda juga dapat langsung menugaskan
variabel-variabel tertentu untuk menerima hasil dari fungsi
mysql_fetch_row(). Berikut adalah contohnya, masih dalam permasalahan
yang sama dengan skrip sebelumnya.
<html> <head> <title>Menampilkan Isi Tabel Awak</title> </head> <body> <?php // ambil data koneksi dari file koneksi.inc.php require("koneksi.inc.php"); // menentukan perintah SQL untuk query $query = "SELECT * FROM awak"; // jalankan perintah SQL untuk query $hasil = mysql_db_query($db, $query, $koneksi) or die("Kesalahan pada query!"); // tampilkan hasilnya di halaman html dengan tabel echo "<table border=1 cellpadding=1 cellspacing=0>\n"; echo "<tr>\n"; echo "<td>Kode</td>\n"; echo "<td>Nama</td>\n"; echo "<td>Pangkat</td>\n"; echo "<td>Jabatan</td>\n"; echo "<td>Tugas</td>\n"; echo "<td>Hobi</td>\n"; echo "</tr>\n"; // gunakan perulangan while // perulangan akan terjadi sepanjang masih ditemukan record while (list($kode,$nama,$pangkat,$jabatan,$bertugas,$email,$hobi) = mysql_fetch_row($hasil)) { // modifikasi beberapa variabel hasil mysql_fetch_row() $bertugas = $bertugas." th"; $email = "mailto:".$email; // format dalam baris dan kolom tabel echo "<tr>\n"; echo "<td>$kode</td>\n"; echo "<td>"; echo "<a href=$email>$nama</a>"; echo "</td>\n"; echo "<td>$pangkat</td>\n"; echo "<td>$jabatan</td>\n"; echo "<td>$bertugas</td>\n"; echo "<td>$hobi</td>\n"; echo "</tr>\n"; } echo "</table>\n"; // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); ?> </body> </html>
Fungsi list() menyebabkan array hasil dari mysql_fetch_row()
langsung diisikan pada variabel-variabel yang didaftar pada fungsi
list() sesuai dengan urutannya.
Dari ketiga cara di atas, Anda dapat menentukan sendiri mana yang lebih Anda
sukai. Jika Anda sangat konvensional, tidak praktis, bebal dan hanya ingin
menggunakan fungsi mysql_result(), Anda bisa mengekstraksi variabel
$hasil dengan cara sebagai berikut.
$kode = mysql_result($hasil,$i,"KODE"); $nama = mysql_result($hasil,$i,"NAMA"); $pangkat = mysql_result($hasil,$i,"PANGKAT"); ............ dan seterusnya ..............
Dengan $i adalah indeks dari baris mulai dari 0 untuk baris
pertama sampai (n - 1) untuk baris ke-n. Tentu Anda harus
memodifikasi perulangannya sehingga jumlah perulangan harus tepat sebanyak
n kali atau tidak sama sekali jika query tidak menghasilkan satu pun
baris data. Anda juga harus menugaskan bilangan pencacah $i yang
terus bertambah agar pengaksesan bisa berlanjut ke record berikutnya. Sudahlah,
pokoknya lebih rumit daripada ketiga cara di atas.
Mencari Jarum Dalam Tumpukan Jerami
Anda setuju bahwa sub judul di atas bombastis? Sama. Tetapi, biarlah atau ganti
saja sub judulnya sesuai dengan keinginan Anda. Yang jelas, kita kini akan
belajar membuat sebuah form untuk mencari sebuah data dan menampilkannya
berdasarkan nama yang dimasukkan oleh pengguna.
Teknik menyatukan halaman form dengan proses dan hasilnya telah kita pelajari
pada bagian sebelumnya, pasti dengan kecerdasan yang Anda miliki, tidak akan
terlupakan begitu saja. Intinya kita akan membedakan status pencarian dengan
mendeteksi adanya/nilai variabel tertentu ($cari) yang dikirim oleh
tombol "Cari" pada form isian. Jika variabel ini bernilai, maka berarti
dokumen/skrip PHP sedang dalam proses pencerian, jika tidak, tampilkan form
untuk pencarian.
<html> <head> <title>Pencarian Nama</title> <basefont face="Arial"> </head> <body> <?php // cek apakah kondisi form terkirim atau tidak if (!$cari) { // jika form tidak dalam kondisi terkirim, // tampilkan form pencarian nama ?> <center> <form action="<?php echo $PHP_SELF ?>" method="POST"> <font size=5>Program Pencarian Data Awak USS Enterprise</font> <p> Masukkan nama awak yang dicari : <p> <input type="text" name="form_nama" size="50" maxlength="50"> <input type="submit" name="cari" value=" Cari Awak "> </form> </center> <?php } else { // jika form dalam kondisi terkirim, // lakukan pencarian dan tampilkan hasilnya // ambil variabel untuk koneksi basis data require("koneksi.inc.php"); // tentukan query dan kriteria pencarian $query = "SELECT * FROM awak WHERE NAMA LIKE '%$form_nama%'"; // lakukan proses query $hasil = mysql_db_query($db,$query,$koneksi); // cek apakah pencarian ada hasilnya $jml_rec = mysql_num_rows($hasil); if (!$jml_rec) { // jika pencarian tidak ada hasilnya, // tampilkan pesan gagal ?> <center> <font size=5>Nama Awak tidak ditemukan!</font><p> <a href="<?php echo $PHP_SELF?>">Klik di sini untuk kembali</a> </center> <?php } else { // jika pencarian memberikan hasil, // tampilkan dalam halaman html // membuat tabel untuk menampilkan hasil pencarian echo "<font size=5>Hasil Pencarian ". "Ditemukan $jml_rec Data</font><br>\n"; echo "<table border=1 cellpadding=1 cellspacing=0>\n"; echo "<tr>\n"; echo "<td>Kode</td>\n"; echo "<td>Nama</td>\n"; echo "<td>Pangkat</td>\n"; echo "<td>Jabatan</td>\n"; echo "<td>Tugas</td>\n"; echo "<td>Hobi</td>\n"; echo "</tr>\n"; // gunakan perulangan while // perulangan akan terjadi sepanjang masih // ditemukan record while (list($kode,$nama,$pangkat,$jabatan,$bertugas, $email,$hobi) = mysql_fetch_row($hasil)) { // modifikasi beberapa variabel hasil // mysql_fetch_row() $bertugas = $bertugas." th"; $email = "mailto:".$email; // format dalam baris dan kolom tabel echo "<tr>\n"; echo "<td>$kode</td>\n"; echo "<td>"; echo "<a href=$email>$nama</a>"; echo "</td>\n"; echo "<td>$pangkat</td>\n"; echo "<td>$jabatan</td>\n"; echo "<td>$bertugas</td>\n"; echo "<td>$hobi</td>\n"; echo "</tr>\n"; } echo "</table>\n"; echo "<p>\n"; echo "<a href=$PHP_SELF>Klik di sini ". "untuk kembali</a>\n"; // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); } } ?> </body> </html>
Skrip Pencarian Nama Awak USS Enterprise di atas menggunakan kriteria pencarian
dengan operator LIKE yaitu "WHERE NAMA LIKE '%$form_nama%'".
Operator LIKE ini adalah operator pada bahasa SQL di MySQL yang
memiliki cakupan pencarian lebih luas dari pada operator '='. Bentuk
'%[string]%' akan menyebabkan pencarian dilakukan terhadap setiap data
yang mengandung '[string]'. Operator LIKE ini juga tidak
membedakan huruf kapital dan huruf kecil. Berikut ilustrasinya.
-------------------------------------------------------- | Isi Kotak Teks | Nama Awak yang didapat dari | | Pada Form | Pencarian | ------------------+------------------------------------- | piccard | Jean Luc Piccard | | PiCcArd | Jean Luc Piccard | | pic | Jean Luc Piccard | | cp | - | | c p | Jean Luc Piccard | | a | Jean Luc Piccard, William T. Riker | | card | Jean Luc Piccard | | ill | William T.Riker | --------------------------------------------------------
Fungsi baru yang Anda jumpai pada skrip di atas adalah mysql_num_rows()
yang akan memberikan hasil jumlah baris/data yang dihasilkan dari proses query.
Hasil dari fungsi ini disimpan pada variabel $jml_rec yang akan
digunakan untuk menentukan apakah data yang dicari ditemukan atau tidak. Jika
variabel $jml_rec = 0 berarti data tidak ditemukan, dan jika lebih
dari nol, maka seluruh hasil akan ditampilkan dalam tabel pada halaman HTML.
Cobalah jalankan skrip PHP di atas, lama-kelamaan Anda akan mengerti dasar-dasar
alur kerja skrip untuk pencarian data. Skrip ini dapat dikembangkan lebih jauh
sesuai dengan kebutuhan Anda.
Awak Kapal Baru
Sampai saat ini, Anda telah berulang kali menggunakan perintah SQL
SELECT yang berguna untuk mengambil informasi dari basis data yang ada.
Kini saatnya kita membuat skrip untuk mengisi basis data kita dengan awak-awak
kapal USS Enterprise yang lainnya. Yang jelas, kita tidak mungkin memasukkan
satu per satu data awak tersebut melalui Aplikasi CLI MySQL yang sangat
membosankan dan tidak menarik itu. Kita ingin data dimasukkan melalui halaman
HTML yang dibuat dengan skrip PHP kita. Caranya?
Untuk mengisi data baru ke dalam tabel basis data, kita menggunakan perintah
SQL lainnya, yaitu INSERT. Cobalah skrip PHP berikut ini. Agar
pada langkah-langkah berikutnya Anda tidak perlu mengganti nama skrip ini,
simpanlah dengan nama awakinput.php.
<html> <head> <title>Memasukkan Awak Baru</title> <basefont face="Arial"> </head> <body> <?php // cek apakah kondisi form terkirim atau tidak if (!$tambah) { // jika form tidak dalam kondisi terkirim, // tampilkan form pencarian nama ?> <center> <form action="<?php echo $PHP_SELF ?>" method="POST"> <font size=5>Masukkan Data Awak USS Enterprise Baru</font> <p> <table border=0 cellspacing=2 cellpadding=2> <tr> <td>Nama Awak</td> <td> <input type="text" name="form_nama" size="50" maxlength="50"> </td> </tr> <tr> <td>Pangkat</td> <td> <input type="text" name="form_pangkat" size="50" maxlength="50"> </td> </tr> <tr> <td>Jabatan</td> <td> <input type="text" name="form_jabatan" size="50" maxlength="50"> </td> </tr> <tr> <td>Lama Bertugas</td> <td> <input type="text" name="form_bertugas" size="2" maxlength="2"> (dalam tahun) </td> </tr> <tr> <td>e-mail</td> <td> <input type="text" name="form_email" size="50" maxlength="50"> </td> </tr> <tr> <td>Hobi</td> <td> <input type="text" name="form_hobi" size="50" maxlength="50"> </td> </tr> <tr> <td colspan=2 align=center> <input type="submit" name="tambah" value=" Tambah "> </td> </tr> </table> </form> </center> <?php } else { // jika form dalam kondisi terkirim, // lakukan insert ke basis data // ambil variabel untuk koneksi basis data require("koneksi.inc.php"); // tentukan query dan kriteria pencarian $query = "INSERT INTO awak VALUES ( Null, '".addslashes($form_nama)."', '".addslashes($form_pangkat)."', '".addslashes($form_jabatan)."', $form_bertugas, '".addslashes($form_email)."', '".addslashes($form_hobi)."' )"; // lakukan proses query $hasil = mysql_db_query($db,$query,$koneksi) or die('Kesalahan pada proses query!'); // Tampilkan pesan proses input telah selesai ?> <center> <font size=5>Proses Input Berhasil!</font><p> Data Awak Nama <b> <?php echo addslashes($form_nama) ?> </b> telah disimpan. <p> <a href="<?php echo $PHP_SELF ?>">Klik di sini untuk kembali</a> </center> <?php } ?> </body> </html>
Anda mungkin belum mengenal kegunaan fungsi addslashes(). Fungsi ini
berguna untuk memastikan bahwa data string yang dikirim ke server MySQL telah
bebas dari karakter-karakter terlarang, seperti ', ",
\, dan sebagainya, sehingga proses query terjamin dari kegagalan.
Untuk mencoba skrip ini, masukkanlah data misalnya:
NAMA: Deanne Troi PANGKAT: Commander JABATAN: Counselor BERTUGAS: 2 EMAIL: troi@ncc1701d.mil.ufp HOBI: Fine Art
Untuk melihat apakah proses input yang kita lakukan berhasil, maka gunakan
skrip PHP yang kedua, ketiga, atau keempat dari artikel ini. Hasilnya kurang
lebih tampak sebagai berikut.
Kode | Nama | Pangkat | Jabatan | Tugas | Hobi |
1 | Jean luc Piccard | Captain | Captain | 5 th | Archeology |
2 | William T. Riker | Commander | First Officer | 5 th | Holodeck Game |
3 | Deanne Troi | Commander | Counselor | 2 th | Fine Art |
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. Sebelum fungsi ini, terlebih dahulu haruslah
didefinisikan dahulu basis data yang digunakan dengan fungsi
mysql_select_db(). Sehingga perintah
mysql_db_query($db, $query, $koneksi);
dapat diganti dengan
mysql_select_db($db, $koneksi); mysql_query($query);
Bentuk yang kedua ini jauh lebih praktis jika kita secara berulang-ulang
melakukan proses query pada basis data yang sama. Fungsi
mysql_select_db() cukup dilakukan sekali saja diawal skrip ataupun
diletakkan pada skrip koneksi.inc.php, dan selanjutnya cukup dengan
perintah mysql_query() saja.
Data Salah, Tolong Diubah!
Tiba-tiba timbul masalah, Anda salah memasukkan data. Anda harus segera membuat
skrip lain untuk mengubah data yang sudah dimasukkan, sebelum data ini diakses
oleh para pengguna lainnya. Ayo cepat, kita diburu waktu!
Berbeda dengan menambahkan data baru, proses perbaikan (edit) data
tidak berjalan dalam dua langkah: isi dan simpan. Sebelum kita memperbaiki data,
kita harus memilih dahulu data yang akan diubah, data asli sebelum diubah
ditampilkan, ubah data sesuai keinginan, kemudian simpan perubahannya. Untuk
mudahnya, skrip mengubah data kita bagi menjadi 2 buah skrip, yang pertama
adalah untuk mencari dan memilih data yang akan diubah dan skrip yang kedua
untuk melakukan perubahan dan menyimpan perubahannya.
Skrip yang pertama ini akan kita modifikasi dari skrip keempat pada artikel ini,
yang bertugas menampilkan semua data yang ada pada tabel awak. Berikut ini
adalah skrip yang telah dimodifikasi. Tambahan dan modifikasi skrip tampak pada
bagian yang berhuruf tebal. Simpanlah hasil perubahan ini dengan nama
awakdsp.php.
<html> <head> <title>Menampilkan Isi Tabel Awak</title> <basefont face="Arial"> </head> <body> <?php // ambil data koneksi dari file koneksi.inc.php require("koneksi.inc.php"); // menentukan perintah SQL untuk query $query = "SELECT * FROM awak"; // jalankan perintah SQL untuk query $hasil = mysql_db_query($db, $query, $koneksi) or die("Kesalahan pada query!"); // tampilkan hasilnya di halaman html dengan tabel echo "<font size=5>Data Awak USS Enterprise NCC-1701-D</font>\n"; echo "<table border=1 cellpadding=1 cellspacing=0>\n"; echo "<tr>\n"; echo "<td>Kode</td>\n"; echo "<td>Nama</td>\n"; echo "<td>Pangkat</td>\n"; echo "<td>Jabatan</td>\n"; echo "<td>Tugas</td>\n"; echo "<td>Hobi</td>\n"; echo "<td>Pilihan</td>\n"; echo "</tr>\n"; // gunakan perulangan while // perulangan akan terjadi sepanjang masih ditemukan record while (list($kode,$nama,$pangkat,$jabatan,$bertugas,$email,$hobi) = mysql_fetch_row($hasil)) { // modifikasi beberapa variabel hasil mysql_fetch_row() $bertugas = $bertugas." th"; $email = "mailto:".$email; // format dalam baris dan kolom tabel echo "<tr>\n"; echo "<td>$kode</td>\n"; echo "<td>"; echo "<a href=$email>$nama</a>"; echo "</td>\n"; echo "<td>$pangkat</td>\n"; echo "<td>$jabatan</td>\n"; echo "<td>$bertugas</td>\n"; echo "<td>$hobi</td>\n"; echo "<td>"; echo "<a href=\"awakedit.php?kodeawak=$kode\">Edit</a>"; echo "</td>\n"; echo "</tr>\n"; } echo "</table>\n"; // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); ?> </body> </html>
Jalankan skrip PHP ini di browser Anda, dan saksikan perubahannya. Pada setiap
baris data pada tabel, tersedia hyperlink untuk edit/ubah baris data
yang bersangkutan di kolom paling kanan (kolom Pilihan). Hyperlink ini
akan memanggil skrip awakedit.php yang akan kita buat berikut ini
dengan sekaligus mengirim nilai variabel $kodeawak sesuai dengan kode
dari data yang akan diedit.
Berikut ini adalah skrip untuk mengedit data yang akan disimpan dengan nama
awakedit.php.
<html> <head> <title>Mengubah Data Awak</title> <basefont face="Arial"> </head> <body> <?php // ambil variabel untuk koneksi basis data require("koneksi.inc.php"); mysql_select_db($db, $koneksi); // cek apakah kondisi form terkirim atau tidak if (!$simpan) { // jika form tidak dalam kondisi terkirim, // tampilkan form pencarian nama // cek apakah variabel $kode dikirimkan if (!$kodeawak) { die('Tidak ada awak yang dipilih untuk diedit!'); } // Tentukan query untuk ada yang akan diambil $query = "SELECT * FROM awak WHERE KODE='$kodeawak'"; // jalankan query $hasil = mysql_query($query) or die('Kesalahan pada proses query!'); // cek dan ekstrak hasil query $jml_rec = mysql_num_rows($hasil); if (!($jml_rec>0)) { die('Data tidak ditemukan!'); } list($kode,$nama,$pangkat,$jabatan,$bertugas,$email,$hobi) = mysql_fetch_row($hasil); ?> <center> <form action="<?php echo $PHP_SELF ?>" method="POST"> <font size=5>Edit Data Awak USS Enterprise</font> <p> <table border=0 cellspacing=2 cellpadding=2> <tr> <td>Nama Awak</td> <td> <input type="hidden" name="form_kode" value="<?php echo $kode ?>"> <input type="text" name="form_nama" size="50" value="<?php echo $nama ?>" maxlength="50"> </td> </tr> <tr> <td>Pangkat</td> <td> <input type="text" name="form_pangkat" size="50" value="<?php echo $pangkat ?>" maxlength="50"> </td> </tr> <tr> <td>Jabatan</td> <td> <input type="text" name="form_jabatan" size="50" value="<?php echo $jabatan ?>" maxlength="50"> </td> </tr> <tr> <td>Lama Bertugas</td> <td> <input type="text" name="form_bertugas" size="2" value="<?php echo $bertugas ?>" maxlength="2"> (dalam tahun) </td> </tr> <tr> <td>e-mail</td> <td> <input type="text" name="form_email" size="50" value="<?php echo $email ?>" maxlength="50"> </td> </tr> <tr> <td>Hobi</td> <td> <input type="text" name="form_hobi" size="50" value="<?php echo $hobi ?>" maxlength="50"> </td> </tr> <tr> <td colspan=2 align=center> <input type="submit" name="simpan" value=" Simpan "> </td> </tr> </table> </form> </center> <?php // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); } else { // jika form dalam kondisi terkirim, // lakukan perubahan basis data // tentukan query $query = "UPDATE awak SET NAMA='".addslashes($form_nama)."', PANGKAT='".addslashes($form_pangkat)."', JABATAN='".addslashes($form_jabatan)."', BERTUGAS=$form_bertugas, EMAIL='".addslashes($form_email)."', HOBI='".addslashes($form_hobi)."' WHERE KODE='$form_kode'"; // lakukan proses query $hasil = mysql_query($query) or die('Kesalahan pada proses query!'); // Tampilkan pesan proses edit telah selesai ?> <center> <font size=5>Proses Edit Berhasil!</font><p> Data Awak Nama <b><?php echo addslashes($form_nama) ?></b> telah disimpan perubahannya. <p> <a href="awakdsp.php">Klik di sini untuk kembali</a> </center> <?php } ?> </body> </html>
Tidak ada yang baru pada skrip PHP di atas kecuali penggunaan perintah SQL
UPDATE untuk mengubah data yang sudah ada. Kolom KODE tidak ikut
diubah karena kolom ini adalah PRIMARY KEY sebagai acuan dari perubahan data
yang dilakukan. Data KODE ini disimpan pada form sebagai jenis komponen form
hidden, agar tetap dapat dikirimkan ke bagian skrip untuk menyimpan perubahan.
Cobalah ubah masa tugas Deanne Troi dari 2 tahun menjadi 3 tahun. Jika skrip
yang Anda buat benar, maka hasil perubahan akan langsung terlihat.
Kalau Gajah Mati Meninggalkan Apa?
Masalah berikutnya, jika seorang awak sudah tidak lagi terdaftar sebagai awak
USS ENTERPRISE baik karena perpindahan tugas maupun karena gugur, maka data awak
tersebut harus dienyahkan dari sistem basis data kita. Anda perlu membuat
skrip untuk menghapus data.
Indentik dengan proses edit, proses penghapusan juga harus melalui tahap
pemilihan data yang akan dihapus, kemudian data yang akan dihapus ditampilkan,
dan terakhir dilakukan proses penghapusan. Untuk itu kita gunakan dua skrip
juga, satu skrip adalah modifikasi dari skrip awakdsp.php dan satu lagi
skrip yang bertugas menampilkan data dan melakukan proses penghapusan data.
Langkah pertama, modifikasi skrip awakdsp.php dengan menambahkan
hyperlink untuk penghapusan pada setiap baris data yang ada. Berikut
adalah skrip awakdsp.php yang telah dimodifikasi. Penambahan yang
terjadi adalah pada yang berhuruf tebal.
<html> <head> <title>Menampilkan Isi Tabel Awak</title> <basefont face="Arial"> </head> <body> <?php // ambil data koneksi dari file koneksi.inc.php require("koneksi.inc.php"); // menentukan perintah SQL untuk query $query = "SELECT * FROM awak"; // jalankan perintah SQL untuk query $hasil = mysql_db_query($db, $query, $koneksi) or die("Kesalahan pada query!"); // tampilkan hasilnya di halaman html dengan tabel echo "<font size=5>Data Awak USS Enterprise NCC-1701-D</font>\n"; echo "<table border=1 cellpadding=1 cellspacing=0>\n"; echo "<tr>\n"; echo "<td>Kode</td>\n"; echo "<td>Nama</td>\n"; echo "<td>Pangkat</td>\n"; echo "<td>Jabatan</td>\n"; echo "<td>Tugas</td>\n"; echo "<td>Hobi</td>\n"; echo "<td>Pilihan</td>\n"; echo "</tr>\n"; // gunakan perulangan while // perulangan akan terjadi sepanjang masih ditemukan record while (list($kode,$nama,$pangkat,$jabatan,$bertugas,$email,$hobi) = mysql_fetch_row($hasil)) { // modifikasi beberapa variabel hasil mysql_fetch_row() $bertugas = $bertugas." th"; $email = "mailto:".$email; // format dalam baris dan kolom tabel echo "<tr>\n"; echo "<td>$kode</td>\n"; echo "<td>"; echo "<a href=$email>$nama</a>"; echo "</td>\n"; echo "<td>$pangkat</td>\n"; echo "<td>$jabatan</td>\n"; echo "<td>$bertugas</td>\n"; echo "<td>$hobi</td>\n"; echo "<td>"; echo "<a href=\"awakedit.php?kodeawak=$kode\">Edit</a>"; echo " "; echo "<a href=\"awakdel.php?kodeawak=$kode\">Hapus</a>"; echo "</td>\n"; echo "</tr>\n"; } echo "</table>\n"; // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); ?> </body> </html>
Langkah berikutnya adalah membuat skrip awakdel.php sebagai berikut.
<html> <head> <title>Menghapus Data Awak</title> <basefont face="Arial"> </head> <body> <?php // ambil variabel untuk koneksi basis data require("koneksi.inc.php"); mysql_select_db($db, $koneksi); // cek apakah kondisi form terkirim atau tidak if (!$hapus) { // jika form tidak dalam kondisi terkirim, // tampilkan form pencarian nama // cek apakah variabel $kode dikirimkan if (!$kodeawak) { die('Tidak ada awak yang dipilih untuk dihapus!'); } // Tentukan query untuk ada yang akan diambil $query = "SELECT * FROM awak WHERE KODE='$kodeawak'"; // jalankan query $hasil = mysql_query($query) or die('Kesalahan pada proses query!'); // cek dan ekstrak hasil query $jml_rec = mysql_num_rows($hasil); if (!($jml_rec>0)) { die('Data tidak ditemukan!'); } list($kode,$nama,$pangkat,$jabatan,$bertugas,$email,$hobi) = mysql_fetch_row($hasil); ?> <center> <form action="<?php echo $PHP_SELF ?>" method="POST"> <font size=5>Edit Data Awak USS Enterprise</font> <p> <table border=0 cellspacing=2 cellpadding=2> <tr> <td>Nama Awak</td> <td> <input type="hidden" name="form_kode" value="<?php echo $kode ?>"> <?php echo $nama ?> </td> </tr> <tr> <td>Pangkat</td> <td> <?php echo $pangkat ?> </td> </tr> <tr> <td>Jabatan</td> <td> <?php echo $jabatan ?> </td> </tr> <tr> <td>Lama Bertugas</td> <td> <?php echo $bertugas ?> tahun </td> </tr> <tr> <td>e-mail</td> <td> <?php echo $email ?> </td> </tr> <tr> <td>Hobi</td> <td> <?php echo $hobi ?> </td> </tr> <tr> <td colspan=2 align=center> <input type="submit" name="hapus" value=" Hapus Data "> </td> </tr> </table> </form> </center> <?php // bebaskan memori yang digunakan untuk proses mysql_free_result($hasil); } else { // jika form dalam kondisi terkirim, // lakukan penghapusan data // tentukan query $query = "DELETE FROM awak WHERE KODE='$form_kode'"; // lakukan proses query $hasil = mysql_query($query) or die('Kesalahan pada proses query!'); // Tampilkan pesan proses hapus telah selesai ?> <center> <font size=5>Proses Hapus Berhasil!</font><p> Data Awak Nama <b><?php echo addslashes($form_nama) ?></b> telah dihapus.<p> <a href="awakdsp.php">Klik di sini untuk kembali</a> </center> <?php } ?> </body> </html>
Cobalah sekarang hapus Deanne Troi mulai dari menjalankan file skrip
awakdsp.php dan memilih hyperlink Hapus. Jika skrip Anda benar
dalam pembuatannya, maka proses penghapusan akan berjalan dengan baik. Maka
dengan ini tugas Anda membuat basis data awak USS Enterprise telah diselesaikan
dengan gemilang. Simpan semua dokumen dan skrip Anda dan jangan lupa sesegera
mungkin menghubungi Counselor Deanne Troi untuk minta ditraktir dalam rangka
pindah tugasnya.
Butuh Bantuan Tambahan Dari PHP?
Puhh! Anda kini telah menguasai dengan baik cara mengakses basis data MySQL dari
PHP. Dengan dasar ini, maka Anda sudah dapat mulai membuat web dinamis yang
berbasis data. Namun, Anda merasa sering kali mengalami kesulitan untuk melacak
kesalahan pemrograman yang tidak sengaja Anda lakukan? Umumnya kesalahan terjadi
pada saat merancang perintah SQL, tetapi mencari di bagian mana dari perintah
SQL yang salah itu juga tidak mudah dan butuh waktu. Adakah cara yang lebih
cepat untuk membantu pekerjaan mencari kutu ini?
PHP, kembali lagi kita harus berterimakasih kepadanya, menyediakan banyak sekali
alat bantu pelacakan kesalahan (error tracking). Untuk melacak kesalahan
pada proses pengaksesan MySQL, PHP menyediakan fungsi-fungsi
mysql_errno() yang menunjukkan nomor indeks dari kesalahan yang
terjadi, dan mysql_error() yang memberikan keterangan kepada kita
mengenai kesalahan apa yang terjadi. Berikut ini adalah contoh penggunaannya.
<html> <head> <title>Melacak Kesalahan SQL</title> </head> <body> <?php // ambil data koneksi dari file koneksi.inc.php require("koneksi.inc.php"); // menentukan perintah SQL untuk query $query = "SELECT FROM awak"; // jalankan perintah SQL untuk query $hasil = mysql_db_query($db, $query, $koneksi); if (!$hasil) { $no_error = mysql_errno(); $pesan_error = mysql_error(); echo "Kesalahan MySQL No $no_error : $pesan_error"; } ?> </body> </html>
Jika skrip di atas dijalankan, maka akan muncul pesan kesalahan sebagai berikut.
at line 1
Akhirnya, selesai juga bagian artikel yang paling melelahkan ini. Pada bagian
terakhir dari PHP? Siapa Takut! akan kita bicarakan mengenai kemampuan PHP
untuk membaca dan menulis file serta mencoba merancang fungsi-fungsi buatan
sendiri. Siapkan Anda untuk satu trayek lagi...
Tidak ada komentar:
Posting Komentar