• Tidak ada hasil yang ditemukan

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

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

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

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

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

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']);

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

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

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

BAB 20

Dokumen terkait