a-rata Ujiannya mulai dari
yang paling tinggi sampai yang paling rendah.
Contoh Tampilan Form Input Nilai
NIS Nama Siswa Nilai Ujian 1 Nilai Ujian 2
A001 Agus
A002 Budi
A003 Amir
A004 Acong
A005 Siti
Petunjuk:
Data NIS dan Nama Siswa disimpan dalam array, begitu pula dengan nilai rata-
ratanya. Selanjutnya sort berdasarkan nilai rata-rata (gunakan array_multisort())
lalu tampilkan.
5. Suatu perusahan X, terdapat 10 orang karyawan dengan NIK dan Nama
Karyawannya sebagaimana tampak pada tabel berikut ini
NIK Nama Karyawan Masa Kerja (tahun)
K01001 A 20
K01002 B 18
K03001 C 12
K03002 D 12
K03003 E 10
K04001 F 8
K04002 G 11
K04003 H 9
K04004 I 7
K04005 J 14
SUBMIT RESET
136
Perhatikan kode NIK di atas. Digit ke 2 dan 3 menunjukkan posisi karyawan
dalam perusahaan. ‘01’ berarti di bagian keuangan, ‘03’ di bagian HRD dan ‘04’ di
bagian maintenance.
Buatlah script PHP untuk menampilkan gaji setiap karyawan dengan ketentuan
sbb:
Jika karyawan di bagian keuangan, maka gaji pokoknya: Rp. 2.000.000,-. Di
bagian HRD gaji pokoknya Rp. 1.900.000,- dan di maintenance gaji pokoknya Rp.
1.950.000,-.
Selain itu masih ditambah tunjangan sesuai masa kerjanya.
Jika masa kerja > 15 tahun maka tunjangannya Rp. 500.000,- Sedangkan jika
masa kerja 10 s/d 15 tahun, tunjangannya Rp. 300.000,-. Dan jika masa kerjanya
di bawah 10 tahun tunjangannya Rp. 100.000,-
Untuk format tampilan, gunakan tabel berikut ini
NIK Nama Karyawan Masa Kerja (tahun) Gaji Kotor
K01001 A 20 Rp. XXX,-
K01002 B 18 Rp. XXX,-
K03001 C 12 Rp. XXX,-
K03002 D 12 Rp. XXX,-
K03003 E 10 Rp. XXX,-
K04001 F 8 Rp. XXX,-
K04002 G 11 Rp. XXX,-
K04003 H 9 Rp. XXX,-
K04004 I 7 Rp. XXX,-
K04005 J 14 Rp. XXX,-
Total Rp. XXX,-
Catatan: Gunakan format angka gaji sesuai format Rp. XXX.XXX.XXX,-
6. Berdasarkan data karyawan yang ada pada soal no. 5, buatlah script untuk
menampilkan data karyawan (NIK, nama dan masa kerja) dan jumlah
karyawannya dari ketentuan sbb:
a. Karyawan di bagian ‘HRD’ yang masa kerjanya di atas 15 tahun
b. Karyawan di bagian ‘maintenance’ atau ‘keuangan’ yang masa kerjanya 10
tahun s/d 15 tahun
137
Gunakan Radiobutton untuk proses switching tampilan sebagaimana contoh
form berikut ini.
Data Karyawan
◘ Karyawan di bagian ‘HRD’ dengan masa kerja > 15 tahun
◘ Karyawan di bagian ‘Maintenance’ atau ‘Keuangan’ dengan masa kerja 10 –
15 th
SUBMIT
138
BAB 16
Pengenalan SQL
Pada bab ini Anda akan diperkenalkan dengan SQL atau structured query languange.
SQL adalah suatu statement atau pernyataan atau perintah standart yang digunakan
untuk keperluan administrasi database.
Ada banyak software database yang mendukung SQL ini. Software batabase ini disebut
juga SQL based DBMS (Database Management System). Beberapa di antaranya adalah
MySQL, Oracle, MS. Access, MS. SQL, SQL Server dll.
Bab pengenalan SQL ini diberikan karena mulai bab selanjutnya materi kursus terkait
dengan penggunaan database, dalam hal ini software database yang digunakan adalah
MySQL. Mengapa MySQL yang digunakan? Ya… karena MySQL adalah DBMS yang
bersifat free alias gratis namun kehandalannya tidak kalah dengan DBMS yang tidak
free.
Tentang Database
Database ibaratnya suatu wadah yang digunakan untuk menyimpan data. Supaya
mudah diatur data-data itu disimpan dalam sebuah tabel.
Database ibaratnya seperti sebuah lemari kabinet. Dalam lemari kabinet terdapat
beberapa laci yang di dalamnya terdapat beberapa dokumen file atau data. Laci inilah
yang diumpamakan tabel dari database dan dokumen file atau data yang tersimpan
dalam laci ibaratnya merupakan data atau record dari database. Bisa membayangkan
ya? ☺
Di dalam sebuah database bisa terdapat lebih dari satu tabel.
Pada sebuah tabel, terdapat unsur yaitu kolom dan baris, seperti halnya tabel-tabel
umum yang Anda kenal. Kolom pada database disebut juga field, dan barisnya disebut
record.
139
Tentang PhpMyAdmin
Terkadang dalam mengatur atau pengadministrasian database sangatlah repot.
Misalnya membuat database, membuat tabel, mengubah struktur tabel, menyimpan
data ke database, mengedit data, menghapus data dsb.
Nah… khusus MySQL terdapat software khusus yang dapat dipergunakan untuk
pengadministrasian database supaya mudah dilakukan. Software ini bernama
PhpMyAdmin. Software ini merupakan web based software yang dijalankan melalui
URL:
http://localhost/phpmyadmin
Apabila Anda menggunakan AppServ atau XAMPP maka ketika dipanggil URL di atas
akan langsung masuk ke PhpMyAdmin.
Catatan:
Sebelum masuk ke PhpMyAdmin biasanya kita disuruh memasukkan username dan
password. Username dan password ini sesuai dengan yang pernah kita masukkan
sewaktu proses instalasi AppServ.
Tampilan PhpMyAdmin
140
Membuat Database
Untuk membuat database baru dengan PhpMyAdmin, caranya adalah isikan nama
database yang akan Anda buat ke dalam bagian kotak CREATE NEW DATABASE lalu klik
tombol CREATE.
Sebagai contoh silakan Anda buat database dengan nama: ‘perpustakaan’
Tips: sebaiknya nama database jangan mengandung spasi.
Membuat Tabel
Setelah database dibuat, selanjutnya kita bisa membuat tabel. Untuk membuat tabel
baru dalam database yang telah kita buat caranya ketikkan nama tabel yang akan dibuat
pada bagian CREATE NEW TABLE ON DATABASE XXX. ‘XXX’ di sini merupakan nama
databasenya.
Selain itu masukkan pula jumlah fieldnya. Oleh karena itu sebaiknya sebelum proses
pembuatan tabel hendaknya Anda rancang terlebih dahulu nama-nama fieldnya sesuai
yang dibutuhkan.
Dalam contoh ini andaikan kita akan membuat tabel ‘kategori_buku’
Tips: seperti halnya membuat nama database, untuk nama tabel juga sebaiknya jangan
gunakan spasi.
141
Untuk tabel ‘kategori_buku’ misalnya kita desain seperti di bawah ini:
Tabel : kategori_buku
Field : kode_kat varchar(5) PRIMARY KEY
nama_kat varchar(20)
Keterangan:
Dalam tabel ‘kategori buku’ terdapat 2 buah field yaitu ‘kode_kat’ dan ‘nama_kat’. Field
‘kode_kat’ nanti berisi kode kategori dari buku-buku yang tersimpan dalam
perpustakaan dan ‘nama_kat’ merupakan penjelasan yang berisi nama kategori terkait
dengan kode kategorinya. Misalnya kode kategori buku ‘X10’ itu merupakan kode
kategori untuk buku tentang ‘MATEMATIKA’.
Varchar merupakan tipe data dari fieldnya. Tipe data ini harus dimiliki setiap field yang
akan dibuat. Tipe data ini menentukan jenis atau sifat data yang akan disimpan dalam
field ini . Terdapat beberapa tipe data yang bisa dipilih, yaitu
Varchar bila datanya berbentuk karakter (maks 255 karakter)
Int bila datanya berbentuk bilangan bulat
Float bila datanya berbentuk bilangan real
Text bila datanya berbentuk karakter (size nya lebih besar dari varchar)
Date bila datanya berbentuk tanggal (th-bln-tgl)
Time bila datanya berbentuk waktu (jam:menit:detik)
Blob bila datanya berupa file
Catatan:
Khusus untuk varchar harus diberikan lebar size yang diinginkan, misalnya suatu field
bertipe varchar(5). Maksud 5 di sini adalah banyak karakter yang bisa disimpan dalam
field ini adalah 5 buah.
PRIMARY KEY adalah fitur yang ada dalam DBMS yang dapat digunakan untuk menjamin
bahwa sebuah data itu tunggal. Dalam contoh di atas PRIMARY KEY diberikan pada field
‘Kode Kategori’. Tentu kita tahu bahwa suatu kode kategori buku itu bersifat tunggal
atau tidak boleh ada kode yang sama, seperti halnya kode karyawan atau kode
mahasiswa. Bila suatu field sudah dijadikan PRIMARY KEY maka tidak mungkin ada data
yang sama pada field ini . Apabila kita masukkan kode yang sama, maka akan
ditolak oleh sistem.
OK… setelah kita rancang tabelnya, kita bisa membuatnya. Berikut ini caranya:
1. Isikan nama tabel di kotak CREATE NEW TABLE ON DATABASE …
Dalam kasus ini masukkan ‘kategori_buku’
142
2. Masukkan jumlah field dari tabel yang akan dibuat pada NUMBER OF FIELDS
Dalam kasus ini masukkan ‘2’
3. Klik GO
Setelah itu masukkan nama-nama field dan tipe datanya nya pada form yang muncul
berikutnya
Sebagai latihan coba Anda buat lagi tabel ‘tabel_buku’ dengan field sebagai berikut
kode_buku varchar(10) PRIMARY KEY
judul_buku text
kode_kat varchar(5)
pengarang varchar(30)
penerbit varchar(30)
thn_terbit int
Tabel di atas dibuat dalam database ‘perpustakaan’. Dengan demikian terdapat 2 tabel
dalam database ‘perpustakaan’.
Memasukkan Data/Record ke Tabel
Untuk memasukkan sebuah record ke tabel, perintah SQL nya adalah berikut ini
INSERT INTO nama_tabel (field1, field2, …) VALUES (data1, data2, ..);
Sebagai contoh misalkan kita akan memasukkan record kode kategori: ‘X001’ dan nama
kategori: ‘MAJALAH’ ke tabel ‘kategori_buku’, maka perintahnya
INSERT INTO kategori_buku (kode_kat, nama_kat) VALUES (‘X001’, ‘MAJALAH’);
Menunjukkan primary key telah
dipilih pada field ‘kode_kat’
143
Catatan Penting:
Khusus field yang bertipe VARCHAR, TEXT, DATE, TIME, dan BLOB, value yang akan
dimasukkan ke tabel harus diapit dengan tanda petik tunggal, misal ‘X001’. Namun
untuk field bertipe data bilangan (INT, FLOAT) tanpa menggunakan tanda petik.
Dimanakah kita menuliskan perintah SQLnya? Ya… caranya adalah klik terlebih dahulu
nama database yang kita gunakan pada kolom sebelah kiri dari PhpMyAdmin, dalam hal
ini klik pada nama database ‘perpustakaan’
Lalu klik tombol SQL pada menu atas PhpMyAdmin
Kemudian tulis perintah SQL pada kotak ‘RUN SQL QUERY/QUERIES ON DATABASE …’
Selanjutnya klik GO.
Anda dapat menuliskan perintah atau query SQL lebih dari satu sekaligus.
144
Untuk melihat record yang telah tersimpan ke dalam tabel, caranya klik nama tabel yang
mau dilihat recordnya pada sisi kiri PhpMyAdmin
Lalu klik menu BROWSE pada bagian atas PhpMyAdmin
Selanjutnya akan muncul semua record yang telah disimpan pada tabel ini
Sebagai latihan coba masukkan record-record berikut ini ke dalam tabel masing-masing
menggunakan query SQL.
Tabel ‘kategori_buku’
Kode Kategori Nama Kategori
X002 REFERENSI
X003 SURAT KABAR
X004 JURNAL ILMIAH
Tabel ‘tabel_buku’
145
Kode Buku Judul Buku Kode
Kategori
Pengarang Penerbit Th. Terbit
B001 Pemrograman
Pascal
X002 Mr. X PT. A 2003
B002 Pemrograman
PHP
X002 Mr. Y PT. A 2004
B003 Kompas (Edisi
X 2006)
X003 - - 2006
B004 Sains
Matematika
(Edisi XI 2008)
X004 - LIPI 2008
B005 Tempo (Edisi
XI 2008
X001 - PT. B 2008
Mengedit Record
Apabila Anda ingin mengedit record, perintah SQL nya adalah:
UPDATE nama_tabel SET field1 = value, field2 = value, … [WHERE syarat]
Dalam hal ini WHERE merupakan syarat yang bersifat optional. Bila WHERE tidak
diberikan, maka proses update data diberikan ke semua record.
Contoh:
Perintah SQL untuk mengedit tahun terbit buku berkode ‘B001’ menjadi 2010.
UPDATE tabel_buku SET thn_terbit = 2010 WHERE kode_buku = ‘B001’;
Perintah SQL untuk mengedit tahun terbit buku berkode ‘B002’ menjadi 2004 sekaligus
mengedit kode kategorinya menjadi ‘X002’.
UPDATE tabel_buku SET thn_terbit = 2004, kode_kat = ‘X002’ WHERE kode_buku =
‘B002’;
Perintah SQL untuk mengubah judul buku yang diterbitkan oleh PT. A pada tahun 2003
menjadi ‘XXX’.
UPDATE tabel_buku
SET judul_buku = ‘XXX’
WHERE thn_terbit = 2003 AND penerbit = ‘PT. A’;
146
Catatan:
Selain operator logika AND, Anda juga bisa menggunakan OR sebagai operator logika
‘atau’.
Perintah SQL untuk mengubah nama penerbit menjadi PT. C dari semua buku yang
tahun terbitnya di atas 2004.
UPDATE tabel_buku
SET penerbit = ‘PT. C’
WHERE thn_terbit > 2004;
Catatan:
Untuk operator relasional, Anda bisa menggunakan tanda =, >, >=, <=, <> (tidak sama
dengan)
Perintah SQL untuk mengubah tahun terbit buku menjadi 2005 semuanya
UPDATE tabel_buku SET thn_terbit = 2005;
Menghapus Record
Sebuah record atau beberapa record dapat dihapus dari tabel dengan perintah SQL
DELETE FROM nama_tabel [WHERE syarat];
Contoh:
Perintah SQL untuk menghapus data buku yang berkode ‘B001’
DELETE FROM tabel_buku WHERE kode_buku = ‘B001’;
Perintah SQL untuk menghapus data buku dari penerbit PT. A yang tahun terbitnya 2004
DELETE FROM tabel_buku WHERE penerbit = ‘PT. A’ AND thn_terbit = 2004;
Tentang SQL SELECT
Perintah SELECT digunakan untuk mencari data atau menampilkan data pada field-field
tertentu. Sintaksnya adalah:
SELECT field1, field2, … FROM nama_tabel [WHERE syarat ] [ORDER BY field DESC|ASC];
Keterangan:
147
ORDER BY digunakan untuk mensorting hasil data yang ditampilkan berdasarkan field
tertentu baik secara DESCENDING atau ASCENDING.
Contoh:
Perintah SQL untuk menampilkan data (kode buku dan judul buku) dari buku yang
minimal terbit pada tahun 2003.
SELECT kode_buku, judul_buku
FROM tabel_buku
WHERE thn_terbit >= 2003;
Perintah SQL untuk menampilkan data (untuk semua field) dari buku yang diterbitkan
oleh PT. A
SELECT *
FROM tabel_buku
WHERE penerbit = ‘PT. A’;
Perintah SQL untuk menampilkan data (kode buku, judul buku, tahun terbit) yang
diurutkan berdasarkan tahun terbit mulai dari yang paling terbaru sampai dengan
terlama.
SELECT kode_buku, judul_buku, thn_terbit
FROM tabel_buku
ORDER BY thn_terbit DESC;
Perintah SQL untuk menampilkan data (kode buku, judul buku dan nama kategori buku)
dari buku yang diterbitkan oleh PT. A pada tahun 2003.
Untuk hal ini, kita harus bekerja di dalam 2 buah tabel sekaligus. Kode buku dan judul
buku diperoleh dari tabel ‘tabel_buku’, sedangkan nama kategori diperoleh dari tabel
‘kategori_buku’.
Kedua tabel saling berhubungan karena masing-masing terdapat field bernama ‘kode
kategori’ atau ‘kode_kat’.
SELECT tabel_buku.kode_buku, tabel_buku.judul_buku, kategori_buku.nama_kat
FROM tabel_buku, kategori_buku
WHERE tabel_buku.kode_kat = kategori_buku.kode_kat AND
tabel_buku.penerbit = ‘PT. A’ AND
tabel_buku.thn_terbit = 2003;
148
Perintah SQL untuk menampilkan kode buku dan judul buku, yang judul bukunya
mengandung kata ‘MATEMATIKA’
SELECT kode_buku, judul_buku
FROM tabel_buku
WHERE judul_buku LIKE ‘%MATEMATIKA%’;
Perintah SQL untuk menampilkan kode buku dan judul buku, yang kata depan judul
bukunya adalah ‘MATEMATIKA’
SELECT kode_buku, judul_buku
FROM tabel_buku
WHERE judul_buku LIKE ‘MATEMATIKA%’;
Perintah SQL untuk menampilkan kode buku dan judul buku, yang judul bukunya
berakhiran dengan kata ‘MATEMATIKA’
SELECT kode_buku, judul_buku
FROM tabel_buku
WHERE judul_buku LIKE ‘%MATEMATIKA’;
Penggunaan Aggregate Function
Anda juga bisa menggunakan function yang sudah disediakan oleh MySQL, seperti AVG()
untuk menghitung rata-rata nilai, MAX() untuk menghitung nilai maksimum, MIN()
untuk mencari nilai minimum, COUNT() untuk menghitung cacah data, SUM() untuk
menjumlahkan nilai dari beberapa data.
Contoh:
Perintah SQL untuk mencari jumlah buku yang ada di dalam database:
SELECT count(kode_buku) FROM tabel_buku;
Perintah SQL untuk mencari jumlah buku yang memiliki kode kategori ‘X002’:
SELECT count(kode_buku) FROM tabel_buku WHERE kode_kat = ‘X002’;
Tugas Untuk Anda
1. Buatlah database dengan nama ‘dbmhs’. Selanjutnya buatlah tabel untuk
keperluan penyimpanan data perkuliahan mahasiswa dalam database ini .
149
Berikut ini tabel-tabelnya:
Nama Tabel : ‘mhs’
Nama Field :
• nim
• namaMhs
• tglLahir
• alamat
Nama Tabel : ‘mk’
Nama Field :
• kodeMK
• namaMK
• sks
• smt
Nama Tabel : ‘ambilMK’
Nama Field :
• nim
• kodeMK
• nilai
Tentukan sendiri tipe data yang cocok untuk setiap fieldnya, dan tentukan
PRIMARY KEY nya. Sebutkan alasan pemilihan tipe data dan PRIMARY KEY nya.
2. Selanjutnya sisipkan ke dalam masing-masing tabel 5 buah record menggunakan
perintah SQL
3. Tuliskan perintah SQL untuk proses berikut ini
a. Hapus data mahasiswa yang bernim ‘M0197001’
b. Hapus matakuliah yang memiliki jumlah SKS 4 yang ada di semester 2.
c. Hapus matakuliah yang memiliki jumlah SKS 2 s/d 4
d. Hapus matakuliah yang memiliki jumlah SKS 4 atau di semester 3
e. Ubahlah nilai matakuliah berkode ‘K001’ yang diambil mahasiswa bernim
‘M0197001’ menjadi 3.
f. Ubahlah semua nilai mahasiswa yang mengambil matakuliah berkode ‘K001’
menjadi satu lebihnya dari nilai semula. Contoh nilai sebelumnya 2, maka
diubah menjadi 2+1 = 3.
150
g. Tampilkan data matakuliah (kode matakuliah, nama matakuliah) yang berada
di semester 2
h. Tampilkan jumlah mahasiswa yang beralamat di ‘SOLO’.
i. Tampilkan data mahasiswa (nim, nama mahasiswa) yang namanya
mengandung kata ‘JOKO’.
j. Tampilkan data mahasiswa (nim, nama mahasiswa) yang mengambil
matakuliah berkode ‘K001’
k. Tampilkan nilai tertinggi dari matakuliah berkode ‘K001’ yang diambil
mahasiswa.
l. Tampilkan data mahasiswa (nim, nama mahasiswa, nilai matakuliah) yang
mengambil matakuliah berkode ‘K001’ diurutkan berdasarkan nilai mulai dari
tertinggi sampai terendah
m. Tampilkan rata-rata nilai matakuliah mahasiswa yang mengambil matakuliah
berkode ‘K001’
n. Tampilkan daftar matakuliah (kode matakuliah, nama matakuliah) yang
pernah diambil oleh mahasiswa bernim ‘M0197001’
o. Tampilkan nilai IPK (index prestasi kumulatif) dari mahasiswa bernim
‘M0197001’.
151
BAB 17
Konsep INSERT Data dengan PHP
Setelah Anda mengenal beberapa bentuk perintah SQL untuk memanipulasi atau
mengolah data di MySQL, pada bab ini Anda akan diperkenalkan bagaimana
menerapkan konsep ini yang terintegrasi dengan script PHP.
Pada bab ini terlebih dahulu akan diperkenalkan bagaimana konsep inserting data ke
MySQL melalui PHP.
Koneksi PHP ke MySQL
Sebelum kita membahasnya lebih lanjut tentang inserting data, terlebih dahulu akan
disinggung tentang bagaimana caranya melakukan koneksi dari PHP ke MySQL.
Perintah PHP untuk koneksi ke MySQL adalah:
mysql_connect(‘nama host’, ‘nama user’, ‘password’);
mysql_select_db(‘nama db’);
Keterangan:
• Nama Host : nama komputer di mana MySQL nya berada, kalo berada di
komputer itu sendiri maka nama hostnya: ‘localhost’, bisa juga diberi nomor IP
dari komputernya.
• Nama User : nama user yang memiliki hak akses ke MySQL nya
• Password : password dari nama user yang punya hak akses ke MySQL
• Nama DB : nama database yang akan dipilih
Contoh:
Berikut ini adalah script untuk melakukan koneksi ke MySQL dengan nama host:
localhost, user : root, password: root, dan nama database: contoh
<?php
mysql_connect('localhost', 'root', 'root');
mysql_select_db('contoh');
?>
152
Sebaiknya script di atas kita simpan dalam file script tersendiri, misalkan koneksi.php.
Selanjutnya script ini kita includekan ke dalam script lain yang di dalamnya
terdapat query-query SQL.
Menjalankan Query SQL di PHP
Setelah kita melakukan koneksi dari PHP ke MySQL, selanjutnya kita bisa menjalankan
query melalui script PHP.
Untuk menjalankan query SQL di PHP, kita gunakan perintah
mysql_query(query);
Contoh:
Berikut ini contoh script PHP untuk menjalankan query SQL untuk insert data ke tabel
MySQL
<?php
include "koneksi.php";
$query = "INSERT INTO namaTabel(field1, field2) VALUES(value1, value2) ";
mysql_query($query);
?>
Selanjutnya akan dibahas bagaimana mengimplementasikan konsep inserting data ke
MySQL melalui script PHP yang diintegrasikan dengan form input
Studi Kasus
Dalam studi kasus ini akan dicontohkan bagaimana cara membuat form registrasi yang
di dalamnya terdapat beberapa jenis komponen input seperti textbox, radiobutton,
combo box, checkbox dan textarea.
Form ini akan diterapkan dalam kasus registrasi peserta suatu seminar secara
online.
Untuk keperluan ini terlebih dahulu kita buat tabelnya.
Nama Tabel : peserta
Field
153
id integer auto increment primary key
namaPeserta varchar(30)
tglLahir date
tmptLahir varchar(30)
sex varchar(1)
alamat text
tglDaftar date
informasi text
Keterangan:
Field ‘informasi’ digunakan untuk menyimpan keterangan darimana peserta seminar
mendapatkan informasi tentang seminar (dari surat kabar, televisi, atau dari teman).
Field ‘id’ diset bertipe data integer dan berupa auto increment. Maksud dari auto
increment adalah secara otomatis akan muncul nomor urut begitu data baru
dimasukkan ke dalam tabel.
Field dengan tipe data DATE, harus berformat YYYY-MM-DD (tahun-bulan-tgl)
Selanjutnya kita siapkan form untuk input data peserta seminarnya
registrasi.php
<html>
<head>
<title>Registrasi Peserta Seminar</title>
</head>
<body>
<h1>Registrasi Peserta Seminar</h1>
<form method="post" action="submit.php">
<table>
<tr><td>Nama Lengkap</td><td>:</td><td><input type="text" name="nama"
/></td></tr>
<tr><td>Alamat</td><td>:</td><td><textarea
name="alamat"></textarea></td></tr>
<tr><td>Tempat Lahir</td><td>:</td><td><input type="text" name="tmptLhr"
/></td></tr>
<tr><td>Tanggal Lahir</td><td>:</td>
<td>
<select name="tgl">
<?php
for($i=1; $i<=31; $i++)
{
154
echo "<option value='".$i."'>".$i."</option>";
}
?>
</select>
<select name="bln">
<?php
for($i=1; $i<=12; $i++)
{
echo "<option value='".$i."'>".$i."</option>";
}
?>
</select>
<select name="thn">
<?php
for($i=1950; $i<=1990; $i++)
{
echo "<option value='".$i."'>".$i."</option>";
}
?>
</select>
</td>
</tr>
<tr><td>Jenis Kelamin</td><td>:</td><td><input type="radio" name="sex"
value="L" /> Laki-laki <br/><input type="radio" name="sex" value="P" />
Perempuan</td></tr>
<tr><td>Tahu informasi seminar dari mana?</td><td>:</td><td><input
type="checkbox" name="info1" value="TV" /> Televisi<br /><input type="checkbox"
name="info2" value="Koran" /> Surat Kabar<br /><input type="checkbox"
name="info3" value="Teman" /> Teman</td></tr>
<tr><td></td><td></td><td><input type="submit" name="submit"
value="Submit" /></td></tr>
</table>
</form>
</body>
</html>
Keterangan:
Pusing melihat script diatas? ☺ Jangan khawatir, script nantinya akan disertakan melalui
email untuk dipelajari.
Form di atas akan tampak seperti di bawah ini begitu dibuka di browser
155
Setelah kita buat form registrasinya, selanjutnya kita buat form untuk proses
penyimpanan data pesertanya.
submit.php
<?php
include "koneksi.php";
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$tmptLhr = $_POST['tmptLhr'];
$tglLhr = $_POST['thn']. "-".$_POST['bln']. "-".$_POST['tgl']; // membentuk format thn-
bln-tgl
$sex = $_POST['sex'];
$tglDaftar = date("Y-m-d"); // membaca tanggal sekarang (recent date) format thn-
bln-tgl
// menggabungkan informasi darimana peserta mendapatkan info tentang seminar
$info = $_POST['info1']. " ".$_POST['info2']. " ".$_POST['info3'];
$query = "INSERT INTO peserta (namaPeserta, tglLahir, tmptLahir, sex, alamat, tglDaftar,
informasi) VALUES ('$nama', '$tglLhr', '$tmptLhr', '$sex', '$alamat', 'tglDaftar',
'$info' )";
$hasilQuery = mysql_query($query);
156
if ($hasilQuery) echo "Data sudah tersimpan ke database";
else echo "Penyimpanan data gagal";
?>
Tugas Untuk Anda
1. Buatlah form untuk keperluan pengisian buku tamu (guestbook) dengan data
yang diisikan sbb:
Nama pengisi
Situs Web
Komentar
Buat pula sebuah tabel dalam database untuk menyimpan data isian buku tamu
ini dengan field sbb:
Id integer auto increment Primary Key
Nama varchar(30)
Email varchar(30)
Website varchar(30)
Tanggal date
Komentar text
Keterangan:
Field ‘tanggal’ digunakan untuk menyimpan informasi tanggal kapan komentar
ini dikirim (tanggal ini secara otomatis membaca tanggal ketika komentar
buku tamu disubmit)
2. Buatlah form untuk registrasi mahasiswa baru angkatan tahun 2009 di sebuah
universitas X yang di dalamnya terdapat 3 buah fakultas, yaitu KEDOKTERAN
(kode: A), TEKNIK (kode: B), dan MIPA (kode: C)
Berikut ini gambaran form untuk registrasi mahasiswa adalah:
157
Setiap kali data mahasiswa baru diinputkan, maka secara otomatis dibuatkan
nomor induk mahasiswa (NIM) dengan format X-XX-XXXX sebelum disimpan ke
database dengan keterangan:
Digit pertama menunjukkan kode fakultas si mahasiswa, Digit kedua dan ketiga
menunjukkan tahun angkatan, dan 4 digit sisanya menunjukkan nomor urut
mahasiswa sesuai kode fakultas dan tahun angkatannya
Berikut ini contoh cara pemberian NIM, misalkan terdapat 6 data mahasiswa
yang akan diinputkan
Mhs 1 (KEDOKTERAN ) Nomor induk: A-09-0001
Mhs 2 (TEKNIK) Nomor induk: B-09-0001
Mhs 3 (KEDOKTERAN) Nomor induk: A-09-0002
Mhs 4 (TEKNIK) Nomor induk: B-09-0002
Mhs 5 (MIPA) Nomor induk: C-09-0001
Mhs 6 (KEDOKTERAN) Nomor induk: A-09-0003
Sedangkan field tabel database yang diperlukan untuk registrasi ini adalah
nim varchar(9) primary key
namaMhs varchar(30)
alamatMhs text
tmptLahir varchar(30)
tglLahir date
noTelp varchar(30)
Petunjuk Pengerjaan:
158
Silakan baca artikel saya di blog tentang membuat kode unik incremental
otomatis terkait dengan membuat NIM untuk kasus di atas.
http://blog.rosihanari.net/ide-membuat-generator-kode-unik-incremental-
otomatis/
159
BAB 18
Konsep Menampilkan Data MySQL
dengan PHP
Pada bab sebelumnya Anda telah belajar bagaimana konsep menyisipkan data atau
record ke dalam tabel database MySQL. Sekarang kita lanjutkan ke konsep bagaimana
menampilkan data yang ada di database MySQL dengan script PHP.
Konsep menampilkan data dengan script PHP ini adalah menggabungkan query SELECT
di SQL yang dijalankan dalam script PHP.
Konsep dasar menampilkan data dengan script PHP ini adalah
1. Buat query SQL untuk menampilkan data (gunakan SELECT)
2. Jalankan query ini dengan menggunakan mysql_query() di PHP
3. Baca data hasil query ini dengan proses fetching. Gunakan perintah
mysql_fetch_array() di PHP. Hasil dari mysql_fetch_array() ini adalah suatu nilai
dalam bentuk array asosiatif dengan nama field tabel sebagai indeksnya.
4. Tampilkan data dari proses fetching sesuai nama field yang ada dalam array.
Langsung saja, dalam pembahasan bab ini akan saya berikan contohnya untuk
menampilkan data semua peserta yang telah registrasi sesuai kasus yang diberikan pada
Bab 17. Sehingga dalam hal ini, struktur tabelnya sama dengan kasus yang dibahas pada
Bab 17.
Dalam contoh ini, kita akan mencoba menampilkan data peserta khususnya pada field
Nama Peserta, Tanggal Lahir, Jenis Kelamin, Alamat, Tanggal Daftar, dan Tempat Lahir.
Langkah pertama, kita siapkan terlebih dahulu script untuk koneksi ke MySQL nya dan
ke databasenya.
koneksi.php
<?php
mysql_connect("localhost", "root", "root");
mysql_select_db("contoh");
?>
Catatan: sesuaikan nama username, password dan nama database yang Anda gunakan.
160
Langkah kedua, kita bisa mulai membuat script untuk menampilkan datanya.
view.php
<html>
<head>
<title>Data Peserta</title>
</head>
<body>
<h1>Data Peserta</h1>
<table border="1">
<tr><th>Nama Peserta</th><th>Tgl Lahir</th><th>Tempat
Lahir</th><th>Alamat</th>
<th>Jenis Kelamin</th><th>Tgl Daftar</th></tr>
// letak script menampilkan data //
</table>
</body>
</html>
Script di atas baru membuat judul tabel untuk menampilkan datanya. Sekarang barulah
kita buat script untuk menampilkan datanya.
view.php
<html>
<head>
<title>Data Peserta</title>
</head>
<body>
<h1>Data Peserta</h1>
<table border="1">
<tr><th>Nama Peserta</th><th>Tgl Lahir</th><th>Tempat
Lahir</th><th>Alamat</th>
<th>Jenis Kelamin</th><th>Tgl Daftar</th></tr>
<?php
include "koneksi.php";
$query = "SELECT * FROM peserta";
$hasil = mysql_query($query);
161
while ($data = mysql_fetch_array($hasil))
{
echo "<tr><td>".$data['namaPeserta']."</td><td>".$data['tglLahir']."</td>
<td>".$data['tmptLahir']."</td><td>".$data['alamat']."</td>
<td>".$data['sex']."</td><td>".$data['tglDaftar']."</td></tr>";
}
?>
</table>
</body>
</html>
Keterangan:
Dalam melakukan proses fetching data menggunakan mysql_fetch_array() dilakukan per
baris data dari hasil query. Sehingga untuk memfetching semua data hasil query, kita
gunakan looping WHILE.
Selama masih ada baris data hasil query yang bisa difetch, maka looping ini akan terus
berjalan dan baru akan berhenti bila sudah tidak ada baris lagi yang bisa difetch (akhir
dari baris data).
Setiap kali data difetch, selanjutnya langsung ditampilkan dengan echo.
Catatan:
Bila data hasil query SELECT hanya terdiri dari sebuah baris data, maka Anda tidak perlu
menggunakan looping WHILE.
Array $data['namaPeserta'] digunakan untuk menampilkan data terkait dengan field
‘namaPeserta’ yang ada dalam tabel.
PENTING!!
Besar kecilnya huruf dalam indeks array harus sama dengan nama fieldnya. Jika
tulisannya berbeda, maka data tidak akan muncul.
Hasil dari script view.php di atas adalah sebagai berikut
162
Tugas Untuk Anda
1. Dengan menggunakan tabel dan data yang ada dalam pembahasan modul ini di
atas, buatlah script untuk menampilkan data peserta berdasarkan jenis
kelaminnya.
Adapun tampilan datanya diharapkan seperti di bawah ini
No Nama
Peserta
Tgl Lahir Tmpt Lahir Alamat Jenis Kelamin
1
2
Jumlah Data : …
Dengan ‘No’ adalah nomor urut 1, 2, 3, … (bukan nomor ID data dalam tabel
database)
Terlebih dahulu buatlah form berisi pilihan menggunakan Radio Button untuk
memilih jenis kelamin dari peserta yang akan ditampilkan. Selanjutnya setelah
dipilih jenis kelaminnya, dan kemudian disubmit, maka akan muncul daftar
peserta berdasarkan jenis kelamin yang dipilih.
2. Dengan menggunakan tabel dan data yang ada dalam pembahasan modul ini di
atas, buatlah script untuk menampilkan data peserta berdasarkan nama yang
ingin dicari.
163
Terlebih dahulu buatlah form berisi text box untuk memasukkan nama peserta
yang akan dicari. Selanjutnya setelah dimasukkan nama, dan kemudian disubmit,
maka akan muncul daftar peserta berdasarkan nama yang dicari. Misal jika ingin
dicari nama ‘JOKO’ maka akan menampilkan semua data peserta yang namanya
memuat nama ‘JOKO’.
Bantuan:
Gunakan klausa WHERE nama LIKE ‘%...%’;
Tampilkan data hasil pencariannya menggunakan format tampilan seperti no. 1
di atas
3. Dengan menggunakan tabel dan data yang ada dalam pembahasan modul ini di
atas, buatlah script untuk menampilkan semua data peserta yang diurutkan
berdasarkan TANGGAL PENDAFTARAN mulai dari yang baru saja mendaftar
sampai dengan yang paling dahulu mendaftar
Adapun tampilan datanya diharapkan seperti di bawah ini
No Nama
Peserta
Tgl Lahir Alamat Jenis Kelamin Tgl Daftar
1
2
Jumlah Data Semua : …
Jumlah Peserta Laki-Laki : …
Jumlah Peserta Perempuan : …
Catatan:
Untuk mempercantik tampilan data dalam tabel di atas, gunakan warna selang-
seling dalam setiap barisnya.
Tutorial tentang bagaimana cara membuat warna baris selang-seling, dapat
dibaca di
http://blog.rosihanari.net/script-php-untuk-menampilkan-data-dalam-tabel-
dengan-warna-baris-selang-seling/
164
BAB 19
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
ini memuat sebuah parameter yang di dalamnya terdapat value yang
nantinya digunakan sebagai acuan dalam proses update datanya.
3. Selanjutnya bila link ini 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.
165
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:
166
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 ini 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))
{
echo "<tr><td>".$data['nim']."</td>
167
<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
168
<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
169
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
170
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];
171
$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?
172
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 ini . 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 ini 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>";
173
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.
174
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
175
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 ini 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.
176
4. Buatlah fasilitas untuk update data untuk keempat tabel di atas. Bentuk form
editnya sama dengan bentuk form untuk input data.
177
BAB 20
Hapus Data dengan PHP - MySQL
Pada modul terakhir ini, kita akan membahas bagaimana cara melakukan hapus data
pada database MySQL dengan PHP.
Konsep utama dari proses penghapusan data MySQL dengan PHP adalah menjalankan
query SQL DELETE FROM … pada script PHP ini .
Untuk lebih jelasnya konsep ini , kita langsung terapkan pada studi kasus.
Sebagai studi kasus, kita ambil sampel seperti halnya pada Bab 19, yaitu tentang data
mahasiswa.
Misalkan kita memiliki tabel mahasiswa sebagai berikut:
nim varchar(5) primary key
nama varchar(30)
alamat text
sex varchar(1)
tgllahir date
dan andaikan 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
Selanjutnya kita akan membuat script PHP untuk menghapus data mahasiswa, baik
melalui POST maupun GET method.
Studi Kasus 1
Pada studi kasus pertama ini, kita akan membuat script hapus mahasiswa menggunakan
POST method.
Adapun skenarionya adalah sebagai berikut. User diminta memasukkan NIM mahasiswa
yang akan dihapus melalui sebuah form. Selanjutnya script akan menghapus data
178
mahasiswa sesuai NIM yang ingin dihapus tadi. Namun… bila NIM yang akan dihapus
tidak ada dalam database, maka akan muncul pesan bahwa data ini tidak ada.
Berikut ini adalah tampilan script yang akan kita buat dalam studi kasus 1 ini
Adapun scriptnya berbentuk seperti di bawah ini:
hapus01.php
<h1>Hapus Data Mahasiswa</h1>
<!-- Form untuk memasukkan nim mahasiswa yang mau dihapus -->
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>?proses=hapus">
Masukkan NIM <input type="text" name="nim">
<input type="submit" name="submit" value="Submit">
</form>
<?php
// koneksi ke mysql
mysql_connect("localhost", "…", "…");
mysql_select_db("…");
if ($_GET['proses'] == "hapus")
{
// bagian ini akan dijalankan ketika proses SUBMIT dari form
$nim = $_POST['nim']; // membaca NIM yang dimasukkan dalam form
// mengecek keberadaan data mahasiswa dengan NIM sesuai yang
// dimasukkan dalam form
$query = "SELECT count(*) as jum FROM mahasiswa WHERE nim = '$nim'";
179
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
// jika jumlah mahasiswa ber NIM ini tidak ada, maka muncul keterangan
if ($data['jum'] == 0) echo "<p>Data yang akan dihapus tidak ada</p>";
else
{
// jika ada, maka lakukan penghapusan
$query = "DELETE FROM mahasiswa WHERE nim = '$nim'";
$hasil = mysql_query($query);
}
}
// menampilkan data semua mahasiswa
$query = "SELECT * FROM mahasiswa";
$hasil = mysql_query($query);
echo "<table border='1'>";
echo "<tr><th>NIM</th><th>Nama Mhs</th><th>Alamat</th><th>Sex</th><th>Tgl
Lahir</th></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></tr>";
}
echo "</table>";
?>
Studi Kasus 2
Untuk studi kasus yang kedua ini, kita akan lakukan penghapusan data mahasiswa
melalui GET method atau melalui link berparameter. Link ini nanti akan diletakkan di
setiap baris data mahasiswa.
Bentuk link berparameter yang nanti akan digunakan untuk menghapus data adalah
http://.../hapus02.php?proses=hapus&nim=xxx
dengan ‘xxx’ adalah NIM mahasiswa yang akan dihapusnya.
180
Berikut ini screen shot tampilan studi kasus 2 (perhatikan link berparameternya yang
tampak di status bar)
Untuk script studi kasus 2 ini adalah sebagai berikut:
hapus02.php
<h1>Hapus Data Mahasiswa</h1>
<?php
// koneksi ke mysql
mysql_connect("localhost", "…", "…");
mysql_select_db("…");
if ($_GET['proses'] == "hapus")
{
// bagian ini akan dijalankan ketika link hapus diklik (parameter proses=hapus)
// membaca NIM dari URL berparameter
$nim = $_GET['nim'];
// mengecek keberadaan data mahasiswa dengan NIM
// sesuai yang dimasukkan dalam form
$query = "SELECT count(*) as jum FROM mahasiswa WHERE nim = '$nim'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
// jika jumlah mahasiswa ber NIM ini tidak ada, maka muncul keterangan
if ($data['jum'] == 0) echo "<p>Data yang akan dihapus tidak ada</p>";
else
181
{
// jika ada, maka lakukan penghapusan
$query = "DELETE FROM mahasiswa WHERE nim = '$nim'";
$hasil = mysql_query($query);
}
}
// menampilkan data semua mahasiswa & link untuk menghapus
$query = "SELECT * FROM mahasiswa";
$hasil = mysql_query($query);
echo "<table border='1'>";
echo "<tr><th>NIM</th><th>Nama Mhs</th><th>Alamat</th><th>Sex</th><th>Tgl
Lahir</th><th>Proses</th></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='".$_SERVER['PHP_SELF']."?proses=hapus&nim=".$data['nim']."'>
Hapus</a></td></tr>";
}
echo "</table>";
?>