UPDATE DATA DENGAN PHP MySQL
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 nama alamat sex tgllahir
varchar(5) varchar(30) text varchar(1) date
primary key
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 semua fieldnya, sedangkan kolom ke-6 untuk meletakkan link untuk
editnya.
data
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>";
?>
Selanjutnya, bagaimana bentuk link editnya? Link
edit misalkan kita
buat sebagai berikut http://.../edit.php?nim=...
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 terdapa 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 editnya.
di atas untuk
memunculkan link
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.
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 dapa
membaca tanggal, bulan dan tahun.
OK solusi untuk memecah tanggal, pernah kita bahas sebelumnya yaitu
memanfaatkan function explode().
dengan
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 sebelumnya.
edit.php yang
telah kita buat
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.
Tugas Untuk Anda
Misalkan
Anda memiliki data
dan tabel sebagai
berikut: Tabel: Jenis Buku
kodeJenisBuku
|
namaJenisBuku
|
M
|
Majalah
|
R
|
Referensi
|
N
|
Koran
|
J
|
Journal
|
Tabel : Buku
kodeBuku
|
judulBuku
|
Pengarang
|
jenisBuku
|
B001
|
A
|
Mr. X
|
M
|
B002
|
B
|
Mr. Y
|
R
|
B003
|
C
|
Mr. X
|
R
|
B004
|
D
|
Mr. A
|
J
|
Tabel : Member
kodeMember
|
namaMember
|
M01
|
XXX
|
M02
|
YYY
|
M03
|
ZZZ
|
Tabel : Pinjam
Buku
kodePinjam
|
kodeBuku
|
kodeMember
|
tglPinjam
|
tglHrsKembali
|
1
|
B001
|
M01
|
2009-06-10
|
2009-06-17
|
2
|
B002
|
M02
|
2009-06-10
|
2009-06-17
|
3
|
B001
|
M02
|
2009-06-18
|
2009-06-25
|
4
|
B003
|
M03
|
2009-06-20
|
2009-06-27
|
5
|
B004
|
M02
|
2009-06-21
|
2009-06-28
|
Ketentuan
Tugas:
1.
Buatlah tabel-tabel di atas di
MySQL dengan menentukan sendiri tipe data masing-masing
fieldnya. Tentukan pula manakah field yang merupakan primary key untuk setiap tabelnya. Untuk tabel ‘Pinjam
Buku’, field kodePinjam menggunakan auto increment.
2.
Buatlah fasilitas untuk input
data untuk masing-masing tabel. Khusus input
data untuk tabel buku,
jenis buku harus
dipilih user melalui
sebuah combo box.
Isi lis combobox tersebut harus membaca data dari tabel
‘Jenis Buku’. Demikian pula untuk input data
peminjaman buku. Isian
untuk kode buku
harus menggunakan combo box
yang membaca data
dari tabel buku,
dan isian kode member harus menggunakan combo box yang
membaca data dari
tabel member.
3.
Pada input data peminjaman, setelah
mengisi tanggal peminjaman secara otomatis
tanggal harus kembali akan disimpan dalam tabel peminjaman. Selisih tanggal pinjam dengan tanggal
harus kembali adalah
7 hari.
4. Buatlah fasilitas untuk update data untuk keempat tabel di atas. Bentuk form editnya sama dengan bentuk form untuk input data.
4. Buatlah fasilitas untuk update data untuk keempat tabel di atas. Bentuk form editnya sama dengan bentuk form untuk input data.
mungkin itu saja yang dapat saya berikan pada kesempatan kali ini, semoga bermanfaat bagi anda dan tentunya bagi saya sendiri, bila ada kesalahan kata atau pun penulisan saya mohon maaf sebesar besarnya.
wabilahitaufik wal hidayah wassalamualaikum warahmatullahi wabarakatu..😇🙏