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           varchar(5)          primary key
nama         varchar(30)
alamat       text
sex             varchar(1)
tgllahir       date

Sebagai contoh misalkan kita telah mempunyai data awal sebagai berikut


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>";
?>

Hasil dari script di atas akan menghasilkan tampilan sebagai berikut:


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  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

http://.../edit.php?nim=M0001

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 ini 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 hal 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


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 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>";
?>

Sekarang yang terakhir, kita buat script untuk updatenya. Tapi… eiiit… wait a minute.. bagaimana bila NIM mahasiswanya yang diubah? Lho.. emangnya ada apa? Mungkin di 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";
?>

Tugas Untuk Anda 

Misalkan Anda memiliki data dan tabel sebagai berikut:

Tabel: Jenis Buku

Tabel: Buku

Tabel: Member

Tabel: Pinjam Buku

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 list 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.

Lsting Program
1. Tabel Jenis Buku
(Tampilan awal)

 (Menampilkan tabel pada browser)

(Mengupdate tabel jenis buku) 


(Tampilan jika update berhasil)


(Tampilan database setelah diupdate)


2. Tabel Buku

                                                                    (Tampilan awal)

(Menampilkan tabel pada browser)


(Mengupdate tabel buku) 

(Tampilan jika update berhasil)

(Tampilan database setelah diupdate)

3. Tabel Member
(Tampilan awal)

(Menampilkan tabel pada browser)

(Mengupdate tabel member) 

(Tampilan jika update berhasil)

(Tampilan database setelah diupdate)

4. Tabel Pinjam Buku
(Tampilan awal)

(Menampilkan tabel pada browser)

(Mengupdate tabel pinjam buku) 

(Tampilan jika update berhasil)

(Tampilan database setelah diupdate)

Comments

Popular posts from this blog

Membuat Biodata Pada Visual Studio Code

Session

Hapus Data dengan PHP - MySQL