Jumat, 30 Desember 2011

Membuat MySQL Monitor dengan PHP

Menggunakan MySQL Monitor standar bawaan dari paket MySQL sangat membantu administrasi dan penggunaan server MySQL, tetapi karena tool tersebut berjalan pada mode command line dan tampilan layar dari command line sangat terbatas maka pekerjaan akan menjadi sedikit lebih sulit. Banyak pengembang-pengembang software open source yang telah membuat interface berbasis web yang dapat digunakan untuk mengadministrasi MySQL, salah satu contohnya adalah phpMyAdmin. PhpMyAdmin mempunyai banyak kelebihan yang dapat mempermudah pekerjaan Anda, hal ini sangat membantu jika Anda mempunyai server MySQL dalam local komputer. Tetapi bagaimana jika Anda ikut dalam layanan web hosting, yang jarang sekali memberikan fasilitas MySQL monitor baik yang berbentuk command line maupun yang berbasis web. Apabila hendak memasang phpMyAdmin pada hosting tersebut maka akan mengurangi ruang harddisk yang Anda butuhkan untuk halaman homepage. Oleh sebab itu dibutuhkan satu interface berbasis web yang berukuran kecil yang dapat membantu kerja Anda.
Dalam tutorial ini akan dibahas mengenai skrip sederhana memakai PHP yang dapat digunakan untuk memasukan SQL Query ke server MySQL dan menampilkan hasilnya dalam bentuk web. Bentuk tampilan dari script ini tampak seperti: 
Skrip ini masih sangat sederhana, perlu dikembangkan lagi jika anda ingin benar-benar menggunakannya. Ada beberapa hal yang perlu diperhatikan sebelum anda menggunakannya yang berhubungan dengan keamanan server MySQL:
Pemasangan Skrip Pada Server
Mula-mula buatlah sebuah file yang berisi listing dari MySQL Monitor menggunakan Notepad, melalui Start > Program > Accessories > Notepad. Atau anda dapat menggunakan HTML editor yang lain sesuai dengan kebiasaan. Ada beberapa variabel yang harus anda rubah nilainya, yaitu:
$hostname ='localhost'; //Masukkan alamat lokasi server
$username ='root'; //User MySQL yang digunakan
$password ='password'; // Masukkan password
Varibel $hostname diisi dengan alamat server MySQL, dapat menggunakan alamat IP atau nama dari server, $username adalah user yang digunakan untuk masuk ke MySQL server, perhatikan hak akses user tersebut, semakin tinggi maka semakin besar kekuasaan dari MySQL Monitor. User ‘root’ adalah user dengan hak akses tertinggi dalam MySQL.Varibel $password diisi dengan password dari user MySQL. Setelah itu, simpan file tersebut dengan nama mysql.php. Besar file tidak akan lebih dari 3Kb.
File tersebut siap di upload ke server web, ingat anda harus mengupload file mysql.php pada web server yang support PHP, contohnya Apache (http://www.apache.org). Untuk ujicoba dapat digunakan paket web server yang berjalan under Windows, seperti Appsrv (http://appserv.sourceforge.net/) atau PHPTriad (http://http://sourceforge.net/projects/phptriad). Keduanya sudah didukung dengan server MySQL. Setelah diupload, cobalah buka menggunakan web browser.



LISTING LENGKAP MYSQL MONITOR (mysql.php);
<html><head><title>MySQL Monitor oleh Bondan Muliawan </title></head>
<body>
<?php
$hostname ='localhost'; //Masukkan alamat lokasi server
$username ='root'; //User MySQL yang digunakan
$password ='password'; // Masukkan password
//Membuat koneksi dengan server MySQL
mysql_connect($hostname,$username,$password);
?>
<form action="<?=$PHP_SELF?>" method="POST">
<p>Perintah (SQL Query) untuk database :
<!-- MEMBUAT FORM UNTUK MEMASUKKAN PERINTAH SQL -->
<select name="database">
<?php
// Melihat list dari database dan membuat DROP DOWN LIST
$databases = mysql_list_dbs();
for ($i=0;$i<mysql_num_rows($databases);$i++)
{$namadatabase = mysql_db_name($databases,$i);
if ($namadatabase == $database)
echo("<option selected> $namadatabase</option>");
else echo("<option>$namadatabase</option>");
}
?>
</select><br />
<textarea cols="60" rows="5" name="perintah">
<?php
$perintah_tampil=stripslashes(htmlspecialchars("$perintah", ENT_QUOTES));
echo "$perintah_tampil";
?>
</textarea></p>
<p><input name="masukkan" type="submit" accesskey="P" value="Masukkan Perintah &lt;Alt-
P&gt;" /></p>
</form>
<!-- MEMBUAT HASIL TAMPILANNYA -->
<?php
echo('<hr />');
if ($masukkan)
{
if (get_magic_quotes_gpc()) $perintah = stripslashes($perintah);
echo('<p><b>Perintah :</b> '.nl2br($perintah).'</p>');
$result = mysql_db_query($database,$perintah);
if ($result)
{
if (@mysql_num_rows($result))
{
?>
<p><b>Hasil :</b></p>
<table border="1"><thead> <tr>
<?php
for ($i=0;$i<mysql_num_fields($result);$i++)
echo('<th>'.mysql_field_name($result,$i).'</th>');
?>
</tr> </thead><tbody>
<?php
while ($row = mysql_fetch_row($result))
{
echo('<tr>');
for ($i=0;$i<mysql_num_fields($result);$i++)
{
echo('<td>'.$row[$i].'</tr>');
}
echo('</tr>');
}
?>
</tbody> </table>
<?php
echo('<p><b>Query Berhasil:</b>
'.mysql_affected_rows().' baris terpengaruh.</p>');
} else
{
echo('<p><b>Query Berhasil:</b>
'.mysql_affected_rows().' baris terpengaruh.</p>');
}
} else
{
echo('<p><b>Perintah salah:</b> '.mysql_error().'</p>');
}
}
?>
<!-- AKHIR DARI HASIL -->
</body>
</html>
PENJELASAN LISTING
Pada awal program anda harus men-deklarasikan variabel yang mencatat informasi mengenai server.
$hostname ='localhost';
$username ='root';
$password ='password';
Lalu membuat hubungan ke server menggunakan perintah:
mysql_connect($hostname,$username,$password);
Dengan adanya koneksi ke server MySQL anda dapat melihat nama-nama dari database yang
tersimpan dalam server dengan perintah:
$databases = mysql_list_dbs();
Menyiapkan textarea untuk memasukkan query:
<textarea cols="60" rows="5" name="perintah">
<?php
$perintah_tampil=stripslashes(htmlspecialchars("$perintah", ENT_QUOTES));
echo "$perintah_tampil";
?>
</textarea>
Perintah PHP ‘stripslashes’ diguna-kan untuk menghilangkan backslash (\) pada perintah yang di
Post. Sedangkah ‘htmlspecialchars’ ber-fungsi untuk merubah beberapa karakter ke HTML entiti,
seperti '&' (ampersand) menjadi '&amp;'.
Kemudian membuat tombol untuk mengirim query:
<input name="masukkan" type="submit" accesskey="P" value="Masukkan Perintah &lt;Alt-P&gt;"
/>
Untuk menampilkan hasil dari eksekusi query digunakan bantuan tag tabel. Sebelum dibentuk tabel
query harus dieksekusi terlebih dahulu dengan perintah:
$result=mysql_db_query($database,$perintah);
Jika query benar maka $result akan berisi data yang diminta. Untuk menampilkan jumlah kolom
yang diminta menggunakan perintah:
for($i=0;$i<mysql_num_fields($result);$i++)
{...................}
Sedangkan jumlah baris, mengguna-kan perintah :
while($row=mysql_fetch_row($result))
{...................}
Jumlah baris yang terpengaruh oleh hasil dari query dapat diperoleh dengan perintah ‘mysql_affected_rows()’, sedangkan untuk menampilkan pesan kesalahan jika query tidak benar
dapat menggunakan perintah ‘mysql_error()’.
Selamat mencoba!

Teknik Modularitas di PHP

Konsep modularitas dalam programming diperlukan untuk mempermudah dalam pengorganisasian script/program. Adapun prinsip dari konsep ini adalah meletakkan beberapa perintah yang menjalankan suatu tugas khusus ke dalam modul atau file script tersendiri. Setiap kali modul tersebut dibutuhkan, kita hanya menyisipkan modul tersebut ke dalam script yang sedang dibuat dengan cara memanggilnya.
Adapun cara memanggil modul dengan menggunakan perintah
include "namafilemodul";
Perhatikan gambaran penggunaan konsep modularitas berikut ini:
Misalkan Anda membuat modul dan disimpan dalam script bernama modulku.php. Selanjutnya Anda sedang membuat script tertentu katakanlah diberinama file scriptku.php. Kebetulan dalam scriptku.php Anda membutuhkan modulku.php, maka skema yang terjadi adalah:
 

Dari skema di atas, jelas tampak bahwa bila Anda memberikan perintah include "modulku.php"; dalam scriptku.php, maka akan identik dengan bila Anda menyisipkan script yang ada dalam modulku.php ke dalam scriptku.php secara manual.
 Contoh:
Dalam contoh ini kita akan menggunakan konsep modularitas untuk membuat script operasi aritmatika penjumlahan dan pengurangan dari 2 buah bilangan. Untuk input bilangannya disimpan dalam modul tersendiri, misalkan dinamakan bilangan.php. Selanjutnya modul ini akan diincludekan ke dalam script penjumlahan dan pengurangan.
bilangan.php
<?php
$bil1 = 10;
$bil2 = -5;
?>
jumlah.php
<?php
include "bilangan.php";
$hasil = $bil1 + $bil2;
echo "Hasil penjumlahannya adalah : ".$hasil;
?>
Bentuk script jumlahkan.php di atas akan identik dengan script berikut ini
<?php
$bil1 = 10;
$bil2 = -5;
$hasil = $bil1 + $bil2;
echo "Hasil penjumlahannya adalah : ".$hasil;
?>
kurang.php
<?php
include "bilangan.php";
$hasil = $bil1 - $bil2;
echo "Hasil pengurangannya adalah : ".$hasil;
?>
Script kurang.php di atas akan identik dengan
<?php
$bil1 = 10;
$bil2 = -5;
$hasil = $bil1 - $bil2;
echo "Hasil pengurangannya adalah : ".$hasil;
?>

Penerapan Teknik Modularitas
Teknik modularitas dapat dipergunakan dalam pengaturan layout halaman web supaya lebih mudah. Sebelum Anda mengenal teknik modularitas, apa yang Anda lakukan bila diminta membuat halaman web sejumlah 20 buah dengan desain layout yang sama, namun kontennya berbeda? Tentu Anda akan membuat satu buah desain template untuk layout, lalu Anda tinggal mengganti kontennya saja.
OK.. itu mudah, namun bagaimana seandainya dari 20 buah halaman web tersebut Anda ingin ubah desainnya? Tentu Anda harus mengubah semua halaman satu persatu. Bagaimana bila terdapat 100 buah halaman web dan kesemuanya Anda ingin ubah desainnya? Wah repot ya kalau satu persatu. Nah… di sinilah kita akan gunakan teknik modularitas. Dengan teknik modularitas ini, Anda dapat mengubah desain layout dari banyak halaman web dengan satu langkah saja secara cepat.
Perhatikan contoh berikut ini:
Misalkan kita buat desain layout untuk halaman web kita sebagai berikut:
<html>
<head>
<title>Halaman Webku</title>
</head>
<body background="yellow">
<h1><font face="arial">…</font></h1>
<p><font face="verdana"> … </font></p>
</body>
</html>
Nah… misalkan kita akan membuat 3 halaman web menggunakan layout di atas. Maka caranya, kita cari blok dalam HTML layout yang nantinya akan diisi dengan konten yang berbeda-beda untuk masing-masing halaman.
<html>
<head>
<title>Halaman Webku</title>
</head>
<body bgcolor="yellow">
<h1><font face="arial">…</font></h1>
<p><font face="verdana"> … </font></p>
</body>
</html>
Keterangan:
Bagian yang diblok di atas merupakan bagian tag yang nantinya akan diisi dengan konten yang berbeda-beda untuk setiap halamannya. Langkah selanjutnya, kita pindahkan tag HTML mulai bagian paling atas dari layout
sampai dengan sebelum tag yang dicetak tebal. Tag-tag tersebut kita pindahkan ke dalam modul tersendiri, misalkan dinamakan header.php
header.php
<html>
<head>
<title>Halaman Webku</title>
</head>
<body bgcolor="yellow">
Kemudian pindahkan tag setelah bagian yang dicetak tebal dalam layout sampai dengan tag terakhir ke dalam modul tersendiri dan simpan dengan nama footer.php.
footer.php
</body>
</html>
Nah… selanjutnya untuk setiap halaman yang ingin Anda buat, berikan include "header.php" dan include "footer.php";
hal1.php
<?php
include "header.php";
?>
<h1><font face="arial">Ini Halaman 1</font></h1>
<p><font face="verdana">Ini isi halaman 1. Ini isi halaman 1</font></p>
<?php
include "footer.php";
?>
hal2.php
<?php
include "header.php";
?>
<h1><font face="arial">Ini Halaman 2</font></h1>
<p><font face="verdana">Ini isi halaman 2. Ini isi halaman 2</font></p>
<?php
include "footer.php";
?>
hal3.php
<?php
include "header.php";
?>
<h1><font face="arial">Ini Halaman 3</font></h1>
<p><font face="verdana">Ini isi halaman 3. Ini isi halaman 3</font></p>
<?php
include "footer.php";
?>
Nah… dengan demikian, kita akan peroleh 3 halaman web yang pasti memiliki layout yang sama. Terus… bagaimana bila kita ingin mengubah layoutnya? Misal kita ubah warna background menjadi hijau. Yang Anda lakukan hanyalah mengedit modul header.php karena pengaturan warna background terdapat pada modul tersebut.

Senin, 19 Desember 2011

Tutorial Membuat AJAX Search dengan PHP

Tutorial Membuat AJAX Search atau skrip pencarian data menggunakan AJAX. Tutorial ini adalah kelanjutan dari tutorial Membuat Searching (Skrip Pencarian Data). Sebelum mengikuti tutorial ini ada baiknya untuk mengikuti tutorial AJAX sebelumnya. AJAX search bisa diterapkan pada quick search. Hasil akhir tutorial ini adalah skrip pencarian seperti google instant search. Tutorial ini menggunakan jQuery, jQuery bisa didownload di website jQuery, atau bisa juga menggunakan google CDN http://code.google.com/apis/libraries/devguide.html#jquery.
Tutorial AJAX search ini masih menggunakan tabel siswa seperti berikut:

Fieldname Tipe Data Keterangan
idint(11)primary key
namavarchar(50)
ayahvarchar(50)
ibuvarchar(50)
alamattext

selain itu diasumsikan Anda telah memiliki pengetahuan javascript, DOM dan jQuery.

AJAX Search


Gunakanlah skrip php dan javascript di bawah untuk membuat AJAX search (simpan dengan nama ajax-search.php). Skrip di bawah merupakan pengembangan dari skrip quick search di tutorial Membuat Searching (Skrip Pencarian Data).
<!--file ajax-search.php -->
<?php if(!isset($_GET['q'])):?>
<!-- form quick search --> 
<form name="form1" method="get" action=""> 
Search : <input type="text" name="q" id="q"/> <input type="submit" value="Search"/> 
</form> 
<!-- tempat hasil pencarian ditampilkan -->
<div id="result"></div>
<!-- javascript -->
<!-- jquery -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
 var allow = true;
 $(document).ready(function(){
  $("#q").keypress(function(e){
   if(e.which == '13'){
    e.preventDefault();
    loadData();
   }else if($(this).val().length >= 2){
    loadData();
   }
  });
 });
 function loadData(){
  if(allow){
   allow = false;
   $("#result").html('loading...');
   $.ajax({
    url:'ajax-search.php?q='+escape($("#q").val()),
    success: function (data){
     $("#result").html(data);
     allow = true;
    }
   });
  }
 }
</script>
<?php endif;?>
<?php 
if(isset($_GET['q']) && $_GET['q']){ 
 $conn = mysql_connect("localhost", "root", ""); 
 mysql_select_db("test"); 
 $q = $_GET['q']; 
 $sql = "select * from siswa where nama like '%$q%' or 
 ayah like '%$q%' or ibu like '%$q%' or alamat like '%$q%'"; 
 $result = mysql_query($sql); 
 if(mysql_num_rows($result) > 0){ 
 ?> 
 <table> 
 <tr> 
 <td>Nama</td> 
 <td>Ayah</td> 
 <td>Ibu</td> 
 <td>Alamat</td> 
 </tr> 
 <?php 
 while($siswa = mysql_fetch_array($result)){?> 
 <tr> 
 <td><?php echo $siswa['nama'];?></td> 
 <td><?php echo $siswa['ayah'];?></td> 
 <td><?php echo $siswa['ibu'];?></td> 
 <td><?php echo $siswa['alamat'];?></td> 
 </tr> 
 <?php }?> 
 </table> 
 <?php 
 }else{ 
 echo 'Data not found!'; 
 } 
} 
?> 

pada baris ke-11 sampai ke-37 ditambahkan javascript untuk menampilkan data secara dinamis pada saat pengguna mengetikkan 3 karakter atau lebih atau pada saat pengguna menekan tombol enter.

Selamat Mencoba