Proses
update suatu data dengan menggunakan script PHP dan MySQL biasanya memiliki
mekanisme sebagai berikut:
1.
Tampilkan list data terlebih dahulu
2.
Buat sebuah link pada setiap baris data yang menuju
proses update. Link tersebut memuat sebuah parameter yang di dalamnya terdapat
value yang nantinya digunakan sebagai acuan dalam proses update datanya.
3.
Selanjutnya bila link tersebut diklik akan muncul form berisi data yang
akan diedit.
Dalam
melakukan proses update data, pada prinsipnya adalah menjalankan query update
pada SQL nya.
UPDATE namaTabel SET namafield
= value WHERE …
Baiklah…
kita langsung saja mempraktekkan proses update data. Sebagai contoh, kita akan
mengupdate data mahasiswa, dimana tabel untuk menyimpan data mahasiswanya
berbentuk seperti di bawah ini
nim
|
varchar(5)
|
primary
key
|
nama
|
varchar(30)
|
|
alamat
|
text
|
|
sex
|
varchar(1)
|
|
tgllahir
|
date
|
|
Sebagai contoh misalkan kita
telah mempunyai data awal sebagai berikut
NIM
|
NAMA
|
ALAMAT
|
SEX
|
TGLLAHIR
|
M0001
|
A
|
SOLO
|
L
|
1979-10-20
|
M0002
|
B
|
JAKARTA
|
L
|
1982-09-10
|
M0003
|
C
|
BANDUNG
|
P
|
1980-11-07
|
Catatan:
Untuk membuat data awal Anda bisa mengisikannya langsung ke MySQL dengan
phpMyAdmin atau membuat script PHP untuk memasukkan datanya.
Sesuai
dengan mekanisme di atas, maka langkah pertama kita buat terlebih dahulu script
untuk menampilkan list datanya. Dalam script list ini, data akan disajikan
dalam bentuk tabel dengan 6 buah kolom. Lima kolom pertama untuk menampilkan
data semua fieldnya, sedangkan kolom ke-6 untuk meletakkan link untuk editnya.
list.php
<?php
mysql_connect("localhost",
"root", "root");
mysql_select_db("data");
// query SQL untuk
memunculkan semua mahasiswa
$query = "SELECT * FROM
mhs";
$hasil =
mysql_query($query);
echo "<table
border='1'>";
echo
"<tr><td>NIM</td>
<td>Nama
Mahasiswa</td>
<td>Alamat</td>
<td>Sex</td>
<td>Tgl
Lahir</td>
<td>Action</td></tr>";
while ($data =
mysql_fetch_array($hasil))
{
echo
"<tr><td>".$data['nim']."</td>
<td>".$data['nama']."</td>
<td>".$data['alamat']."</td>
<td>".$data['sex']."</td>
<td>".$data['tgllahir']."</td>
<td>Edit</td></tr>";
}
echo
"</table>";
?>
Hasil dari script di atas
akan menghasilkan tampilan sebagai berikut:
Selanjutnya, bagaimana
bentuk link editnya? Link edit misalkan kita buat sebagai berikut
Dalam
link edit di atas, link akan diarahkan ke script edit.php yang nantinya akan
memunculkan form untuk keperluan edit data. Di dalam link tersebut terdapat
parameter nim yang nantinya digunakan sebagai acuan mahasiswa manakah yang
datanya akan diedit. Sebagai contoh, misalkan akan diedit mahasiswa bernim ‘M0001
maka linknya akan berbentuk
OK..
sekarang kita modifikasi sedikit script list.php di atas untuk memunculkan link
editnya.
list.php
<?php
mysql_connect("localhost",
"root", "root");
mysql_select_db("data");
// query SQL untuk
memunculkan semua mahasiswa
$query = "SELECT * FROM
mhs";
$hasil =
mysql_query($query);
echo "<table border='1'>";
echo
"<tr><td>NIM</td>
<td>Nama
Mahasiswa</td>
<td>Alamat</td>
<td>Sex</td>
<td>Tgl
Lahir</td>
<td>Action</td></tr>";
while ($data =
mysql_fetch_array($hasil))
{
echo
"<tr><td>".$data['nim']."</td>
<td>".$data['nama']."</td>
<td>".$data['alamat']."</td>
<td>".$data['sex']."</td>
<td>".$data['tgllahir']."</td>
<td><a
href='edit.php?nim=".$data['nim']."'>Edit</a></td></tr>";
}
echo
"</table>";
?>
Langkah
selanjutnya kita buat script edit.php yang nantinya akan memunculkan form edit
sekaligus data mahasiswa yang akan diedit. Mungkin yang menjadi pertanyaan
adalah bagaimana cara memunculkan data mahasiswa yang akan diedit? Ya… jawabnya
adalah dengan menggunakan query SELECT dengan nim sebagai syaratnya. Dalam hal
in nim yang ada dalam link edit lah yang nantinya akan digunakan sebagai
syarat.
SELECT * FROM mhs WHERE nim
= …;
OK… berikut
ini adalah script edit.php untuk memunculkan form dan data yang akan diedit.
edit.php
<?php
mysql_connect("localhost",
"root", "root");
mysql_select_db("data");
$nim = $_GET['nim'];
$query =
"SELECT * FROM mhs WHERE nim = '$nim'"; $hasil = mysql_query($query);
$data =
mysql_fetch_array($hasil);
echo
"<form method='post' action='update.php'>"; echo
"<table>";
echo
"<tr><td>NIM</td><td>:</td>
<td><input
type='text' name='nim'
value='".$data['nim']."'></td></tr>"; echo
"<tr><td>Nama Mahasiswa</td><td>:</td>
<td><input
type='text' name='nama'
value='".$data['nama']."'></td></tr>"; echo
"<tr><td>Alamat</td><td>:</td>
<td><textarea
name='alamat'>".$data['alamat']."</textarea></td></tr>";
echo "<tr><td>Sex</td><td>:</td>
<td><input
type='radio' name='sex' value='L'> Laki-Laki
<input
type='radio' name='sex' value='P'> Perempuan</td></tr>";
echo "<tr><td>Tgl Lahir</td><td>:</td><td>
<select
name='tgl'>";
for ($i=1; $i<=31; $i++)
{
echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
<select
name='bln'>";
for ($i=1; $i<=12; $i++)
{
echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
<select
name='thn'>";
for ($i=1980; $i<=1997;
$i++)
{
echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
</td></tr>";
echo
"</table>";
echo
"<input type='submit' name='submit' value='Submit'>"; echo
"</form>";
?>
Catatan:
Untuk keperluan edit data
nim, script di atas menggunakan komponen textbox.
Demikian pula edit data nama
mahasiswa.
Sedangkan untuk alamat,
script di atas menggunakan komponen textarea.
Untuk edit jenis kelamin,
kita menggunakan komponen radiobutton
Untuk
edit tanggal lahir mahasiswa, kita menggunakan 3 komponen combobox yang
masing-masing digunakan untuk tanggal, bulan dan tahun. Option dari
masing-masing combobox digenerate otomatis dengan looping FOR.
Hasil
tampilan dari script di atas ketika digunakan untuk mengedit data mahasiswa
bernim ‘M0001’ adalah
Bila
kita perhatikan tampilan script edit di atas, maka untuk edit jenis kelamin
masih belum berfungsi. Seharusnya karena data awal mahasiswa bernim ‘M0001’
adalah berjenis kelamin ‘Laki-laki’ maka radiobutton Laki-laki terpilih
(checked). Demikian pula bila jenis kelaminnya adalah Perempuan. Lantas..
bagaimana caranya mewujudkan ha ini? OK.. caranya adalah dengan menggunakan
konsep IF.
Perhatikan bagian script
dari edit.php di bawah ini:
echo
"<tr><td>Sex</td><td>:</td>
<td><input
type='radio' name='sex' value='L'> Laki-Laki
<input type='radio'
name='sex' value='P'> Perempuan</td></tr>";
Nah… kita akan memodifikasi
bagian script di atas menjadi seperti di bawah ini:
echo "<tr><td>Sex</td><td>:</td><td>”;
if ($data['sex'] == ”L”)
echo
”<input type='radio' name='sex' value='L' checked> Laki-Laki <input
type='radio' name='sex' value='P'> Perempuan”;
else if ($data['sex'] == ”P”)
echo ”<input type='radio'
name='sex' value='L'> Laki-Laki
<input type='radio'
name='sex' value='P' checked> Perempuan”;
echo
"</td></tr>";
Konsep
dari ide script modifikasi di atas adalah jika data jenis kelamin mahasiswa
adalah laki-laki (L) maka komponen radiobutton laki-laki akan dichecked.
Demikian pula jika perempuan.
Setelah bagian script edit
jenis kelamin diedit maka hasilnya adalah
Simpel bukan idenya? ☺
OK…
next… kita perhatikan bagian edit tanggal lahir. Dalam tampilan script yang
telah kita buat di atas, seharusnya tanggal lahir menyesuaikan data tanggal
lahir awal sebelum diedit.
Untuk
mewujudkan hal ini, pada dasarnya konsep atau idenya sama dengan jenis kelamin
di atas yaitu menggunakan IF. Namun… yang menjadi masalah bagaimana caranya
memecah tanggal supaya ketiga komponen combobox yang ada dapat membaca tanggal,
bulan dan tahun.
OK solusi
untuk memecah tanggal, pernah kita bahas sebelumnya yaitu dengan memanfaatkan
function explode().
Berikut ini script edit.php
yang telah dimodifikasi untuk edit tanggal lahirnya
edit.php
<?php
mysql_connect("localhost",
"root", "root");
mysql_select_db("data");
$nim = $_GET['nim'];
$query =
"SELECT * FROM mhs WHERE nim = '$nim'"; $hasil = mysql_query($query);
$data =
mysql_fetch_array($hasil);
// memecah tanggal lahir ke
dalam masing-masing unsur (tgl, bln, thn)
$pecahTgl =
explode("-", $data['tgllahir']);
$tgl = $pecahTgl[2];
$bln = $pecahTgl[1];
$thn = $pecahTgl[0];
echo
"<form method='post' action='update.php'>"; echo
"<table>";
echo "<tr><td>NIM</td><td>:</td>
<td><input
type='text' name='nim'
value='".$data['nim']."'></td></tr>"; echo
"<tr><td>Nama Mahasiswa</td><td>:</td>
<td><input
type='text' name='nama'
value='".$data['nama']."'></td></tr>"; echo
"<tr><td>Alamat</td><td>:</td>
<td><textarea
name='alamat'>".$data['alamat']."</textarea></td></tr>";
echo "<tr><td>Sex</td><td>:</td>
<td><input
type='radio' name='sex' value='L'> Laki-Laki
<input
type='radio' name='sex' value='P'> Perempuan</td></tr>";
echo "<tr><td>Tgl Lahir</td><td>:</td><td>
<select
name='tgl'>";
for ($i=1; $i<=31; $i++)
{
if
($i == $tgl) echo "<option value='".$i."'
selected>".$i."</option>"; else echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
<select
name='bln'>";
for ($i=1; $i<=12; $i++)
{
if
($i == $bln) echo "<option value='".$i."'
selected>".$i."</option>"; else echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
<select
name='thn'>";
for ($i=1980; $i<=1997;
$i++)
{
if
($i == $thn) echo "<option value='".$i."' selected>".$i."</option>";
else echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
</td></tr>";
echo
"</table>";
echo
"<input type='submit' name='submit' value='Submit'>"; echo
"</form>";
?>
Nah… mudah dan simpel bukan
idenya?
Sekarang
yang terakhir, kita buat script untuk updatenya. Tapi… eiiit… wait a minute..
bagaimana bila NIM mahasiswanya yang diubah? Lho.. emangnya ada apa? Mungkin d
pikiran Anda konsepnya sama dengan update data yang lain. Iya sih… but… coba
kita lihat pemisalannya. Jika data seorang mahasiswa sebelum diubah memiliki
NIM ‘M0001’. Kemudian data NIM nya diubah menjadi ‘M0002’. Bagaimana SQL nya?
SQL nya adalah sebagai berikut:
UPDATE mhs SET nim = ‘M0002’
WHERE nim = ‘M0001’;
Dari
SQL di atas, kita bisa melihat bahwa kita perlu NIM lama mahasiswa guna proses
update tersebut. Nah… bila komponen textbox pada form edit untuk update NIM di
atas kita ubah isinya, maka dengan kata lain kita akan kehilangan NIM yang
lama. Nah… gimana tuh?
OK…
ide untuk menanggulangi hal tersebut adalah kita buat komponen hidden input
untuk menyimpan NIM yang lama (sebelum diedit). NIM lama ini nantinya kita
gunakan sebagai acuan proses updatenya.
Nah.. dengan
demikian kita modifikasi kembali script edit.php yang telah kita buat sebelumnya.
edit.php
<?php
mysql_connect("localhost",
"root", "root");
mysql_select_db("data");
$nim = $_GET['nim'];
$query =
"SELECT * FROM mhs WHERE nim = '$nim'"; $hasil = mysql_query($query);
$data =
mysql_fetch_array($hasil);
$pecahTgl = explode("-",
$data['tgllahir']);
$tgl = $pecahTgl[2];
$bln = $pecahTgl[1];
$thn = $pecahTgl[0];
echo
"<form method='post' action='update.php'>"; echo
"<table>";
echo
"<tr><td>NIM</td><td>:</td>
<td><input
type='text' name='nimBaru' value='".$data['nim']."'></td></tr>";
echo
"<tr><td>Nama Mahasiswa</td><td>:</td>
<td><input
type='text' name='nama'
value='".$data['nama']."'></td></tr>"; echo
"<tr><td>Alamat</td><td>:</td>
<td><textarea
name='alamat'>".$data['alamat']."</textarea></td></tr>";
echo "<tr><td>Sex</td><td>:</td>
<td><input
type='radio' name='sex' value='L'> Laki-Laki
<input
type='radio' name='sex' value='P'> Perempuan</td></tr>";
echo "<tr><td>Tgl
Lahir</td><td>:</td><td>
<select
name='tgl'>";
for ($i=1; $i<=31; $i++)
{
if ($i == $tgl)
echo "<option value='".$i."'
selected>".$i."</option>"; else echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
<select
name='bln'>";
for ($i=1; $i<=12; $i++)
{
if ($i ==
$bln) echo "<option value='".$i."'
selected>".$i."</option>"; else echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
<select
name='thn'>";
for ($i=1980; $i<=1997;
$i++)
{
if ($i ==
$thn) echo "<option value='".$i."'
selected>".$i."</option>"; else echo "<option
value='".$i."'>".$i."</option>";
}
echo "</select>
</td></tr>";
echo
"</table>";
echo
"<input type='hidden' name='nimLama' value='".$data[‘nim’]."'>";
echo "<input type='submit' name='submit' value='Submit'>";
echo
"</form>";
?>
Catatan:
Letak
komponen hidden input ini bisa diletakkan di sebarang tempat di dalam form,
mengingat komponen ini tidak terlihat oleh mata ☺
Nah.. dengan
demikian kita sekarang bisa konsentrasi ke script updatenya. Konsepnya hanyalah
menjalankan query SQL UPDATE.
update.php
<?php
mysql_connect("localhost",
"root", "root");
mysql_select_db("data");
$nimLama =
$_POST['nimLama'];
$nimBaru =
$_POST['nimBaru'];
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$sex = $_POST['sex'];
//
menggabung unsur tgl dalam combobox menjadi satu dalam
format yyyy-mm-dd $tgllahir =
$_POST['thn']."-".$_POST['bln']."-".$_POST['tgl'];
$query = "UPDATE mhs
SET
nim = '$nimBaru', nama = '$nama', alamat = '$alamat', sex = '$sex', tgllahir =
'$tgllahir'
WHERE nim =
'$nimLama'";
$hasil =
mysql_query($query);
if ($hasil) echo "Data
sudah diupdate";
else echo "Data gagal
diupdate";
?>
OK deh selesai proses
pembuatan script updatenya.