Friday, August 15, 2008 at 1:36:00 AM

Mengakses MySQL dengan PHP - Bagian 3

Dityo Nurasto

Under categories of Development, PHP | Comments (0)

Wiuh, sudah lama gue kagak mengurus kandang gue sendiri. Ok, ini bagian ke 3 dari seri Mengakses MySQL dengan PHP. Yang akan gue bahas adalah bagaimana mengupdate dan menghapus data dari database dengan PHP. Gue harap loe udah baca seri sebelumnya yaitu bagian 1 dan bagian 2.

Sebelumnya, Halaman List

Update data secara umum melibatkan dua webform, halaman list dari data dan halaman update/edit itu sendiri. Linkingnya gimana?, nah kita kulik dulu untuk halaman list yang telah kita buat sebelumnya. Ada baris -baris kode seperti ini pada bagian 1:

//iterasi terhadap resource query
    while($data_item = mysql_fetch_array($query))
    {
        //keluarkan data yang tersimpan pada array $data_item
        echo '<tr>';
        echo '<td align="center">'.$data_item['id'].'</td>';
        echo '<td align="center">'.$data_item['judul'].'</td>';
        echo '<td align="center">'.$data_item['tanggal'].'</td>';
        echo '<td align="center">'.$data_item['isi'].'</td>';
        echo '<td align="center"><a href="edit.php?id=">Edit</a> | <a href="delete.php?id=">Delete</a></td>';
        echo '</tr>';
    }

Rubahlah menjadi

//iterasi terhadap resource query
    while($data_item = mysql_fetch_array($query))
    {
    	//buat variable untuk menampung id dari berita
    	$id_berita = $data_item['id'];
        //keluarkan data yang tersimpan pada array $data_item
        echo '<tr>';
        echo '<td align="center">'.$id_berita.'</td>';
        echo '<td align="center">'.$data_item['judul'].'</td>';
        echo '<td align="center">'.$data_item['tanggal'].'</td>';
        echo '<td align="center">'.$data_item['isi'].'</td>';
        echo '<td align="center"><a href="editform.php?id='.$id_berita.'">Edit</a> | ';
		echo '<a href="deleteform.php?id='.$id_berita.'">Delete</a></td>';
        echo '</tr>';
    }

Apa yang kita rubah? kita menampung ID dari tiap - tiap berita ke dalam variable $id_berita, tujuannya adalah untuk menggunakan kembali ID tersebut untuk link ke halaman update atau konfirmasi penghapusan data. Kita perlu suatu pointer yang memberitahukan halaman lain, teknik yang gue gunakan dikenal dengan nama GET yang mengirimkan data melalui URL, berbeda dengan POST yang mengirimkan informasi - informasi melalui content dari HTTP. Coba lihat hasilnya sekarang, ketika kita menujuk mouse ke link edit maka akan muncul halaman yang akan dituju plus parameter yang diberikan untuk halaman tujuan.

Update Form

Untuk mudahnya, salinlah file tambahform.php dan rename menjadi editform.php, begitu juga dengan tambahdata.php dan rubahlah nama file yang telah disalin menjadi editdata.php. Sebenarnya banyak cara untuk update data, tapi gue ogah ngajarin loe pakai cara canggih, biar loe paham apa yang terjadi.

Setelah kita kopi, lihatlah perubahan yang gue buat untuk editform.php. Secara prinsip untuk mengambil / load dari database untuk muncul dalam halaman update/edit adalah

  1. Dapatkan nilai yang dikirim melalui querystring id
  2. Cek apakah id itu adalah angka, kalau bukan tampilkan error
  3. Kalau iya, proses untuk mengambil data
  4. Kalau datanya ada, tampilkan data
  5. Kalau tidak ada, tampilkan error

Sederhana khan? mari lihat coding berikut dan coba aplikasikan pada editform.php.

<?php

/* ambil id dari querystring, kita menggunakan $_GET
kelebihan dari menggunakan id di querystring adalah TIDAK AKAN DI CRAWL & DI CACHE oleh GOOGLE!
*/
$id = $_GET['id'];

//apakah id adalah angka?
if (is_numeric($id))
{
	/*
	Kita cek ke database, saya salin pembukaan koneksi dari list.php
	Kita mencoba mengakses mySQL, jika error maka keluarkan errornya.
	*/
	$db_link = mysql_connect('localhost','root','') or die('Error Nih: '.mysql_error());
	
	//kita membuka database
	mysql_select_db('belajar') or die('Yah, error lagi nih:'.mysql_error());
	
	//bangun query
	$sql = "SELECT * FROM berita WHERE id = $id";
	
	//menjalankan query
	$query = mysql_query($sql) or die('Mas, ada yang salah:'.mysql_error());
	
	//apakah jumlah record yang didapatkan lebih dari nol ?
	if (mysql_num_rows($query) > 0)
	{
		//dapatkan datanya
		$data = mysql_fetch_array($query);
		
		//kita buat variable - variable penampung, kita tindih variable $id, supaya aman :)
		$id = $data['id'];
		$judul = $data['judul'];
		$isi = $data['isi'];
	}
	else
	{
		//tampilkan error, the hard way
		die('ID yang diterima tidak terdapat dalam database');
	}
}
else
{
	//bukan!!
	die('ID harus berupa angka!');
}

?>
<html>
    <head>
        <title>Belajar PHP : Edit Data</title>
    </head>
    <body>
        <!-- parameter method pada form adalah cara untuk mengirim data -->
        <form name="berita" method="post" action="editdata.php">
            <fieldset>
            	<input type="hidden" name="id" value="<?php echo $id ?>" />
                <label id="labeljudul" for="inputjudul">Judul Berita</label>
                <!-- input untuk judul -->
                <input type="text"  name="judul" id="judul" value="<?php echo $judul; ?>" />
                <label id="labeljudul" for="inputisi">Isi Berita</label>
                <!-- input untuk isi -->
                <textarea name="isi" id="inputisi">
                <?php
                	echo $isi;
                ?>
				</textarea>
                <!-- tombol untuk kirim -->
                <input type="submit" name="submit" value="Edit Berita" id="submitberita"/>
            </fieldset>
        </form>
    </body>
</html>

Apakah loe lihat ada input yang dibuat hidden? itu sengaja dan kita tetap menggunakan POST untuk keamanan data, jadi data yang disubmit ke database tidak terlihat seperti querystring, lagipula lebih keliahatan profesional. Ca elah.

Sudah selesai? kita lanjutkan ke editdata.php. Kita tidak memasukkan data baru bukan? melainkan kita mau mengupdate data, nah input hidden untuk ID tadi berperan sebagai petunjuk untuk merubah data.

Kita memerlukan perintah DML (Data Manipulation Language) dari SQL, yaitu UPDATE.

Prinsip untuk mengecek keberadaan data sama seperti kita mengecek pada editform.php, kok. Cuma kita tidak menampilkan apapun, kita hanya membuat kode untuk proses update dan kemudian lempar kembali ke halaman edit dari data yang telah diedit. Mari kita lihat coding berikut ini yaitu editdata.php.

<?php

/* jangan lupa untuk mengambil id dari editform.php, kita 
   menggunakan $_POST karena form yang menggunakan metoda POST
*/
$id = $_POST['id'];

//cek juga apakah id itu adalah angka?
if(is_numeric($id))
{
	
	//kita mengambil data yang telah kita tentukan pada form yang baru kita buat
	//tadi ada input yang namanya judul khan? masukkan. Persis seperti tambahform bukan?
	$judul = $_POST['judul'];
	$isi = $_POST['isi'];
	$tanggal = $_POST['tanggal'];
	
	//Kita mencoba mengakses mySQL, jika error maka keluarkan errornya.
	$db_link = mysql_connect('localhost','root','') or die('Error Nih: '.mysql_error());
	
	//kita membuka database
	mysql_select_db('belajar') or die('Yah, error lagi nih:'.mysql_error());
	
	//kalau mau cek ulang ID apakah ada di dalam database?, coba ketik ulang dari editform.php
	
	//nah kita gunakan variable yang telah kita buat tadi menjadi sebuah sql query
	$sql = "UPDATE berita SET judul = '$judul', isi = '$isi', tanggal = NOW() WHERE id = $id";
	
	//masukkan perintah yang baru kita buat menjadi query ke MySQL
	mysql_query($sql) or die('Mas, ada yang salah:'.mysql_error());
	
	//kita kembali ke daftar kita
	header('location: list.php');
}
else
{
	die('Hayo, kok masukin id yang bukan angka!');
}
?>

Coba untuk mengetik ulang kode tersebut, supaya paham. Selesai sudah kita membuat kode untuk update data

Penghapusan Data : Konfirmasi donk

Jangan sekali - kali membuat fitur penghapusan tanpa ada konfirmasi dari pengguna / user. Jadi kita buat form aja yah, namakan deleteform.php

<?php

/* ambil id dari querystring, kita menggunakan $_GET
kelebihan dari menggunakan id di querystring adalah TIDAK AKAN DI CRAWL & DI CACHE oleh GOOGLE!
*/
$id = $_GET['id'];

//apakah id adalah angka?
if (is_numeric($id))
{
	/*
	Kita cek ke database, saya salin pembukaan koneksi dari list.php
	Kita mencoba mengakses mySQL, jika error maka keluarkan errornya.
	*/
	$db_link = mysql_connect('localhost','root','') or die('Error Nih: '.mysql_error());
	
	//kita membuka database
	mysql_select_db('belajar') or die('Yah, error lagi nih:'.mysql_error());
	
	//bangun query
	$sql = "SELECT * FROM berita WHERE id = $id";
	
	//menjalankan query
	$query = mysql_query($sql) or die('Mas, ada yang salah:'.mysql_error());
	
	//apakah jumlah record yang didapatkan lebih dari nol ?
	if (mysql_num_rows($query) > 0)
	{
		//dapatkan datanya
		$data = mysql_fetch_array($query);
		
		//kita buat variable - variable penampung, kita tindih variable $id, supaya aman :)
		$id = $data['id'];	
	}
	else
	{
		//tampilkan error, the hard way
		die('ID yang diterima tidak terdapat dalam database');
	}
}
else
{
	//bukan!!
	die('ID harus berupa angka!');
}

?>
<html>
    <head>
        <title>Belajar PHP : Hapus Data</title>
    </head>
    <body>
        <!-- parameter method pada form adalah cara untuk mengirim data -->
        <p>Apakah anda mau menghapus data?</p>
        <form name="berita" method="post" action="deletedata.php">
            <fieldset>
            	<input type="hidden" name="id" value="<?php echo $id ?>" />                
                <!-- tombol untuk kirim -->
                <input type="submit" name="submit" value="Ya, Hapus Berita" id="submitberita"/>
                <p><a href="list.php">Batalkan penghapusan</a></p>
            </fieldset>
        </form>
    </body>
</html>

Kalau user ingin dilakukan penghapusan, maka lanjut ke proses penghapusan. Untuk menghapus data, kita tetap butuh SQL yaitu perintah DELETE. Kita menggunakan input hidden untuk ID sebagai petunjuk data yang harus dihapus. Lihat coding berikut.

<?php

/* jangan lupa untuk mengambil id dari deleteform.php, kita 
   menggunakan $_POST karena form yang menggunakan metoda POST
*/
$id = $_POST['id'];

//cek juga apakah id itu adalah angka?
if(is_numeric($id))
{
	
	//Kita mencoba mengakses mySQL, jika error maka keluarkan errornya.
	$db_link = mysql_connect('localhost','root','') or die('Error Nih: '.mysql_error());
	
	//kita membuka database
	mysql_select_db('belajar') or die('Yah, error lagi nih:'.mysql_error());
	
	//kalau mau cek ulang ID apakah ada di dalam database?, coba ketik ulang dari editform.php
	
	//nah kita gunakan variable yang telah kita buat tadi menjadi sebuah sql query
	$sql = "DELETE FROM berita WHERE id = $id";
	
	//masukkan perintah yang baru kita buat menjadi query ke MySQL
	mysql_query($sql) or die('Mas, ada yang salah:'.mysql_error());
	
	//kita kembali ke daftar kita
	header('location: list.php');
}
else
{
	die('Hayo, kok masukin id yang bukan angka!');
}

?>

Nah, setelah selesai lempar ke halaman list

Tugas

  1. Coba perbaiki tampilan dan juga cek apakah judul, isi dimasukkan (kagak boleh kosong)
  2. Coba buat sebuah input untuk memasukkan tanggal yang kita mau, terserah penerapannya
  3. Buatlah sebuah halaman untuk menampilkan satu berita saja, gunakan SELECT untuk ambil data, bisa dilihat contohnya di editform.php

Selesai

Sudah selesai tugas loe membuat aplikasi kelas teri ini, hahahaha. Coba membuat aplikasi kelas teri lainnya yah. InsyaAllah bisa membuat loe lebih HEBAT dari gue.

Semoga tutorial berseri ini memberikan manfaat untuk loe, kawan. Terima Kasih.

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading



This is me!

Hi. My name is Dityo Nurasto. I am freelance software and web developer.

ShoutBox



Recent comments

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008