PHP? Siapa Takut!

Oleh: Ivan Irawan < ivanorma@softhome.net>
http://skripphp.xoasis.com

Bagian 4: Hei, Ternyata Bisa Bekerja!

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.

Jumlah record/data pada tabel adalah : 2

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.

  1. 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.
  2. 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 perintahmysql_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 loopback127.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.

     

  3. Setelah kita memiliki koneksi ke basis data, maka sekaranglah saatnya mengirim perintah query dalam SQL ke basis data kita. Fungsi yang digunakan adalahmysql_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.

     

  4. 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.

Kesalahan MySQL No 1064 : You have an error in your SQL syntax near ‘FROM awak’
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…

Tentang belokibado251191

Tamatan dari: Sma ESSA SENIOR Teulale Baucau dan SMAN No.02 Vila Nova Baucau sekarang masih menjelang kuliah di Instituto Professional De Canossa Dili Timor Leste fakultas Technology Computer.
Pos ini dipublikasikan di Uncategorized. Tandai permalink.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s