Pages

Friday, February 27, 2009

Update Database with OOP


Penggunaan seleksi untuk menampilkan database menggunakan OOP telah penulis jelaskan sebelumnya. OOP dalam php 5 ini telah terbukti ampuh dalam menghasilkan source code yang efisien untuk menangani manajemen database. Tentu hambar rasanya jika penggemar sayur asam memakannya tanpa ada sedikitpun rasa garam di dalamnya. Nah begitu juga dengan artikel penulis sebelumnya, menampilkan database dengan OOP masih belum cukup tanpa pengetahuan selanjutnya mengenai bagaimana melakukan update dan delete record pada database menggunakan OOP ini. Oleh karena itu di sinilah penulis akan jelaskan sedikit penggunaan OOP untuk menghandle database. Untuk mempelajarinya mari buat databasenya terlebih dahulu :

-- simple cms database
create database simplecms ;
use simplecms  ;
create table article( id int(4) primary key auto_increment, category varchar(225), article_title varchar(225) );
insert into article values('','web design', 'Web Design Make Over with CSS');
insert into article values('','graphic design','CorelDraw the handy tool');
insert into article values('','flash animation','Make a splash water animation');

Ya, langsung saja penulis berikan contoh kasusnya, script intinya, index.php, dan biasanya script seperti ini digunakan sebagai halaman admin. Tentunya admin disini dapat melakukan update dan delete record database.

<?php
$mysqli = new mysqli("localhost", "root", "", "simplecms");
if (mysqli_connect_errno())
{
    echo("Nggak bisa konek : ".mysqli_connect_error());
    exit();
}
$cat = $mysqli->prepare("select id, category, article_title from article order by id");
$cat->execute();
$cat->bind_result($id, $category, $article_title);
?>

<html>
<head>
<title>Database in OOP Way ; Seleksi Data dengan mySqli</title>
</head>
<body><table border='0' width='40%'>

<caption><h3>SIMPLECMS CONTROL PANEL :</h3></caption>
<tr><th>No</th><th>Category</th><th>Title</th></tr>
<?php
while ($cat->fetch())
    echo "<tr><td>".$id."</td><td>".$category."</td>"."<td>".$article_title."</td><td><a href=?yang_ini_diedit=ya&id_nya="
    .$id.">EDIT</a></td><td><a href=?yang_ini_didelete=ya&id_nya=".$id.">DELETE</a></td></tr>"; 
?>
</table>
<hr width='39%' align='left'/>
<?php
if ($_REQUEST['yang_ini_didelete'] == 'ya')
{
    echo "Wah... record ".$_REQUEST['id_nya']." bener-bener mau di hapus ya ?" ;
    echo "<form action='?delete_langsung_lah=ya' method='POST'>
            <table><input type='hidden' name='id' value=".$_REQUEST['id_nya'].">
            <tr><td><input type='submit' value='ya' name='submit'></td></tr></table>
            </form>";
}

else if ($_REQUEST['delete_langsung_lah'] == 'ya')
{
    $id_delete = $_POST['id'];
    $cat = $mysqli->prepare("delete from article where id=?");
    $cat->bind_param('i',$id);
    $id = $id_delete;
    $cat->execute();
    echo "Database berhasil dihapus ... Anda akan diredirect dalam 2 detik";
    echo "<meta http-equiv='refresh' content='2;url=index.php'>";
}

else if ($_REQUEST['yang_ini_diedit'] == 'ya')
{       
    $cat = $mysqli->prepare("select id, category, article_title from article where id=?");
    $cat->bind_param('i',$id);
    $id = $_REQUEST['id_nya'];
    $cat->execute();
    $cat->bind_result($id, $category, $article_title);
    echo "<caption>Yang mau diedit...</caption>";
    echo "<table><form action='?update_langsung_lah=ya' method='POST'>";
    while ($cat->fetch()) {
    echo "<tr><td>Category : </td><td><select name='category'><option value=".str_replace(" ","_",$category).">".$category."</option></select></td></tr>";
    echo "<tr><td>Title : </td><td><textarea name='title' cols='51' rows='7'>";
    echo $article_title ; }
    echo "</textarea></td></tr>";
    echo "<input type='hidden' name='id' value=".$_REQUEST['id_nya'].">";
    echo "<tr><td></td><td><input type='submit' name='submit' value='update'></td></tr>";
    echo "</form></table>";
}

else if ($_REQUEST['update_langsung_lah'] == 'ya')
{
    $category = str_replace("_"," ",$_POST['category']);
    $title = $_POST['title'];
    $id =  $_POST['id'];
   
    $cat = $mysqli->prepare("update article SET category ='$category', article_title = '$title' where id=?");
    $cat->bind_param('i',$id);
    $cat->execute();
   
    echo "Database berhasil diupdate ... Anda akan diredirect dalam 2 detik";
    echo "<meta http-equiv='refresh' content='2;url=index.php'>";
   
}
?>

</body>
</html>

Tampilannya nanti akan seperti ini :


Potongan source code di bawah ini digunakan untuk menampilkan database dengan cara OOP. Seperti yang pernah penulis jelaskan dalam artikel pertama mengenai penggunaan OOP dalam PHP 5 untuk memanage database.

$mysqli = new mysqli("localhost", "root", "", "simplecms");
if (mysqli_connect_errno())
{   
    echo("Nggak bisa konek : ".mysqli_connect_error());
    exit();
}
$cat = $mysqli->prepare("select id, category, article_title from article order by id");
$cat->execute();
$cat->bind_result($id, $category, $article_title);

Penjelasan detilnya dapat dilihat di artikel sebelumnya. Di sini penulis akan menjelaskan beberapa fungsi baru OOP dalam PHP 5. Lihat kembali fungsi tersebut pada baris ini :
 
...
$cat = $mysqli->prepare("delete from article where id=?");
$cat->bind_param('i',$id);
$id = $id_delete;
$cat->execute();
echo "Database berhasil dihapus ... Anda akan diredirect dalam 2 detik";
echo "<meta http-equiv='refresh' content='2;url=index.php'>";
...

Di dalam barisan tersebut terdapat kalimat pembentuk query sql yang sedikit berbeda, yaitu :
$cat = $mysqli->prepare("delete from article where id=?");

Terdapat tanda '?' sebagai perwakilan dari parameter syarat. Tanda tanya ini nantinya akan didefinisikan sebagai satu syarat dalam satu variable menggunakan fungsi bind_param(), sehingga jika sebuah query didefinisikannya  seperti ini :
cat = $mysqli->prepare("delete from article where id=?");

maka, harus terdapat fungsi bind_param() sesudahnya, seperti :
$cat->bind_param('i',$id);

Sehingga 2 baris kalimat tersebut sama halnya dengan query biasa, jika dalam query biasa maka hasilnya seperti ini :

$cat = "delete from article where id='$id'";
   
Setali 3 uang. :D. Ya ya ya ... tapi coba perhatikan kembali fungsi bind_param pada kalimat tersebut :
$cat->bind_param('i',$id);

Dalam parameter pertama fungsi bind_param di isi dengan 'i'.
Kenapa dengan 'i' ?, i ini adalah perwakilan dari variable yang bertipe integer. Dalam query seperti ini delete from article where id='$id', mustahil jika mengisinya dengan string, kenapa ? lihat struktur tablenya. :D, hasilnya nanti akan 0 jika menggunakan string. Adapun type dari parameter tersebut antara lain yaitu :

i : ini untuk variable yang bertipe integer
s : ini untuk variable yang bertipe string
d : ini untuk variable yang bertipe double
b : ini untuk variable yang bertipe blob.

Ya kita lompat ke baris berikutnya :
$id = $id_delete;
Statement ini hanyalah sebuah assignment, memenuhi syarat sebelumnya.

Selanjutnya adalah menjalankan querynya, eksekusi langsung :D , yakni :
$cat->execute();

Kembali muncul satu pertanyaan, bagaimana jika menggunakan update database dalam oop ? Silahkan lihat kembali baris di bawah ini :

$cat = $mysqli->prepare("update article SET category ='$category', article_title = '$title' where id=?");
$cat->bind_param('i',$id);
$cat->execute();

Sepertinya sudah jelas ya. :).

Definisikan terlebih dahulu querynya :
$cat = $mysqli->prepare("update article SET category ='$category', article_title = '$title' where id=?");

Penuhi syarat query tersebut :
$cat->bind_param('i',$id);   

Jalankan querynya :
$cat->execute();

Sudah jelas ya?  Jika masih ada yang ditanyakan silahkan layangkan email anda ke sini :
alkemail@gmail.com.
Script diatas dapat di download di sini …


Dedicated for ilmuwebsite e-learning community.


Sumber dari situs Ilmu Website dalam kategori php kuliah dengan judul Update, Delete Database with OOP

No comments:

Post a Comment