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!