Cari Blog Ini

Minggu, 28 April 2019

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.





















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..😇🙏