BAHASA PEMROGAMAN KOMPUTER

Sejarah Bahasa Pemrograman Komputer Sejak pertama komputer difference engine diciptakan oleh Charles Babbage pada tahun 1822, komputer membutuhkan sejumlah instruksi untuk melakukan suatu tugas tertentu. Instruksi-instruksi ini dikenal sebagai bahasa pemrograman. Bahasa komputer mulanya terdiri dari sejumlah langkah pengkabelan untuk membuat suatu program; hal ini dapat dipahami sebagai suatu rangkaian pengetikan kedalam komputer dan kemudian dijalankan. Pada awalnya, difference engine-nya Charles Babbage hanya dibuat untuk menjalankan tugas dengan menggunakan perpindahan gigi roda untuk menjalankan fungsi kalkukasi. Jadi, bentuk awal dari bahasa komputer adalah berupa gerakan secara mekanik, selanjutnya gerakan mekanik tersebut digantikan dengan sinyal listrik ketika pemerintah AS mengembangkan ENIAC pada tahun 1942, tetapi masih banyak mengadopsi prinsip-prinsip dasar dari Babbage’s engine yang mana diprogram dengan mengeset switch dan perkabelan pada seluruh sistem pada setiap “program” maupun kalkulasi. Tentu saja ini merupakan pekerjaan yang membosankan. Pada 1945, John Von Neumann yang bekerja pada Institute for Advanced Study mengemukakan dua konsep yang secara langsung mempengaruhi masa depan dari bahasa pemrograman komputer. Yang pertama dikenal sebagai “shared-program technique” (www.softlord.com). Pada teknik ini dinyatakan bahwa hardware komputer haruslah sederhana dan tidak perlu dilakukan pengkabelan dengan menggunakan tangan untuk setiap program. Sebagai gantinya, instruksi-instruksi yang lebih kompleks harus digunakan untuk mengendalikan perangkat keras yang lebih sederhana, hal ini memungkinkan komputer diprogram ulang dengan cepat. Konsep yang kedua yang juga sangat penting untuk pengembangan bahasa pemrograman. Von Neumann menyebutnya sebagai “conditional control transfer” (www.softlord.com). Ide ini berkembang menjadi bentuk subrutin, atau blok kode yang kecil yang dapat panggil berdasarkan aturan tertentu, dari pada suatu himpunan tunggal urutan kronologis yang harus dijalankan oleh komputer. Bagian kedua dari ide tersebut menyatakan bahwa kode komputer harus dapat bercabang berdasarkan pernyataan logika seperti IF (ekspresi) THEN, dan perulangan seperti FOR statement. “Conditional control transfer” mengembangkan ide adanya “libraries,” yang mana merupakan blok kode yang dapat digunakan berulang kali. Pada 1949, setelah beberapa tahun Von Neumann bekerja, bahasa Short Code dilahirkan (www.byte.com), yang merupakan bahasa komputer yang pertama untuk peralatan elektronik yang membutuhkan programmer untuk mengubah perintah kedalam 0 dan 1 dengan tangan. Pada 1957, bahasa khusus yang pertama muncul dalam bentuk FORTRAN yang merupakan singkatan dari sistem FORmula TRANslating. Bahasa ini dirancang pada IBM untuk perhitungan scientific. Komponen-komponennya sangat sederhana, dan menyediakan bagi programmer akses tingkat rendah kedalam komputer. Sampai saat ini, bahasa ini terbatas pada hanya terdiri dari perintah IF, DO, dan GOTO, tetapi pada waktu itu, perintah-perintah ini merupakan lompatan besar kearah depan. Type data dasar yang digunakan sampai sekarang ini dimulai dari FORTRAN, hal ini meliputi variabel logika (TRUE atau FALSE), dan bilangan integer, real, serta double-precision. FORTRAN sangat baik dalam menangani angka-angka, tetapi tidak terlalu baik untuk menangani proses input dan output, yang mana merupakan hal yang penting pada komputasi bisnis. Komputasi bisnis mulai tinggal landas pada 1959, dengan dikembangkannya COBOL, yang dirancang dari awal sebagai bahasa untuk para pebisnis. Type data yang ada hanya berupa number dan text string. Hal tersebut juga memungkinkan pengelompokan menjadi array dan record, sehingga data di telusuri dan diorganisasikan dengan lebih baik. Sesuatu hal yang menarik untuk dicatat bahwa suatu program COBOL dibuat menyerupai suatu essay, dengan empat atau lima bagian utama yang membentuk keseluruhan yang tertata dengan baik. Perintah-perintah COBOL sangat menyerupai tata bahasa English, sehingga membuatnya agak mudah dipelajari. Semua ciri-ciri ini dikembangkan agar mudah dipelajari dan mudah diterapkan pada dunia bisnis. Pada 1958, John McCarthy di MIT membuat bahasa LISt Processing (atau LISP), yang dirancang untuk riset Artificial Intelligence (AI). Karena dirancang untuk fungsi spesialisasi yang tinggi, maka tata cara penulisannya jaring kelihatan sebelum ataupun sesudahnya. Sesuatu perbedaan yang paling nyata dari bahasa ini dengan bahasa lain adalah dasar dan type satu-satunya adalah list, yang ditandai dengan suatu urutan item yang dicakup dengan tanda kurung. Program LISP sendirinya dibuat sebagai suatu himpunan dari list, sehingga LISP memiliki kemampuan yang khusus untuk memodifikasi dirinya, dan juga dapat berkembang sendiri. Tata cara penulisan LISP dikenal sebagai “Cambridge Polish,” sebagaimana dia sangat berbeda dari logika Boolean (Wexelblat, 177) : x V y – Cambridge Polish, what was used to describe the LISP program OR(x,y) – parenthesized prefix notation, what was used in the LISP program x OR y – standard Boolean logic LISP masih digunakan sampai sekarang karena spesialiasi yang tinggi dari sifat abstraknya. Bahasa Algol dibuat oleh suatu komite untuk pemakaian scientific pada tahun 1958. Kontribusi utamanya adalah merupakan akar dari tiga bahasa selanjutnya yaitu Pascal, C, C++, dan Java. Dia juga merupakan bahasa pertama dengan suatu tata bahasa formal, yang dikenal sebagai Backus-Naar Form atau BNF (McGraw-Hill Encyclopedia of Science and Technology, 454). Pada Algol telah diterapkan konsep-konsep baru, seperti rekursif pada function, bahasa berikutnya Algol 68, menjadi bahasa yang membosankan dan sulit digunakan (www.byte.com). Hal ini mengarah kepada adopsi terhadap bahasa yang lebih kecil dan kompak seperti Pascal. Pascal dimulai pada tahun 1968 oleh Niklaus Wirth. Tujuan pengembangannya adalah untuk kebutuhan pengajaran. Pada awalnya bahasa ini dikembangkan bukan dengan harapan adopsi pemakaian secara luas. Prinsipnya mereka mengembangkannya untuk alat pengajaran pemrograman yang baik seperti kemampuan debug dan perbaikan sistem dan dukungan kepada mikroprosesor komputer yang digunakan pada institusi pendidikan. Pascal dirancang dengan pendekatan yang sangat teratur (terstruktur), dia mengkombinasikan kemampuan yang terbaik dari bahasa-bahasa saat itu, COBOL, FORTRAN, dan ALGOL. Dalam pengerjaannya banyak perintah-perintah yang tidak teratur dan aneh dihilangkan, sehingga sangat menarik bagi pemakai (Bergin, 100-101). Kombinasi dari kemampuan input/output dan kemampuan matematika yang solid, membuatnya menjadi bahasa yang sukses besar. Pascal juga mengembangkan tipe data “pointer”, suatu fasilitas yang sangat bermanfaat pada bahasa yang mengimplementasikannya. Dia juga menambahkan perintah CASE, yang mana memperbolehkan perintah bercabang seperti suatu pohon pada suatu aturan: CASE expression OF possible-expression-value-1: statements to execute… possible-expression-value-2: statements to execute… END Pascal juga mengembangkan variabel dinamis, dimana variabel dapat dibuat ketika suatu program sedang berjalan, melalui perintah NEW dan DISPOSE. Tetapi Pascal tidak mengimplementasikan suatu array dinamis, atau kelompok dari variabel-variabel, yang mana sangat dibutuhkan, dan merupakan salah satu penyebab kekalahannya (Bergin, 101-102). Wirth kemudian membuat lanjutan dari Pascal, Modula-2, tetapi pada saat itu muncul C yang dengan cepat menjadi mengeser posisi Pascal. C dikembangkan pada tahun 1972 oleh Dennis Richie ketika sedang bekerja pada Bell Labs di New Jersey. Transisi pemakaian dari bahasa umum yang pertama ke bahasa umum sampai hari ini yaitu transisi antara Pascal dan C, C merupakan perkembangan dari B dan BCPL, tetapi agak menyerupai Pascal. Semua fasilitas di Pascal, termasuk perintah CASE tersedia di C. C menggunakan pointer secara luas dan dibangun untuk kecepatan dengan kelemahannya yaitu menjadi sulit untuk dibaca. Tetapi karena dia menghilangkan semua kelemahan yang terdapat di Pascal, sehingga dengan cepat mengambil alih posisi Pascal. Ritchie mengembangan C untuk sistem Unix yang baru pada saat yang bersamaan. Oleh karena ini, C dan Unix saling berkaitan. Unix memberikan C beberapa fasilitas besar seperti variabel dinamis, multitasking, penanganan interrupt, forking, dan strong low-level,input-output. Oleh karena itu, C sangat sering digunakan untuk pemrograman sistem operasi seperti Unix, Windows, MacOS, dan Linux. Pada akhir tahun 1970 dan awal 1980, suatu metode pemrograman yang baru telah dikembangkan. Ha tersebut dikenal sebagai Object Oriented Programming, atau OOP. Object merupakan suatu potongan dari data yang dapat dipaket dan dimanipulasi oleh programmer. Bjarne Stroustroup menyukai metode ini dan mengembangkan lanjutan dari C yang dikenal sebagai “C With Classes.” Kemampuan lanjutan ini dikembangkan menjadi bahasa C++ yang diluncurkan pada tahun 1983. C++ dirancang untuk mengorganisasikan kemampuan dasar dari C dengan OOP, dengan tetap mempertahankan kecepatan dari C dan dapat dijalankan pada komputer yang tipe berlainan. C++ sering kali digunakan dalam simulasi, seperti game. C++ menyediakan cara yang baik untuk memanipulasi ratusan instance dari manusia didalan elevator, atau pasukan yang diisi dengan tipe prajurit yang berbeda. Bahasa ini menjadi pilihan pada mata kuliah AP Computer Science sampai hari ini. Pada awal 1990′s, interaktif TV adalah teknologi masa depan. Sun Microsystems memutuskan bahwa interaktif TV membutuhkan suatu hal yang khusus, yaitu bahasa portable (bahasa yang dapat berjalan pada banyak jenis mesin yang berbeda). Bahasa ini dikenal sebagai Java. Pada tahun 1994, team proyek Java mengubah fokus mereka ke web, yang mana berubah menjadi sesuatu yang menjanjikan setelah interactive TV gagal. Pada tahun berikutnya, Netscape menyetujui pemakaian Java pada internet browser mereka, Navigator. Sampai titik ini, Java menjadi bahasa masa depan dan beberapa perusahaan mengumumkan aplikasi harus ditulis dalam Java. Java mempunyai tujuan yang besar dan merupakan bahasa yang baik menurut buku text, pada kenyataanya “bahasa tersebut tidak”. Dia memiliki masalah yang serius dalam optimasi, dengan arti program yang ditulis dengannya berjalan dengan lambat. Dan Sun telah membuat cacat penerimaan terhadap Java dengan pertikaian politis dengan Microsoft. Tetapi Java telah dinyatakan sebagai bahasa untuk instruksi masa depan dan benar-benar menerapkan object-oriented dan teknik tingkat tinggi seperti kode yang portable dan garbage collection. Visual Basic sering diajari sebagai bahasa pemrograman dasar yang mengacu pada bahasa BASIC yang dikembangkan pada tahun 1964 oleh John Kemeny dan Thomas Kurtz. BASIC adalah bahasa yang sangat terbatas dan dirancang untuk orang yang bukan computer science. Perintah-perintah dijalankan secara berurutan, tetapi kendali program dapat berubah berdasarkan IF..THEN, dan GOSUB yang mana menjalankan suatu blok kode dan kembali ketitik semula didalam alur program. Microsoft telah mengembangkan BASIC ke dalam produk Visual Basic (VB). Jantung dari VB adalah form, atau suatu window kosos dimana anda dapat drag dan drop komponen seperti menu, gambarm dan slider bars. Item-item ini dikenal sebagai “widgets.” Widget memiliki properti (seperti warna) dan events (seperti klik dan double klik) dan menjadi pusat dari pengembangan antarmuka dengan pemakai diberbagai bahasa program dewasa ini. VB merupakan program yang banyak digunakan untuk membuat interface sederhana ke produk Microsoft lainnya seperti Excel dan Access tanpa membaca banyak kode, dengannya dapat dimungkinkan untuk dibuat aplikasi yang lengkap. Perl telah sering digambarkan sebagai “duct tape of the Internet,” karena sering digunakan sebagai engine untuk interface web atau pada script untuk memodifikasi file konfigurasi. Dia memiliki fungsi text matching yang sangat baik sehingga membuatnya menjadi hal yang ideal untuk pekerjaan tersebut. Perl dikembangkan oleh Larry Wall pada 1987 karena fasilitas pada sed dan awk pada Unix (digunakan untuk manipulasi text) tidak mencukupi kebutuhannya. Tergantung kepada siapa anda bertanya, Perl adalah singkatan dari Practical Extraction and Reporting Language atau Pathologically Eclectic Rubbish Lister. Bahasa pemrograman telah berkembangan dari masa kemasa dan tetap dikembangkan dimasa depan. Mereka dimulai dari suatu daftar langkap pengkabelan agar komputer menjalankan tugas tertentu. Langkah-langkah ini berkembang menjadi software dan memiliki kemampuan yang lebih baik. Bahasa umum yang pertama menekankan pada kesederhanaan dan untuk satu tujuan saja, sedangkan bahasa dewasa ini terbagi atas bagaimana mereka diprogram, sehingga mereka dapat digunakan untuk semua tujuan. Dan mungkin bahasa yang akan datang lebih natural dengan penemuan pada quantum dan komputer-komputer biologis. Sumber : Indoprog ‘Algoritma & Pemrograman’ oleh Hendra, S.T.

Bahasa Pemrogaman

Bahasa pemrograman, atau sering diistilahkan juga dengan bahasa komputer, adalah teknik komando/instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik yang dipakai untuk mendefinisikan program komputer. Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data mana yang akan diolah oleh komputer, bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara persis yang akan diambil dalam berbagai situasi.

Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari:

  1. Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110
  2. Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
  3. Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||, dsb.
  4. Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb.

Sebagian besar bahasa pemrograman digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa C yang digolongkan sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan Bahasa Tingkat Rendah.

Kata - kata bijak yang harus kita pikir

Kebanggaan kita yang terbesar adalah bukan tidak pernah gagal, tetapi bangkit kembali setiap kali kita jatuh.

Kata - kata bijak yang harus kita pikir

Penderitaan jiwa mengarahkan keburukan. Putus asa adalah sumber kesesatan; dan kegelapan hati, pangkal penderitaan jiwa.

Kata - kata bijak yang harus kita pikir

Teman sejati adalah ia yang meraih tangan anda dan menyentuh hati anda.

Kata - kata bijak yang harus kita pikir

Pengetahuan tidaklah cukup, maka kita harus mengamalkannya. Niat tidaklah cukup, maka kita harus melakukannya.

Kata - kata bijak yang harus kita pikir

Berusahalah untuk tidak menjadi manusia yang berhasil tapi berusahalah menjadi manusia yang berguna.

Kata - kata bijak yang harus kita pikir

Belajarlah dari kesalahan orang lain. Anda tak dapat hidup cukup lama untuk melakukan semua kesalahan itu sendiri.

Kata - kata bijak yang harus kita pikir

Ketika masalah datang, Anda akan menjadi lebih damai jika yang Anda pikirkan adalah jalan keluar dari masalah; bukan pembayangan dari penderitaan yang akan Anda alami.

Kata - kata bijak yang harus kita pikir

Sesuatu yang belum dikerjakan, seringkali tampak mustahil; kita baru yakin kalau kita telah berhasil melakukannya dengan baik.

Kata - kata bijak yang harus kita pikir

Keramah-tamahan dalam perkataan menciptakan keyakinan, keramahtamahan dalam pemikiran menciptakan kedamaian, keramahtamahan dalam memberi menciptakan kasih.

Kata - kata bijak yang harus kita pikir

Orang yang paling beruntung di dunia adalah orang yang telah mengembangkan rasa syukur yang hampir konstan, dalam situasi apapun.

Kata - kata bijak yang harus kita pikir

Jangan mencari kawan yang membuat Anda merasa nyaman, tetapi carilah kawan yang memaksa Anda terus berkembang.

Kata - kata bijak yang harus kita pikir

Tak semua orang yg membencimu mengatakan hal yg salah tentangmu. Terkadang mereka mengatakan yg sebenarnya.

Kata - kata bijak yang harus kita pikir

Mengevaluasi apa yang kita lakukan dan semua pencapaian kita. Apapun hasilnya akan menjadi fondasi kuat untuk kehidupan kita dimasa mendatang yang lebih baik.

Kata - kata bijak yang harus kita pikir

Ketika kamu merasa pedulimu tak pernah dihargai, ketahuilah bahwa kamu tengah belajar tentang KETULUSAN HATI.

Kata - kata bijak yang harus kita pikir

Jangan sesali apa yang sudah pergi. Jangan tangisi apa yang sudah tiada. Tetapi bangkitlah dan bina kembali apa yang telah hilang dan pergi.

Senin, 31 Oktober 2011

Ide Membuat Script PHP untuk Pencarian dengan Multi Kategori



Dalam suatu aplikasi yang terkait dengan database, seringkali muncul fasilitas untuk pencarian data. Untuk mempersempit scope pencarian biasanya pencarian dilakukan berdasarkan kategori tertentu. Kategori pencarian bisa bersifat single category artinya hanya berdasar satu kategori pencarian saja atau ada yang bersifat multiple category atau multi kategori dimana user bisa melakukan pencarian berdasarkan lebih dari satu kategori.

Untuk membuat fasilitas pencarian berdasarkan satu kategori pada prinsipnya mudah. Sebagai contoh misalkan pencarian data mahasiswa, dimana user bisa melakukan pencarian berdasarkan salah satu dari kategori NIM, nama mahasiswa, alamat, jenis kelamin atau yang lain. Dalam hal ini (single category), prinsipnya hanyalah menggunakan statement kondisional saja. Jika yang dipilih adalah kategori NIM, maka jalankan query pencarian data berdasarkan kategori NIM. Jika yang dipilih adalah kategori nama mahasiswa, maka jalankan query pencarian data berdasarkan nama mahasiswa dan seterusnya. Saya kira mudah… dan tidak ada masalah.

Namun… bagaimana bila pencariannya berdasarkan multi kategori? misalkan user ingin mencari tahu siapa saja sih mahasiswa yang beralamat di Solo dan berjenis kelamin laki-laki misalnya :-) Kalau kita terapkan logika seperti halnya pada single kategori, maka akan sulit diimplementasikan. Mengapa sulit? ya.. karena akan banyak kemungkinan yang terjadi dalam pemilihan kategorinya. Coba bayangkan, seandainya untuk data mahasiswa terdapat 10 buah field. Untuk single kategori, tidak ada masalah karena kemungkinkan pemilihan kategorinya ada 10 buah (Anda membuat statement kondisional sebanyak 10 buah). Namun.. jika menggunakan multi kategori, wah… bisa-bisa Anda pusing karena terlalu banyak kemungkinannya si user tadi memilih kategorinya. Hitung-hitung ada sekitar jutaan kemungkinan. wow… capee dehh… :-)

Sebagai gambaran saja, seperti apa pencarian multi kategori itu, bisa Anda lihat pada gambar di bawah ini.

Photobucket

Gambar di atas menggambarkan pencarian data mahasiswa, dimana user bisa memilih kategori pencarian lebih dari satu. Dalam contoh di atas terdapat 4 kategori, dimana user dapat mengkombinasikannya sesuai keinginan. Perhatikan, bahwa gambar di atas menunjukkan si user ingin mencari mahasiswa bernama ‘Joko’ yang beralamat di ‘Solo’. Kalau dihitung-hitung ada sebanyak 24 buah total pilihan yang mungkin dipilih user. Kalau Anda buat ke 24 kemungkinan tersebut dengan statement kondisional wah… repot :-)

Nah… pada artikel ini akan dibahas bagaimana trik untuk membuat script guna keperluan pencarian multi kategori tersebut. Untuk mudahnya kita akan menerapkannya ke studi kasus saja. Studi kasus yang dipilih sama seperti contoh pada gambar di atas saja yah.. supaya mudah.

OK.. pertama.. kita siapkan databasenya terlebih dahulu, beserta tabelnya. Kalau perlu recordnya sekalian untuk contoh saja.

01.CREATE TABLE mhs (
02.nim varchar(10),
03.namamhs varchar(30)
04.alamat text,
05.sex varchar(10),
06.PRIMARY KEY (nim)
07.);
08.
09.INSERT INTO `mhs` VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
10.INSERT INTO `mhs` VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
11.INSERT INTO `mhs` VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
12.INSERT INTO `mhs` VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
13.INSERT INTO `mhs` VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L');

Selanjutnya kita siapkan form pencariannya.

form.htm

01.<h1>Cari Data Mahasiswah1>
02.
03.<p>Pilih kategori pencarianp>
04.
05.<form method="post" action="proses.php">
06.<table>
07.<tr><td><input type="checkbox" name="nimCat"> NIMtd><td><input type="text" name="nim">td>tr>
08.<tr><td><input type="checkbox" name="namaCat"> Nama Mahasiswatd><td><input type="text" name="nama">td>tr>
09.<tr><td><input type="checkbox" name="alamatCat"> Alamattd><td><input type="text" name="alamat">td>tr>
10.<tr><td><input type="checkbox" name="sexCat"> Jenis Kelamintd><td><input type="radio" name="sex" value="L"> Laki-Laki <input type="radio" name="sex" value="P"> Perempuantd>tr>
11.<tr><td>td><td><input type="submit" name="submit" value="Submit">td>tr>
12.table>
13.form>

Karena bersifat multi kategori, maka sebaiknya kita gunakan komponen checkbox. Untuk masing-masing checkbox diberi nama yang berbeda-beda, misal di situ ada ‘nimCat’, ‘namaCat’ dst.

OK.. next.. ini yang paling penting yaitu script untuk pencariannya.

OK.. sekarang kita coba analisis sebentar tentang bagaimana query yang terbentuk bila user memilih suatu kategori tertentu. Sebagai contoh misalkan user memilih kategorinya adalah NIM saja, maka querynya berbentuk:

1.SELECT * FROM mhs WHERE nim = '...';

Bila user memilih kategorinya NIM dan nama mahasiswa, maka querynya berbentuk:

1.SELECT * FROM mhs WHERE nim = '...' AND namamhs LIKE '%...%';

Bila user memilih kategorinya nama mahasiswa, alamat dan jenis kelamin, maka querynya berbentuk:

1.SELECT * FROM mhs WHERE namamhs LIKE '%...%' AND alamat LIKE '%...%' AND sex = '...';

Dari beberapa contoh di atas, kita bisa simpulkan bahwa terdapat bagian query yang sama entah apapun pilihan kategorinya yaitu bagian: SELECT * FROM mhs WHERE. Sedangkan bagian yang berbeda-beda hanyalah bagian klausa WHERE nya saja. OK… berarti sekarang kita hanya fokus ke bagian WHERE saja

Sekarang kita analisis lagi bagian WHERE nya. Jika yang dipilih hanya NIM saja, maka dalam WHERE ditambahkan nim = '...'. Bila NIM dan nama mahasiswa yang dipilih maka nim = '...' ini ditambahkan AND namamhs LIKE '%...%' sehingga menjadi nim = '...' AND namamhs LIKE '%...%'. dan seterusnya. Dengan demikian konsep untuk pencarian multi kategori sebenarnya hanya menggabung-gabung syarat pada bagian WHERE saja.

Nah.. bagaimana jika ide di atas kita implementasikan dalam script?

OK.. mula-mula, kita beri inisialisasi untuk bagian WHERE nya adalah empty sting terlebih dahulu

1.
2.$bagianWhere = "";
3.?>

Selanjutnya, kita buat script untuk mengkondisikan bila user memilih kategori NIM.

01.
02.
03.$bagianWhere = "";
04.
05.if (isset($_POST['nimCat']))
06.{
07.$nim = $_POST['nim'];
08.$bagianWhere .= "nim = '$nim'";
09.}
10.
11.?>

Maksud dari script di atas adalah, jika user memilih checkbox NIM yang tadi diberi nama ‘nimCat’, maka akan dibaca nilai NIM yang berasal dari textbox NIM. Selanjutnya setelah membaca nilai NIM yang mau dicari, maka pada bagian WHERE ditambahkan perintah nim = '$nim'. Supaya membentuk query SELECT * FROM mhs WHERE nim = nim = '$nim'.

Berikutnya script jika kategori nama mahasiswa dipilih

01.
02.
03.$bagianWhere = "";
04.
05.if (isset($_POST['nimCat']))
06.{
07.$nim = $_POST['nim'];
08.$bagianWhere .= "nim = '$nim'";
09.}
10.
11.if (isset($_POST['namaCat']))
12.{
13.$namamhs = $_POST['nama'];
14.if (empty($bagianWhere))
15.{
16.$bagianWhere .= "namamhs LIKE '%$namamhs%'";
17.}
18.else
19.{
20.$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
21.}
22.}
23.
24.?>

Nah… untuk bagian script untuk kategori nama mahasiswa ini agak beda tapi sedikit. Pada prinsipnya hampir sama, yaitu dicek dulu apakah checkbox nama mahasiswa dipilih atau tidak. Jika dipilih maka baca value nama mahasiswa yang ingin dicari. Selanjutnya, dilakukan pengecekan lagi. Jika $bagianWhere kosong, maka $bagianWhere akan ditambahkan namamhs LIKE '%namamhs%'. Maksud dari $bagianWhere kosong adalah bila user tidak memilih kategori NIM. Jika user tidak memilih kategori NIM, maka otomatis $bagianWhere nya masih kosong bukan? Namun… bila user juga memilih kategori NIM, atau dengan kata lain $bagianWhere tidak kosong alias sudah terisi dengan nim = '$nim', maka $bagianWhere ditambahkan dengan AND namamhs LIKE '%$namamhs%' sehingga menjadi nim = '$nim' AND namamhs LIKE '%$namamhs%'. Simpel bukan idenya.. :-)

Nah.. konsep di atas bisa dilanjutkan untuk kategori yang lain. Akhirnya scriptnya menjadi seperti di bawah ini

01.
02.
03.$bagianWhere = "";
04.
05.if (isset($_POST['nimCat']))
06.{
07.$nim = $_POST['nim'];
08.if (empty($bagianWhere))
09.{
10.$bagianWhere .= "nim = '$nim'";
11.}
12.}
13.
14.if (isset($_POST['namaCat']))
15.{
16.$namamhs = $_POST['nama'];
17.if (empty($bagianWhere))
18.{
19.$bagianWhere .= "namamhs LIKE '%$namamhs%'";
20.}
21.else
22.{
23.$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
24.}
25.}
26.
27.if (isset($_POST['alamatCat']))
28.{
29.$alamat = $_POST['alamat'];
30.if (empty($bagianWhere))
31.{
32.$bagianWhere .= "alamat LIKE '%$alamat%'";
33.}
34.else
35.{
36.$bagianWhere .= " AND alamat LIKE '%$alamat%'";
37.}
38.}
39.
40.if (isset($_POST['sexCat']))
41.{
42.$sex = $_POST['sex'];
43.if (empty($bagianWhere))
44.{
45.$bagianWhere .= "sex = '$sex'";
46.}
47.else
48.{
49.$bagianWhere .= " AND sex = '$sex'";
50.}
51.}
52.
53.?>

Nah… setelah selesai membentuk bagian WHERE nya, terakhir kita padukan bagian WHERE yang terbentuk ke dalam query utuhnya.

01.
02.
03.$bagianWhere = "";
04.
05.if (isset($_POST['nimCat']))
06.{
07.$nim = $_POST['nim'];
08.if (empty($bagianWhere))
09.{
10.$bagianWhere .= "nim = '$nim'";
11.}
12.}
13.
14.if (isset($_POST['namaCat']))
15.{
16.$namamhs = $_POST['nama'];
17.if (empty($bagianWhere))
18.{
19.$bagianWhere .= "namamhs LIKE '%$namamhs%'";
20.}
21.else
22.{
23.$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
24.}
25.}
26.
27.if (isset($_POST['alamatCat']))
28.{
29.$alamat = $_POST['alamat'];
30.if (empty($bagianWhere))
31.{
32.$bagianWhere .= "alamat LIKE '%$alamat%'";
33.}
34.else
35.{
36.$bagianWhere .= " AND alamat LIKE '%$alamat%'";
37.}
38.}
39.
40.if (isset($_POST['sexCat']))
41.{
42.$sex = $_POST['sex'];
43.if (empty($bagianWhere))
44.{
45.$bagianWhere .= "sex = '$sex'";
46.}
47.else
48.{
49.$bagianWhere .= " AND sex = '$sex'";
50.}
51.}
52.
53.$query = "SELECT * FROM mhs WHERE ".$bagianWhere;
54.$hasil = mysql_query($query);
55.
56.?>

Sederhana bukan idenya? Kalau kita buat satu-persatu IF nya tanpa trik di atas tentu kita butuh 24 buah IF untuk semua kemungkinannya. Namun dengan trik di atas hanya butuh 4 buah IF saja.

Nah… berikut ini script secara keseluruhan untuk menampilkan hasil query berdasarkan multi kategori yang dipilih user. Untuk mempercantik tampilan hasil pencarian saya tampilkan dalam bentuk tabel.

01.
02.
03.mysql_connect("dbhost", "dbuser", "dbpassword");
04.mysql_select_db("dbname");
05.
06.$bagianWhere = "";
07.
08.if (isset($_POST['nimCat']))
09.{
10.$nim = $_POST['nim'];
11.if (empty($bagianWhere))
12.{
13.$bagianWhere .= "nim = '$nim'";
14.}
15.}
16.
17.if (isset($_POST['namaCat']))
18.{
19.$namamhs = $_POST['nama'];
20.if (empty($bagianWhere))
21.{
22.$bagianWhere .= "namamhs LIKE '%$namamhs%'";
23.}
24.else
25.{
26.$bagianWhere .= " AND namamhs LIKE '%$namamhs%'";
27.}
28.}
29.
30.if (isset($_POST['alamatCat']))
31.{
32.$alamat = $_POST['alamat'];
33.if (empty($bagianWhere))
34.{
35.$bagianWhere .= "alamat LIKE '%$alamat%'";
36.}
37.else
38.{
39.$bagianWhere .= " AND alamat LIKE '%$alamat%'";
40.}
41.}
42.
43.if (isset($_POST['sexCat']))
44.{
45.$sex = $_POST['sex'];
46.if (empty($bagianWhere))
47.{
48.$bagianWhere .= "sex = '$sex'";
49.}
50.else
51.{
52.$bagianWhere .= " AND sex = '$sex'";
53.}
54.}
55.
56.$query = "SELECT * FROM mhs WHERE ".$bagianWhere;
57.$hasil = mysql_query($query);
58.echo "";
59.echo "
";
60.while ($data = mysql_fetch_array($hasil))
61.{
62.echo "
";
63.}
64.echo "
NIMNama MahasiswaAlamatJenis Kelamin
".$data['nim']."".$data['namamhs']."".$data['alamat']."".$data['sex']."
";
65.?>

OK deh.. selamat mencoba. Artikel ini saya ambil dari salah satu modul dalam Kursus PHP Online Bersama Rosihan Ari Y, sekaligus request dari Mas Yoyok (salah satu member saya).

Oya.. bila script di atas tidak jalan silakan download scriptnya langsung di bawah ini

[ Download Script ]

PHP Example Scripts

CLICK HERE for freeware and commercial PHP scripts
from our parent site TD Scripts.com

PHP Example Scripts
HOME: PHP Diary | PHP Scripts | TD Scripts.com | scriptschool.com

example scripts 1-16
execute/example | text | source | summary

example scripts 20+
execute/example | text | source | summary

date and time functions
example #1 (12/18/99) source - displaying the current date in an HTML page (incorrect)
example #2 (12/18/99) source - displaying the current date in an HTML page (correct)
example #3 (12/18/99) source - current month/day/date format
example #4 (12/18/99) source - current month/day/date with HTML colors & formatting
example #5 (12/19/99) source - change background color based on day of the week using if else elseif statements
example #6 (12/19/99) source - change background color based on day of the week using array
example #7 (12/21/99) source - add date time stamp "page last updated on..." using filemtime function

using forms, cookies, flat file databases, random number generation
example #8 (12/22/99) - forms processing introduction
example #9 (12/23/99) source - setting and retrieving a cookie
example #10 (12/24/99) source - getting an average number using PHP
example #11 (12/26/99) source - showing the surfer average vote statistics, using printf function
example #12 (12/27/99) source - generating a rand number from 0 to 9
example #13 (12/27/99) source - php simple slot machine - multiple rand number generation
example #14 (12/27/99) source - random text link advertising using predefined arrays

mail, regular expressions, password protection
example #15 (12/28/99) - mail processing introduction
example #16 (12/29/99) source - forcing the text in a string to be all upper or lowercase

example #17 (12/30/99) - subscribe or unsubscribe to the php-scripts mail list
example #18 (12/31/99) - making a hardcoded browser based admin password system
example #19 (1/1/2000) - the complete TD Subscribe Mail administration HTML template and code


admin, searching
example #20 (1/5/2000) - searching a website URL for a keyword or sentence
example #21 (1/6/2000) source - searching through meta tags for a search engine
example #22 (1/7/2000) source - searching through a directory and picking out files using a regular expression
example #23 (1/8/2000) - searching through the diary entries, by meta tag keywords and descriptions
example #24 (1/9/2000) - making a page counter
example #25 (1/21/2000) source - shuffling and "cutting" a deck of playing cards
example #26 (1/22/2000) - blending JavaScript with PHP

mySQL Database interaction
example #27 (7/20/2000) source - admin interface for adding and deleting users using mySQL
example #28 (7/30/00) - Update and populate a mySQL database using a loop with the most current rating information
example #29 (7/31/00) source - Reader rated most useful diary entries in descending order
example #30 (2/19/01) source - multi-colored source code for .htaccess file (UNIX)
example #31 (2/19/01) source - creating a mySQL table using a PHP script
new example #32 (2/19/01) source - mySQL based counter script for multiple pages

Automating manual tasks, date sorting, mktime()
example #33 (12/29/02)
example #34 (12/29/02)
source
example #35 (12/29/02)
source

The next example script will go here...

CLICK HERE for freeware and commercial PHP scripts
from our parent site TD Scripts.com

Twitter Delicious Facebook Digg Stumbleupon Favorites More