php dan mysql studi kasus database karyawan

270
Membuat Database Karyawan Online Berbasis Web dengan PHP & MySQL YENI CAHYONO

Upload: ye-cahyono

Post on 03-Aug-2015

3.522 views

Category:

Documents


47 download

TRANSCRIPT

Page 1: PHP Dan MySQL Studi Kasus Database Karyawan

Membuat Database KaryawanOnline Berbasis Web

denganPHP & MySQL

YENI CAHYONO

Page 2: PHP Dan MySQL Studi Kasus Database Karyawan

- S INOPS IS -

Membuat Database KaryawanOnline Berbasis Web

dengan PHP & MySQL

Dunia internet semakin lama semakin berkembang mengikutikebutuhan manusia yang selalu mencari terobosan baru. Padaawalnya, internet hanya digunakan untuk menampilkan data-data statisyang disebarkan untuk pengguna internet secara umum. Namun dalamperkembangan sebuah sistem informasi jarak jauh yang memberikanhak akses khusus anggota atau member mulai mencoba untukmenggunakan media internet sebagai sarana untuk menghubungkanantar pengguna internet dalam sebuah sistem.

Demikian juga dengan buku ini yang membahas tentang sisteminformasi manajemen karyawan sebuah perusahaan, khususnya dalamhal pengajuan cuti karyawan secara online berbasis web. Sekarangbanyak perusahaan yang mempunyai anak cabang di luar daerah dantetap dikelola oleh induk perusahaan yang ada di kota lain. Kemudianbagi karyawan yang akan mengajukan cuti harus membuat surat dandikirim ke Direktur di perusahaan induk. Hal ini akan memakan waktu,tenaga dan biaya, dan dari pemikiran itu maka program ini dibuat.Dengan menggunakan sistem online yang baru ini, hal seperti di atastidak perlu lagi dilakukan. Semua alur informasi dapat dibuat serbaotomatis dan realtime.

Adapun materi-materi yang dibahas dalam buku ini mencakup:

Perencanaan Proyek Fungsi-fungsi PHP Pengenalan dan Perencanaan Database Persiapan Database Script dan File Pendukung Pembuatan Proyek Script dan File Utama dalam Pembuatan Proyek

Page 3: PHP Dan MySQL Studi Kasus Database Karyawan

iii

Kata Pengantar

Puji syukur kami panjatkan kepada Tuhan YME atas rahmat dan karunia-Nya buku "Membuat Database Karyawan Online Berbasis Web denganPHP dan MySQL" ini dapat terselesaikan dengan baik. Tak lupa kamiucapkan banyak terima kasih atas kepercayaan para pembaca yang telahmenggunakan buku ini sebagai panduan dan referensi dalam belajarmembuat website.

Buku ini sangat cocok bagi Anda yang ingin membuat aplikasipemrograman PHP dan MySQL sebagai sebuah sarana untukmembangun database berbasis web. Bahasan dalam buku ini jugamemberikan contoh aplikasi lengkap dengan listing script danpenjelasannya.

Materi dalam buku ini ditujukan bagi pemula dan menengah yang inginmembuat aplikasi web yang interaktif dengan menggunakan bahasa yangsingkat dan sistematis. Dengan demikian, diharapkan dapat membantupembaca dalam memahami tiap-tiap bagian script dalam buku ini. Setiapkelompok bagian fungsi yang ada dalam proyek ini dimasukkan ke dalambab-bab yang terpisah, sehingga Anda akan dipermudah untukmempelajarinya.

September 2004Penulis

Page 4: PHP Dan MySQL Studi Kasus Database Karyawan

v

Daftar Isi

Kata Pengantar.................................................................................. iiiDaftar Isi ............................................................................................ vBAB 1PENDAHULUAN Buku ini digunakan oleh siapa ? ......................................................... 1

Bagaimana menggunakan buku ini?.................................................. 1

Perlengkapan apa yang diperlukan ?................................................. 1BAB 2PERENCANAAN PROYEKBAB 3FUNGSI-FUNGSI PHP Fungsi PHP untuk mengolah data...................................................... 9

Fungsi string ...................................................................... 9 Fungsi logika...................................................................... 20 Fungsi pengulangan operasi.............................................. 24 Fungsi tanggal dan waktu .................................................. 28 Session .............................................................................. 36 Fungsi ekspresi.................................................................. 41

BAB 4PERENCANAAN DATABASE MENGGUNAKAN MySQL Tabel..................................................................................................... 48

Tipe data .............................................................................................. 49

Field kunci atau index.......................................................................... 50

Persiapan merancang database......................................................... 51

Contoh kasus pembuatan database .................................................. 52

Page 5: PHP Dan MySQL Studi Kasus Database Karyawan

vi

Relasi.................................................................................................... 56BAB 5MEMPERSIAPKAN DATABASE Membuat database.............................................................................. 60

Database untuk username dan password administrator.... 60 Database untuk menyimpan data hak akses karyawan..... 62 Database karyawan............................................................ 63 Database jumlah cuti.......................................................... 64 Database lama cuti ............................................................ 66

BAB 6SCRIPT PENDUKUNG Script untuk mengakses database ..................................................... 69

Script untuk login.................................................................................. 70

Script untuk otentikasi.......................................................................... 72

Script untuk memeriksa keberadaan sesi .......................................... 76BAB 7FILE PROGRAM PENDUKUNG Script untuk mengakses database ..................................................... 79

Script untuk membuat database......................................................... 80

Script untuk membuat tabel ................................................................ 86 Tabel karyawan .................................................................. 83 Tabel hak akses ................................................................. 85 Tabel data cuti.................................................................... 87 Tabel admin ....................................................................... 89

Script untuk autorisasi user dan password......................................... 91

Script untuk memeriksa data sesi....................................................... 97

Script untuk menghapus data sesi...................................................... 101

Page 6: PHP Dan MySQL Studi Kasus Database Karyawan

vii

BAB 8FILE PROGRAM UTAMA Halaman utama ................................................................................... 103

Halaman data karyawan ..................................................................... 108

Halaman detail karyawan.................................................................... 117

Halaman pengajuan cuti ..................................................................... 125

Script proses pengajuan cuti............................................................... 137

Proses persetujuan pengajuan cuti .................................................... 143

Script pengolah data persetujuan cuti ................................................ 156

Halaman konfirmasi persetujuan cuti karyawan ................................ 161

Tampilan cetak persetujuan cuti ......................................................... 171

Aktivasi karyawan cuti ......................................................................... 176

Script untuk mengganti password ...................................................... 186

Arsip cuti tiap karyawan....................................................................... 190

Halaman detail arsip cuti ..................................................................... 197BAB 9FILE PROGRAM ADMINISTRATOR Halaman admin ................................................................................... 218

Halaman administrator ........................................................................ 222

Halaman data karyawan ..................................................................... 226

Ubah data karyawan............................................................................ 233

Script proses ubah data karyawan ..................................................... 240

Proses menghapus data karyawan.................................................... 241

Ubah data cuti karyawan..................................................................... 243

Formulir ubah data cuti karyawan....................................................... 251

Script proses ubah data cuti karyawan............................................... 258

Formulir untuk menambah data karyawan ........................................ 258

Page 7: PHP Dan MySQL Studi Kasus Database Karyawan

viii

Script proses kirim data karyawan baru.............................................. 265

Script ganti password administrator.................................................... 266

Page 8: PHP Dan MySQL Studi Kasus Database Karyawan

1

BUKU INI DIGUNAKAN OLEH SIAPA ?Buku ini ditujukan bagi Anda yang telah memahami dan menguasaibahasan HTML dan menguasai bahasa pemrograman PHP yang inginmempelajari pemrograman web PHP lebih mendalam lagi. Buku iniakan membahas tentang berbagai script PHP yang mengandungfungsi-fungsi dalam membentuk sebuah system yang sistematis.

BAGAIMANA MENGGUNAKAN BUKU INI ?Dalam mempelajari buku ini, Anda harus membaca dari bab satu kebab berikutnya secara berurutan dan tidak boleh melompat. Hal inidilakukan karena pada setiap bab yang ada dalam buku inimembahas pokok bahasan yang saling berkaitan dan berurutan.Pada setiap sub pokok bahasan selalu disertai dengan contoh scriptlengkap dan disertai dengan penjelasan script yang ada.

PERLENGKAPAN APA YANG DIPERLUKAN ?Untuk mempelajari buku ini, Anda harus menyiapkan beberapasoftware sebagai berikut: Apache Web Server PHP Versi 4.xx

Page 9: PHP Dan MySQL Studi Kasus Database Karyawan

Pendahuluan Bab 1

2

MySQL 3.xx phpMyAdminBagi Anda yang menggunakan system operasi Linux, Anda tidakperlu lagi dipusingkan dengan software-software tersebut, karenakeempat program tersebut sudah terintegrasi dalam distro-distroLinux. Pada saat Linux di-install maka program-program tersebutsudah ikut ter-install di dalamnya sebagai komponen Linux.Bagi Anda pengguna Windows, Anda harus mencari software tersebutdan meng-install ke dalam komputer Anda, sehingga komputer yangdigunakan selain sebagai komputer client sekaligus sebagai komputerserver untuk mem-publish file-file PHP Anda. Salah satu cara yangtermudah bagi Anda pengguna Windows untuk mendapatkankeempat software tersebut adalah dengan meng-install sebuah toolsyang bernama phptriad. Program phptriad ini bersifat free ataugratis. Apabila Anda ingin mendapatkannya, dapat di-downloadmelalui website dengan alamat URL berikut:http://sourceforge/projects/phptriadFile phptriad tersebut terdiri dari satu file saja dengan extention *.exeyang mempunyai ukuran sekitar 10 Megabyte. Setelah Anda jalankanfile phptriad-221.exe, maka keempat program tersebut secarabersamaan akan ter-install juga.Selain keempat program tersebut di atas, Anda harus menyiapkansoftware editor teks dan software yang digunakan untuk mendesainhalaman dan formulir dari web yang akan dibangun. Dalam hal ini,penulis menggunakan Microsoft FrontPage yang merupakan programuntuk mendesain halaman web dengan pertimbangan : program inidapat digunakan untuk mendesain halaman web dengan mudahkarena hasil desain dapat di-preview langsung ke dalam browserinternet explorer. Untuk menulis dan membuat script PHP, Andadapat menggunakan software PHPEditor atau PHPED. Keduasoftware editor teks ini bersifat free atau gratis.Untuk software PHPEd dapat Anda download melalui web resminyayaitu dengan alamat URL berikut:

Page 10: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 1 Pendahuluan

3

http://www.soysal.com/PHPEdNamun untuk memudahkan Anda dalam mempelajari buku ini,penulis telah menyertakan software-software tersebut dan contoh-contoh script dalam CD yang disertakan pada saat Anda membelibuku ini.

Page 11: PHP Dan MySQL Studi Kasus Database Karyawan

5

Bab ini berisi penjabaran tentang perencanaan dan latar belakangdibuatnya proyek ini. Dengan demikian, diharapkan Anda dapatmempelajari dan memahami pokok bahasan yang menjelaskan alasandan permasalahan yang akan dibahas. Selain itu, penjelasan dalambab ini akan menjadi arah atau garis besar dibuatnya web ini.Diasumsikan pula bahwa proyek yang akan dibuat ini adalah sebuahbagian dari perusahaan yang mempunyai cabang di berbagai daerahdan proyek program ini akan dijalankan di induk perusahaan. Proyekyang akan dibuat ini adalah sebuah manajemen administrasipengajuan cuti oleh karyawan yang ada di perusahaan induk danperusahaan cabang, kemudian akan diajukan secara online kepadapimpinan perusahaan yang ada di perusahaan induk.Garis besar dan ketentuan yang diharapkan dari pembuatan webdatabase karyawan ini adalah sebagai berikut : Web yang akan dibuat bersifat intern, yaitu hanya dapat dilihat

dan diakses oleh karyawan, atasan dan administrator yangmemiliki hak akses tertinggi.

Web ini berisikan tentang database karyawan dan manajemen cutionline yang diajukan langsung oleh karyawan yang bersangkutan.

Page 12: PHP Dan MySQL Studi Kasus Database Karyawan

Perencanaan Proyek Bab 2

6

Setiap perusahaan, baik perusahaan induk maupun perusahaancabang yang ada di daerah lain dapat mengakses web ini denganmenggunakan jaringan internet.

Hak akses akan dibagi menjadi empat tingkat, yaitu : Administrator, yaitu orang atau petugas pengelola web

database karyawan ini yang bertugas untuk memasukkandata karyawan, mengubah data karyawan apabila adakekeliruan pengisian form dan juga menghapus datakaryawan yang telah berhenti.

Atasan, yaitu orang atau petugas yang memberikankeputusan disetujui atau tidak disetujui permohonan cuti olehkaryawan bawahannya.

Kepala bagian atau Support, yaitu petugas atau orang yangmencatat data cuti dan data kehadiran karyawan yangmenjadi bawahan di bagian yang dipimpinnya.

Karyawan biasa, yaitu karyawan yang hanya mempunyai hakakses pada halaman data pribadi, pengajuan cuti dan bagianhalaman yang menampilkan keterangan apakah pengajuancuti diterima atau ditolak.

Seorang karyawan dapat melihat arsip cuti yang diambil olehmasing-masing karyawan tersebut.

Pemilik web ini mengharapkan bahwa apabila ada karyawan yangakan mengajukan cuti akan secara langsung dapat membuka web,login ke halaman karyawan dan mengisi formulir cuti secaraonline.

Pemilik web mengharapkan seorang atasan dapat melihat datakaryawannya dan mengetahui status karyawan, apakah sedangaktif atau sedang cuti. Selain itu diharapkan seorang atasan akandapat memberikan konfirmasi atau persetujuan cuti yang diajukanoleh karyawannya.

Diharapkan seorang atasan dapat melihat data arsip cuti yangpernah diambil oleh karyawan bawahannya dan dapat melihatdata cuti tiap pengajuan cuti secara detail.

Page 13: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 2 Perencanaan Proyek

7

Seorang support atau kepala bagian diharapkan dapat melihatdata keseluruahan data karyawan di bawahnya secara detail, dandapat memasukkan data karyawan baru yang posisinya ada dibawahnya.

Seorang kepala bagian dapat melihat data arsip cuti karyawan dibawahnya dan melihat data cuti tiap pengajuan kemudian dapatmencetak laporan cuti tersebut pada kertas dengan format yangtelah ditentukan oleh program.

Seorang karyawan dapat mengajukan cuti secara langsung danonline kepada atasan-nya.

Setiap karyawan dapat mengubah password yang telah diberikanoleh administrator.

Setiap ada data pengajuan cuti baru oleh karyawan akan tercatatke dalam database pengajuan cuti dan dapat diakses menurutsyarat tertentu. Misalkan hanya menampilkan data karyawanyang pengajuan cutinya baru atau yang diterima saja, atau yangditolak saja.

Page 14: PHP Dan MySQL Studi Kasus Database Karyawan

9

Dalam membuat sebuah proyek program atau system yang sempurnapasti memerlukan persiapan yang sesuai dengan kebutuhan dalamproses pembuatannya. Salah satu persiapan yang perlu diperhatikanadalah fungsi-fungsi script PHP yang akan digunakan dalampembuatan program.Fungsi PHP yang akan digunakan untuk membuat proyek ini akandibagi menjadi dua bagian, yaitu fungsi PHP yang berfungsi untukmengolah data dan fungsi-fungsi PHP yang digunakan untukmengakses database, dalam hal ini menggunakan database MySQL.

FUNGSI PHP UNTUK MENGOLAH DATAFungsi untuk mengolah data ini banyak sekali jenisnya, antara lainpengolah data string, data tanggal atau waktu, data angka. Dilihatdari jenisnya, fungsi PHP ini digolongkan menjadi berbagai jenissesuai dengan fungsinya, antara lain fungsi logika, fungsi aritmatika,fungsi pengulangan atau loop, fungsi mengambil data waktu dan lainsebagainya.

FUNGSI STRING

Fungsi string ini adalah berbagai fungsi PHP yang digunakanuntuk mengolah jenis data string.

Page 15: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

10

MENCETAK STRINGFungsi ini digunakan untuk mencetak string atau nilai darisebuah variabel. Fungsi yang digunakan adalah echo atau print.Contoh:Echo “string ditampilkan di browser”;

atauPrint “string ditampilkan di browser”;

Pada contoh di atas dapat dilihat bahwa setelah fungsi echo atauprint, diikuti dengan string yang akan ditampilkan pada browseryang diapit penulisannya dengan tanda petik ganda ("). Selaindigunakan untuk menampilkan string secara langsung, keduafungsi tersebut juga dapat menampilkan nilai dari sebuahvariabel. Contoh :

// latihan_1.php// Mencetak string dari nilai variabel ke dalam browser

$data=” <center><b>Data yang ditampilkan di browser</b></center>”;//mencetak pada browserEcho” Mencetak menggunakan fungsi echo:”;Echo $data;Echo”<br>”;Print “Mencetak menggunakan fungsi print:”;Print $data;

Hasilnya adalah seperti pada gambar 3.1 berikut:

Page 16: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

11

Gambar 3.1 Hasil pencetakan dengan fungsi echo dan fungsi print

MENGHITUNG PANJANG STRINGUntuk menghitung panjang atau jumlah karakter pada sebuahstring dapat menggunakan fungsi strlen, bentuk sintaksnyaadalah:$jumlah_karakter = Strlen(“string”);

$jumlah karakter adalah variabel yang mempunyai nilai jumlahkarakter dari data string.String pada sintaks di atas dapat berisikan karakter dan jugadapat berisikan sebuah variabel.Berikut contoh penggunaan fungsi strlen(); dalam sebuah program:

<?// strlen.php// fungsi untuk menghitung jumlah karakter pada sebuah string?><html>

Page 17: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

12

<head><title>Menghitung panjang string</title></head><body><formulir method="POST" action="<?echo $php_self?>"><p>Masukkan Data <input type="text" name="string" size="20"><input type="submit" value="Hitung" name="hitung"></p></form><?if($hitung){$jumlah=strlen("$string");echo"<p>Panjang string dari <b>$string</b> adalah <b>$jumlah</b>karakter.</p>";}?></body></html>

Jalankan script di atas, kemudian cobalah memasukkan sebuahkata, misalkan kata madiun dan klik tombol Hitung.Hasilnya akan tampak seperti pada Gambar 3.2 berikut:

Gambar 3.2. Tampilan script PHP dengan fungsi strlen.

Page 18: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

13

Pada penggunaan fungsi strlen ini yang perlu diperhatikan adalahkarakter yang akan dihitung adalah seluruh jenis karakter, baikyang berupa huruf, angka, simbol maupun spasi.

MENGAMBIL POTONGAN DARI SEBUAH STRINGUntuk mengambil potongan dari sebuah string dapatmenggunakan fungsi substr(). Dengan menggunakan fungsi ini,Anda dapat mengambil potongan atau sebagian teks dari sebuahstring pada posisi manapun, baik yang berada di awal string, ditengah string maupun di akhir string. Selain itu, Anda juga dapatmenentukan jumlah potongan yang akan diambil. Bentuk sintaksdari fungsi substr() ini adalah:$potongan = substr(string_awal, [awal_pengambilan],[posisi_pengambilan]);

String_awal adalah string sumber yang akan diambil sebagiandatanya.Awal_pengambilan adalah bernilai angka baik bernilai positifmaupun negatif yang menunjukkan posisi dari awal pengambilankarakter. Apabila angka bernilai positif maka pengambilandimulai dari kanan dan diawali dengan angka 0. Apabila angkabernilai negatif, maka pengambilan karakter akan dimulai darikiri dan dihitung mulai dari angka 1.Posisi_pengambilan adalah jumlah karakter yang akan diambildalam string awal. Posisi_pengambilan ini bernilai angka, baikbernilai positif maupun bernilai negatif.Untuk lebih jelasnya perhatikan gambar ilustrasi di bawah ini:Misalkan Anda mengambil potongan string dari sebuah kataINDONESIA, dengan menggunakan fungsi substr(“INDONESIA”,2,4);, maka dalam ilustrasi gambar dapat Anda lihat sebagaiberikut:

Page 19: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

14

I N D O N E S I A0 1 2 3 4 5 6 7 8

Dengan menggunakan sintaks substr(“INDONESIA”, 2, 4); akanmenghasilkan string “DONE”.Kemudian bagaimana apabila nilai dari awal pengambilantersebut bernilai negatif ? Perhatikan contoh sintaks yangmenggunakan parameter awal pengambilan dan panjangpengambilan memiliki nilai positif.

I N D O N E S I A-9 -8 -7 -6 -5 -4 -3 -2 -1

Apabila diperhatikan pada fungsi pengambilan potongan string diatas, awal pengambilan adalah -5 artinya penghitungan karakteradalah keenam dari belakang. Kemudian posisi / jumlahpengambilan diambil dari kanan sebanyak 4 karakter.Hasilnya adalah kata “NESI”;Berikut adalah beberapa contoh model pengambilan potonganstring berdasarkan parameter yang berbeda-beda:Pengambilan potongan string dengan parameter awal pengam-bilan menggunakan nilai 0 atau nilai positif.

Substr(“INDONESIA”, 2, 4);

1 2 3 4

Substr(“INDONESIA”, -5, 4);

1 2 3 4

Page 20: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

15

<?//substr_1.php//parameter pengambilan potongan dengan nilai 0 atau positif.$rest = substr("abcdef", 1); // hasilnya "bcdef"$rest = substr("abcdef", 1, 3); // hasilnya "bcd"$rest = substr("abcdef", 0, 4); // hasilnya "abcd"$rest = substr("abcdef", 0, 8); // hasilnya "abcdef"

// Pengambilan karakter pada urutan yang ditentukan$string = 'abcdef';echo $string{0}; // hasilnya aecho $string{3}; // hasilnya d?>

Contoh pengambilan potongan dengan menggunakan parameterawal pengambilan negatif adalah sebagai berikut :

<?// Pengambilan potongan dengan awal pengambilan negatif$rest = substr("abcdef", -1); // hasilnya "f"$rest = substr("abcdef", -2); // hasilnya "ef"$rest = substr("abcdef", -3, 1); // hasilnya "d"?>

Berikut adalah contoh script pengambilan potongan denganmenggunakan parameter awal pengambilan potongan ataupanjang / posisi pengambilan potongan dengan nilai negatif:

<?$rest = substr("abcdef", 0, -1); // hasilnya "abcde"$rest = substr("abcdef", 2, -1); // hasilnya "cde"$rest = substr("abcdef", 4, -4); // hasilnya ""$rest = substr("abcdef", -3, -1); // hasilnya "de"?>

Page 21: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

16

MENGGANTI POTONGAN STRING DENGAN STRING BARUFungsi yang digunakan untuk mengganti potongan string denganstring baru adalah menggunakan fungsi Substr_replace(). Bentuksintaksnya adalah :$data=substr_replace(string_awal, string_pengganti,[awal_penggantian], [panjang_pengambilan]);

String_awal pada bentuk fungsi di atas adalah string atau variabelyang berisikan data teks sebelum diubah.String_pengganti adalah string atau variabel yang mempunyainilai string dan berfungsi sebagai pengganti.Awal_penggantian adalah angka yang menyatakan posisi awalpengambilan karakter dari string awal.Panjang_pengambilan adalah bernilai angka yang menyatakanjumlah karakter string awal yang akan diganti.Contoh script dari fungsi substr_replace di atas adalah sebagaiberikut:

// substr_replace.php// fungsi mengganti potongan string dengan string yang baru$var = 'ABCDEFGH:/MNRPQR/';echo "Data Awal: $var<hr>\n";

/* Dua contoh ini menggantikan semua dari variabel $var dengan'madiun'. */echo substr_replace($var, 'madiun', 0) . "<br>\n";echo substr_replace($var, 'madiun', 0, strlen($var)) . "<br>\n";

/* Masukkan 'madiun' pada kanan dari nilai dari variabel $var. */echo substr_replace($var, 'madiun', 0, 0) . "<br>\n";

/* Berikutnya ini dua contoh mengganti ' MNRPQR' pada variabel $ vardengan ' madiun'. */echo substr_replace($var, 'madiun', 10, 5) . "<br>\n";echo substr_replace($var, 'madiun', -7, -1) . "<br>\n";

/* Menghapus 'MNRPQR' dari variabel $var. */echo substr_replace($var, '', 10, -1) . "<br>\n";?>

Page 22: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

17

Apabila dijalankan pada browser akan tampak seperti padaGambar 3.3 berikut:

Gambar 3.3 Tampilan fungsi substr_replace untuk mengganti potonganstring.

Fungsi untuk mengganti potongan string dengan string baru yanglain adalah menggunakan fungsi str_replace(). Bedanya denganfungsi sebelumnya adalah pada fungsi ini akan mencari kesamaankarakter atau kata yang akan diganti pada string awal, kemudiandiganti dengan string pengganti yang sudah ditentukan.Bentuk dari fungsi ini adalah:$data = str_replace(“string_diganti”, “string_pengganti”, “string_awal”);

String_diganti adalah potongan string yang akan diganti denganstring pengganti. Artinya fungsi ini pertama akan mencarikesamaan string yang akan diganti terlebih dahulu yang ada distring awal, kemudian apabila ditemukan akan langsung digantidengan string pengganti.Berikut adalah contoh script dengan fungsi str_replace():

Page 23: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

18

<?// str_replace.php// Penggunaan fungsi str_replace untuk menggati potongan string$data_awal="Komputer pada <b>jaman</b> ini sangat membantupekerjaan manusia.";$string_diganti="jaman";$string_pengganti="<b>era tekhnologi</b>";$data_akhir=str_replace($string_diganti, $string_pengganti,$data_awal);// ditampilkan di browserecho "Data awal :<br>";echo $data_awal."<br>";echo "Data setelah diganti :<br>".$data_akhir;?>

Setelah dijalankan di browser akan tampak seperti pada Gambar3.4 berikut:

Gambar 3.4 Tampilan fungsi str_replace untuk mengganti potonganstring.

FUNGSI PEMECAH DAN PENGGABUNG STRINGFungsi string selanjutnya adalah fungsi untuk memecah danmenggabungkan sebuah string.

Page 24: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

19

Untuk memecah string adalah menggunakan fungsi explode(),kemudian fungsi untuk menggabungkan string adalahmenggunakan fungsi implode(). Bentuk susunan fungsi ini adalah:$data = explode(pola, $string);

dan$data2 = implode(pola, string);

Yang dimaksud pola pada fungsi di atas adalah parameter ataukarakter yang digunakan untuk memisahkan atau untukmenggabungkan string. Sedang string adalah data berupakarakter atau kata dan juga dapat berupa variabel yangmempunyai nilai berupa string atau karakter.Berikut contoh script yang menggunakan fungsi explode() danimplode() untuk memisah dan menggabung string:

<?// explode_implode.php// fungsi memisah string.

$data_awal="data1 data2 data3 data4 data5";$pisah=explode(" ", $data_awal);echo "Data Asli :<br> $data_awal<hr><b>Dipisah dengan polaspasi</b>";echo "Potongan 1 : ".$pisah[0]."<br>";echo "Potongan 2 : ".$pisah[1]."<br>";echo "Potongan 3 : ".$pisah[2]."<br>";echo "Potongan 4 : ".$pisah[3]."<br>";echo "Potongan 5 : ".$pisah[4]."<br>";//fungi menggabung potongan string.echo"<b>Digabung kembali dengan pola (:) : </b><br>";$data_akhir=implode(":", $pisah);echo $data_akhir;?>

Apabila dijalankan pada browser akan terlihat seperti padaGambar 3.5 berikut:

Page 25: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

20

Gambar 3.5 Tampilan membagi dan menggabung potongan string.

FUNGSI LOGIKA

Fungsi logika yang digunakan pada proyek ini adalah fungsi if.Fungsi if ini tidak hanya digunakan pada program PHP, namunpada semua bahasa pemrograman selalu menggunakan fungsi if(jika) sebagai pembagi atau syarat untuk meletakkan operasiprogram yang akan dijalankan.Fungsi if dalam program ini akan dibagi menjadi tiga tingkat ataubentuk. Bentuk yang pertama adalah :If(kondisi){

Operasi;

}

Dalam bentuk script if di atas, kondisi adalah syarat yangdigunakan untuk menjalankan operasi. Contoh fungsi if dalamprogram adalah sebagai berikut:

Page 26: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

21

<?// contoh script menggunakan fungsi if bentuk / tingkat 1$var=”marah”;If($var==”merah”){Echo”apabila warnanya $var maka meriah euh…”;}?>

Penjelasan script:Pada script di atas ada dua bagian utama, yang pertama adalahkondisi dan di dalamnya mengandung fungsi operasi. Variabel$var dengan nilai “merah“ dan nilai merah yang ada dalamvariabel $var tersebut sebagai syarat atau kondisi dari fungsi if.Apabila syarat terpenuhi, maka script akan menjalankan perintahmenampilkan kata dengan fungsi echo.Fungsi logika yang kedua adalah fungsi if else. Artinya fungsi if iniakan memberikan dua pilihan operasi yang akan dijalankan.Apabila syarat terpenuhi maka operasi yang pertama akandilaksanakan, dan jika syarat tidak terpenuhi maka operasi yangkedua akan dilaksanakan. Berikut bentuk fungsi if else :If(kondisi){Operasi 1;}else{Operasi 2;}

Alur operasi dari fungsi ini adalah apabila kondisi bernilai salahmaka operasi 1 akan diabaikan dan akan menjalankan operasi2.Berikut adalah contoh dalam program tentang fungsi if else ini:

<?//if_else.php// Fungsi if dengan menggunakan dua alternative pilihan.$hasil= 5 +5;$hasil2= 10;

Page 27: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

22

If($hasil== $hasil){Echo” Jumlah dari 5 + 5 adalah $hasil”;}else{Echo”Jumlah dari 5 + 5 adalah bukan $hasil2 “;}?>

Penjelasan script :Sebagai syarat pada script di atas adalah variabel $hasil dan$hasil2. Variabel $hasil memiliki nilai penjumlahan angka 5 danlima atau sama dengan 10. Kemudian untuk nilai dari variabel$hasil2 mempunyai nilai angka 10. Pada fungsi if tersebut,variabel $hasil dan $hasil2 akan dijadikan syarat atau kondisi,jika variabel $hasil sama dengan variabel $hasil2 yang ditandaisama dengan ganda (==) menghasilkan nilai benar, maka operasi 1akan dijalankan. Kemudian Anda coba untuk memasukkan nilaivariabel $hasil2 dengan angka 12, maka kondisi akanmenghasilkan false atau salah dan program akan menjalankanoperasi 2.Fungsi logika yang ketiga adalah fungsi if elseif else. Fungsi ifyang ketiga ini akan menyediakan banyak pilihan yang akandijalankan berdasarkan kondisi tertentu.Bentuk fungsi ini adalah:If(kondisi 1){Operasi 1;}elseif(kondisi 2){Operasi 2;}else{Operasi 3;}

Untuk fungsi if ini hampir sama dengan yang sebelumnya, namununtuk fungsi if ini mempunyai kondisi yang berbeda-beda sebagaisyarat untuk menjalankan operasi yang berbeda-beda pula.

Page 28: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

23

Untuk lebih jelasnya, perhatikan contoh dalam script berikut:<?// if_elseif.php// contoh penggunaan fungsi if multi alternatif.$date=date(“w”);If($date==”0”){$hari=”Minggu”;}elseif($date==”1”){$hari=”Senin”;}elseif($date==”2”){$hari=”Selasa”;}elseif($date==”3”){$hari=”Rabu”;}elseif($date==”4”){$hari=”Kamis”;}elseif($date==”5”){$hari=”Jum’at”;}else{$hari=”Sabtu”;}

Echo “Hari ini adalah hari <b>$hari</b>.”;?>

Penjelasan script:Kondisi pada script di atas adalah nilai variabel $date yangdihasilkan dengan menggunakan fungsi date(). Fungsi date() iniakan menghasilkan nilai angka dari 0 sampai dengan 6 sesuaidengan hari sekarang. Misalkan sekarang hari Senin, makavariabel $date akan memiliki nilai 1 dan seterusnya. Kemudianpada script di atas dikombinasikan dengan fungsi if sebagai syaratuntuk menjalankan operasi yaitu memberikan nilai pada variabel$hari. Apabila nilai variabel $date adalah 0, maka variabel $hariakan diberikan nilai “Minggu”. Apabila nilai dari variabel $date

Page 29: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

24

adalah 1 maka nilai dari variabel $hari akan diberikan nilai“Senin” dan seterusnya. Untuk melihat hasilnya script tersebutmaka jalankan dalam browser, dan hasilnya akan tampak sepertipada Gambar 3.6 berikut:

Gambar 3.6 Tampilan fungsi if dengan multi alternatif.

FUNGSI PENGULANGAN OPERASI

Banyak fungsi PHP yang digunakan untuk mengulang operasidalam sebuah program web. Beberapa fungsi tersebut adalahfungsi for dan while. Kedua fungsi tersebut akan digunakan dalammembangun proyek database cuti karyawan online.

FUNGSI FORFungsi for ini sering digunakan pada script-script yang melakukanpengulangan perintah. Bentuk dari fungsi for ini adalah:For(syarat1;syarat2;syarat3){Operasi;}

Syarat yang dimaksud di atas adalah kondisi di mana mulaipengulangan, jumlah pengulangan dan kelipatan pengulanganakan dilakukan pada operasi tersebut.Berikut contoh penggunaan fungsi for untuk memperjelas daribentuk fungsi for tersebut :

Page 30: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

25

<?//for.php// Penggunaan fungsi pengulangan dengan menggunakan fungsi for.For($i=1 ; $i<=10 ; $i++){Echo” Ditampilkan diurutan ke $i “;}?>

Penjelasan script:Pada script di atas variabel $i adalah sebagai parameterpengulangan. Syarat pertama adalah variabel $i = 1 adalahpengulangan dimulai dengan angka 1, kemudian pada syarat kedua adalah variabel $i <= 10, artinya adalah operasi pengulanganakan diakhiri dengan hitungan ke 10, syarat yang terakhir adalahvariabel $i++, artinya pengulangan dilaksanakan denganpenambahan atau kelipatan 1. Berikut adalah hasil operasi fungsifor jika dijalankan menggunakan browser:

Gambar 3.7 Tampilan fungsi for dengan pengulangan sebanyak 10 kali.

Page 31: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

26

Kemudian bagaimana apabila Anda ingin menggunakan fungsi for,namun hanya menampilkan kelipatan 2 saja?Pada script for di atas Anda ganti untuk kondisi atau syarat ketigayaitu $i++ menjadi $i+=2, kemudian jalankan pada browser.Berikut adalah hasil dari perubahan script Anda dalam browser:

Gambar 3.8 Tampilan fungsi for dengan pengulangan kelipatan 2.

FUNGSI WHILEFungsi while pada pengoperasiannya tidak jauh beda denganfungsi for. Pada dasarnya fungsi ini juga digunakan untukpengulangan perintah atau operasi. Bedanya adalah pada strukturatau bentuk dari fungsinya. Berikut bentuk dari fungsi while:Syarat1

While(syarat2{

Operasi;

Syarat3;

}

Page 32: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

27

Pada fungsi ini akan menjalankan pengulangan dimulai dengannilai syarat 1, kemudian perintah operasi terus-menerusdilaksanakan selama syarat 2 belum terpenuhi. Syarat 3 berfungsiuntuk memberikan nilai kelipatan dan penambahan jumlahpengulangan operasi yang ada dalam fungsi while.Berikut contoh script yang menggunakan fungsi while:

<?// while.php// Bentuk pengulangan dengan menggunakan fungsi while.

Echo”<b>Pengulan dengan fungsi while</b><br>”;$data=1;While($data<11){Echo”Dicetak diurutan ke $data<br>”;$data++;}?>

Penjelasan Script:Fungsi while di atas menggunakan tiga syarat, yaitu syarat1,syarat2 dan syarat3. Syarat 1 berfungsi untuk memberikan nilaiawal pengulangan, kemudian untuk syarat 2 digunakan untukmemberikan parameter di mana pengulangan akan dihentikan,dalam hal ini adalah nilai $data < 11. Syarat yeang ketiga adalahvariabel data yang nilainya adalah kelipatan 1 dari variabel $data= 1 dari syarat 1, dengan parameter $data++.Berikut hasil dari script while di atas setelah dijalankanmenggunakan browser:

Page 33: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

28

Gambar 3.9 Tampilan fungsi while dengan pengulangan 10 kali.

FUNGSI TANGGAL DAN WAKTU

Fungsi yang digunakan untuk mengolah waktu dalam programPHP sangat banyak sekali. Fungsi-fungsi waktu tersebut dipakaisesuai dengan kondisi dan kebutuhan pengolahan data tertentu.

FUNGSI DATEFungsi waktu pertama yang digunakan dalam proyek ini adalahfungsi date(). Fungsi ini digunakan untuk mengambil waktudengan menggunakan format yang dapat diubah-ubah. Sedangkanformat yang digunakan juga ada bermacam-macam. Berikutadalah daftar format yang dapat digunakan untuk fungsi date() :

Format Keterangana atau A Digunakan untuk memberikan keterangan am

atau pm

Page 34: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

29

Format Keterangand Digunakan untuk mengambil hari dengan

format 2 angkaD Nama hari dengan bentuk singkatan tiga hurufF Nama bulan lengkap contoh “January”h Menyatakan jam dengan format 12 jam bentuk

dua angkaH Menyatakan jam dengan format 24 jam bentuk

dua angkai Menyatakan menit format “00 – 59”l (L kecil) Nama hari lengkap “Friday”j Tanggal dengan format “1 – 31”m Menyatakan bulan “01 – 12”M Menyatakan bulan dengan format tiga huruf

“Jan”s Menyatakan detik format “00 – 59”t Memerikasa jumlah hari dalam seminggu “28 –

31”w Menyatakan hari dalam seminggu bentuk angka

contoh : “0” = minggu, “1” = Senin, dst.y Menyatakan tahun dengan bentuk dua angka

“04”Y Menyatakan tahun dengan bentuk empat angka

“2004”z Menyatakan hari dalam setahun “0 – 365”

Bentuk fungsi date() adalah :$tanggal = date(“format”);

Format yang ada pada fungsi date tersebut dapat dituliskandengan format yang ada didaftar format waktu tersebut di atas.

Page 35: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

30

Contoh script yang menggunakan fungsi date() untuk menuliskantanggal sekarang dengan mengubah nama bulan menjadi formatIndonesia adalah sebagai berikut:

<?//waktu.php// menciptakan waktu sekarang dan lima hari lagi$hari=date("d");$bulan=date("m");$tahun=date("Y");if($bulan==01){$bulan="Januari";}elseif($bulan==01){$bulan="Pebruari";}elseif($bulan==03){$bulan="Maret";}elseif($bulan==04){$bulan="April";}elseif($bulan==05){$bulan="Mei";}elseif($bulan==06){$bulan="Juni";}elseif($bulan==07){$bulan="Juli";}elseif($bulan==08){$bulan="Agustus";}elseif($bulan==09){$bulan="September";}elseif($bulan==10){$bulan="Oktober";}elseif($bulan==11){$bulan="Nopember";

Page 36: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

31

}else{$bulan="Desember";}$sekarang="$hari $bulan $tahun";

echo "<center>Sekarang tanggal ".$sekarang.”</center>”;?>

Apabila dijalankan di browser hasilnya akan tampak seperti padaGambar 3.10. berikut:

Gambar 3.10 Tampilan fungsi date untuk menampilkan tanggal

sekarang.

FUNGSI TIMEFungsi time ini digunakan untuk mendapatkan nilai detik darijam 00:00:00 tanggal 01 januari 1970 sampai waktu file yangmengandung fungsi time ini dijalankan. Bentuk fungsi ini adalah:$data = time();

Fungsi time ini tidak mempunyai parameter seperti fungsi date.Karena pada fungsi time ini hanya mengambil nilai detik selamatahun tersebut di atas sampai sekarang.

Page 37: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

32

Berikut adalah contoh script yang menggunakan fungsi timeuntuk menampilkan data tanggal sekarang dan data tanggal limahari lagi:

<?// time.php// menampilkan tanggal sekarang dan tanggal lima hari berikutnya.$data = time();$besok=$data+ 86400*5;$sekarang=date(“d M Y”, $data);$besok_tanggal = date(“d M Y”, $besok);Echo “Sekarang tanggal <b>$sekarang</b> <br>Besok tanggal <b>$besok_tanggal</b>”;?>

Apabila dijalankan menggunakan browser akan tampak sepertipada Gambar 3.11 berikut:

Gambar 3.11 Tampilan fungsi time untuk menampilkan tanggal sekarangdan tanggal lima hari lagi.

FUNGSI MKTIMEFungsi waktu selanjutnya adalah mktime(). Fungsi ini digunakanuntuk mengkonversikan tanggal dan jam ke dalam data detik.Artinya apabila Anda mempunyai data tanggal dan jam kemudianingin menampilkan jumlah detik dari data waktu tersebut, maka

Page 38: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

33

data detik yang Anda inginkan akan ditampilkan. Bentuk fungsiini adalah:$detik = mktime(detik, menit, jam, bulan, hari, tahun);

Jumlah detik yang dihasilkan adalah jumlah detik dihitung darijam 00:00:00 tanggal 1 januari 1970.Untuk menampilkan data detik ke dalam format tanggal kembalidapat menggunakan fungsi date dengan sumber dari jumlah detikmenggunakan fungsi microtime.Berikut adalah contoh script untuk menampilkan tanggal yangdimasukkan dari formulir dan tanggal selanjutnya ditambahdengan jumlah hari dari formulir yang sama.

<html><head><title>fungsi mktime</title></head><body><formulir method="POST" action="<?echo$php_self?>"><p>Masukkan tanggal&nbsp; (dd/mm/yyyy) :</p><p>Tanggal <input type="text" name="tanggal" size="17"><br>Masukkan jumlah hari <input type="text" name="hari" size="5">hari<br><input type="submit" value="PROSES" name="submit" style="font-size: 10pt"></p></form><?if($submit){$data=explode("/", $tanggal);$detik= mktime(0,0,0,$data[1],$data[0],$data[2]);$tanggal=date("d F Y", $detik);$next=$detik + 86400 * $hari;$lanjut = date("d F Y", $next);echo"<p>Tanggal yang anda masukkan adalah<br>

Page 39: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

34

<b>$tanggal<br>$hari </b>hari lagi tanggal<b> $lanjut</b></p>";}?></body></html>

Penjelasan script:Pada script di atas mengandung formulir yang berfungsi untukmemasukkan data tanggal dan jumlah hari untuk menghasilkantanggal setelah memasukkan formulir tanggal ditambah denganformulir jumlah hari yang telah dimasukkan. Kode PHP yangpertama adalah <?echo $php_self?>, maksud dari kode tersebutadalah untuk mengisikan action pada formulir dengan nilai namafile itu sendiri. Artinya data yang dikirimkan dari formulir akandikirim ke file itu sendiri.Kode PHP selanjutnya adalah if($submit){, artinya apabila tombolsubmit yang ada di formulir ditekan maka akan menjalankanoperasi selanjutnya yang ada dalam fungsi if.Kemudian fungsi explode(“/”, $tanggal), adalah fungsi yangdigunakan untuk memisahkan data tanggal lengkap dengan bulandan tahun yang akan dipisah menjadi tanggal sendiri, bulansendiri dan tahunpun sendiri, kemudian akan dimasukkan kedalam data array yaitu $data[0] = data tanggal, $data[1] = databulan, $data[2]= data tahun.Setelah data tanggal dipisahkan kemudian data tersebutdimasukkan ke dalam fungsi mktime untuk dikonversikan kedalam data detik. Untuk menampilkan data tanggal tersebutharus dikonversikan kembali dengan menggunakan fungsi date.Untuk mencari data tanggal 5 hari lagi maka data hari dijadikandata detik dengan cara dikalikan dengan jumlah detik dalamsehari. Kemudian ditambahkan dengan data detik dari fungsimktime dan konversikan ke dalam data tanggal dengan fungsidate.

Page 40: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

35

Untuk melihat hasilnya, coba jalankan script di atas denganbrowser, hasilnya akan tampak seperti pada Gambar 3.12 berikut:

Gambar 3.12 Tampilan formulir untuk menampilkan data tanggal denganfungsi mktime.

Untuk melihat hasil dari fungsi script mktime tersebut, cobamasukkan tanggal 5/4/04 kemudian untuk jumlah hari berikutnyaadalah 5 dan Anda tekan tombol Proses, maka akan menghasilkandata tanggal seperti yang Anda masukkan dan data tanggal 5 harisetelah tanggal yang Anda masukkan seperti pada Gambar 3.13.

Page 41: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

36

Gambar 3.13 Tampilan data tanggal dengan fungsi mktime.

SESSION

Session atau sesi pada program PHP adalah salah satu fungsiyang banyak digunakan untuk program-program aplikasi denganpembatasan akses oleh administrator / webmaster kepadapengunjung yang dikehendaki. Misalkan untuk mengakseshalaman data karyawan hanya akan diijinkan oleh karyawan yangbersangkutan saja. Data sesi ini pada dasarnya data yang diambildari data variabel kemudian disimpan pada webserver. Data sesiini tidak akan terhapus selama browser belum ditutup, atausebelum sesi dihapus dengan fungsi PHP untuk menghapus sesi.Pada penulisannya fungsi sesi ini diawali dengan fungsi pertamaadalah session_start(). Ketentuan penulisan fungsi untuk memulaisession ini harus diletakkan pada awal script. Kemudian untukmendaftarkan sebuah nilai variabel ke dalam data sesi adalahdengan menggunakan fungsi session_register();

Page 42: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

37

Data sesi ini akan tersimpan ke dalam web server pada direktoriatau path yang sudah diatur oleh webserver. Data sesi ini tidakdapat dipanggil kembali apabila pengunjung telah keluar darihalaman anggota atau telah menutup browser.Aplikasi dari fungsi sesi ini selalu digabungkan dengan tag HTMLyang membentuk sebuah formulir untuk login pengunjung.Berikut adalah contoh aplikasi formulir dengan fungsi sesi untukmengakses halaman keanggotaan :

<?// member.php// formulir untuk login anggota?><html><head><title>Formulir Login</title></head><body><formulir method="POST" action="member.php"><p align="center"><font face="Arial" color="#000080">Nama :<br></font><font color="#000080" face="Arial"><input type="text" name="nama" size="18"><br>Status Keanggotaan :<br></font><font color="#000080" face="Arial"><input type="radio" value="Pengunjung" checkedname="status">Pengunjung</font><font color="#000080" face="Arial"><input type="radio" name="status" value="Anggota">Anggota </font><font color="#000080" face="Arial"><input type="radio" name="status" value="Admin">Admin</font><br><input type="submit" value="L O G I N" name="login"></p></form><p align="center">&nbsp;</p>

Page 43: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

38

</body></html>

Jalankan script HTML tersebut pada browser, pada browser akanditampilkan formulir yang akan digunakan oleh pengunjung untuklogin seperti pada Gambar 3.14 berikut:

Gambar 3.14 Tampilan formulir untuk login pengunjung.

Apabila Anda perhatikan pada script tersebut ada dua bagian yangpenting dalam pengolahan data, yang pertama adalah adanya duavariabel yang akan dikirim datanya dari formulir tersebut ke filepengolah data. Yang kedua adalah action dari formulir tersebut,yaitu berisikan alamat dan nama dari file yang akan dijadikantujuan pengiriman data apabila tombol login ditekan olehpengunjung.Berikut adalah script yang berfungsi untuk mengolah data yangditerima dari formulir login dan dituliskan pada file dengan namamember.php:

<?session_start();?><html>

Page 44: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

39

<head><title>Halaman member</title></head><body><?session_register("nama");session_register("status");?><p><font face="Arial">Selamat datang <b><?echo$nama?></b><br>Anda telah login dan tercatat sebagai<b><?echo$status?></b></font></p><p><font face="Arial"><a href="halaman2.php">Halaman kedua</a></font><br>&nbsp;</p></p></body></html>

Penjelasan script:Setiap script yeng mengandung fungsi sesi harus diawali denganfungsi session_start() sebagai identitas dan berfungsi untukmengenalkan kepada webserver bahwa dalam halaman tersebutmengandung data sesi. Kemudian pada fungsi selanjutnya adalahsession_register() yang berfungsi untuk mendaftarkan datavariabel yaitu nama dan status menjadi data sesi. Penulisanfungsi session_register() adalah:Session_register(“nama_variabel”);

Jadi pada fungsi ini memberikan parameter nama variabel tanpamemberikan tanda dollar ($) di depan nama variabel. Setelah datadari variabel nama dan status terdaftar sebagai data sesi, makasetiap membuka halaman data tersebut akan selalu terbawa,walaupun variabel tidak dideklarasikan.Pada contoh dalam halaman member.php tersebut disisipkansebuah link ke halaman dua. Apabila link tersebut dikunjungi

Page 45: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

40

maka data nama dan status tetap akan terbawa dan apabiladitampilkan di browser akan ditampilkan datanya.Untuk mencobanya, masukkan sebuah nama dan pilih status yangAnda inginkan kemudian tekan tombol Login. Berikut contohaplikasi login dengan data sesi dengan nama yang dimasukkanadalah “Nana” dan status dipilih “anggota” kemudian tekan tombolLogin, hasilnya akan tampak seperti pada Gambar 3.15.

Gambar 3.15 Tampilan Halaman member setelah pengunjung login.

Kemudian untuk halaman dua, buat script berikut:<?session_start();?><html><head><title>Halaman 2</title></head><body><p><b><font face="Arial">HALAMAN 2</font></b></p><p><font face="Arial">Nama Anda <b><?echo$nama?></b><br>Status Anda sebagai <b><?echo$status?></b></font></p><p><font face="Arial"><a href="member.php">Halaman ke

Page 46: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

41

1</a></font><br>&nbsp;</p><p><br>&nbsp;</p></body></html>

Penjelasan script:Script yang menggunakan fungsi sesi selalu diawali dengan fungsipembuka sesi yaitu session_start() pada awal halaman, kemudianpada badan script untuk menampilkan data nama dan statuscukup menggunakan fungsi echo saja, sehingga data yang adapada kedua variabel tersebut dapat langsung ditampilkan.Untuk mencobanya, buka link ke halaman dua pada halamanmember.php tersebut, hasilnya akan tampak seperti pada Gambar3.16 berikut:

Gambar 3.16 Tampilan Halaman 2 setelah pengunjung klik pada link kehalaman 2.

FUNGSI EKSPRESI

Fungsi ekspresi disebut juga fungsi perbandingan. Artinya denganmenggunakan fungsi ekspresi ini Anda dapat memberikan nilai

Page 47: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

42

benar atau salah apabila ada dua atau lebih data yang akandibandingkan.

FUNGSI EREGFungsi ekspresi yang pertama adalah fungsi ereg. Fungsi inidigunakan untuk membanding dua buah string, apabila salah satustring mempunyai kesamaan dengan data string yang kedua makanilai yang dihasilkan adalah true atau benar.Bentuk dari fungsi ereg adalah:$hasil=ereg(string_pola, string_data);

String_pola adalah karakter yang digunakan untuk filter(penyaring) yang dicocokkan.String_data adalah string yang dijadikan data sumber, di manaapabila data_pola sesuai dengan string yang ada dalam string datamaka hasilnya akan bernilai true atau benar.Berikut contoh script yang menggunakan fungsi ereg sebagaikontrol sebuah konfirmasi pengisian data:

<?// Penggunaan fungsi ereg untuk memeriksa kebenaran dataif($submit){if(ereg(" ",$user)){echo"<center> User ini yang anda masukkan mengandungspasi.<br> Masukkan userid yang benar</center>";}else{echo"<center>Selamat User ID $user, Anda telah masuk halaman ini.";}}else{?><formulir method="POST" action="<?echo$php_self?>">

<p>User ID <input type="text" name="user" size="20"><input type="submit" value="LOGIN" name="submit"></p>

Page 48: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

43

</form><?}?>

Penjelasan script:Pada script di atas terbagi menjadi dua bagian yaitu script PHTMyang berisikan formulir untuk memasukkan user id dan scriptPHP yang berfungsi untuk memeriksa data yang dimasukkanmengandung spasi atau tidak menggunakan fungsi if dan ereguntuk mencari kesamaan data spasi tersebut.Untuk mencoba script tersebut, jalankan file ereg.phpmenggunakan browser sehingga akan tampil sebuah formuliruntuk menuliskan userid seperti pada Gambar 3.17 berikut:

Gambar 3.17 Tampilan formulir untuk mengisi userid.

Kemudian coba masukkan sebuah nama dengan sebuah spasi,misalkan “Cahya c75”. Setelah Anda tekan tombol Login makafungsi if dan ereg akan memeriksa data yang diisikan dariformulir apakah mengandung spasi atau tidak. Apabila data yangtelah Anda masukkan mengandung spasi, maka akan ditampilkanpesan kesalahan seperti pada Gambar 3.18 berikut:

Page 49: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

44

Gambar 3.18 Tampilan pesan kesalahan dari formulir login.

Dengan menggunakan fungsi ereg ini banyak sekali manfaat yangdapat diambil, pada dasarnya fungsi ereg ini digunakan untukfungsi penyaring atau filter data dari formulir yang diisi dari useratau pengunjung web.

FUNGSI SPLIT()Fungsi regular yang kedua adalah fungsi split. Fungsi inidigunakan untuk memecah sebuah string menjadi beberapa stringsesuai dengan pola yang telah ditentukan.Bentuk fungsi split adalah :$data = split(‘pola’, data_string);

Yang dimaksud dengan pola pada bentuk fungsi di atas adalahformat yang digunakan untuk pemisah data string. Kemudianuntuk data_string adalah variabel yang mempunyai nilai jenisstring atau data string itu sendiri.Untuk lebih jelasnya, coba jalankan script yang menggunakanfungsi split untuk memecah string di bawah ini:

<?

// memecah string menggunakan fungsi split()

Page 50: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 3 Fungsi-fungsi PHP

45

$date = "02/06/2004"; // Dipisah dengan tanda slash, titik dan tandahubung.

list ($hari, $bulan, $tahun) = split ('[/.-]', $date);

echo "Tanggal: $hari; Bulan: $bulan; Tahun: $tahun<br>\n";

echo” Dipisah dengan tanda titik sebagai polanya.<br>”;

$data="kalimat satu. Kalimat dua. Kalimat tiga.";

list ($satu, $dua, $tiga) = split ('[/.-]', $data);

echo"1. $satu<br> 2. $dua <br> 3. $tiga";

?>

Penjelasan script:Pada script di atas adalah program yang berfungsi untukmemecah string dari dua string sumber. Yang pertama adalahstring dengan data “02/06/2004”. Pada fungsi yang kedua, datastring dipecah dengan menggunakan fungsi split. Pola yangdigunakan untuk memecah string tersebut adalah “[/.-]”, artinyaapabila ada salah satu karakter yang ada dalam tanda kurungsiku [ dan ] maka akan dijadikan sebagai pola pemecahannya.Untuk kasus yang pertama pada string ditemukan tanda slash “/”dan sesuai dengan salah satu pola untuk memecah string, makastring tersebut dipecah menjadi tiga bagian. Data pecahan stringtersebut dimasukkan ke dalam beberapa variabel menggunakanfungsi list, kemudian ditampilkan ke dalam browser denganmenggunakan fungsi echo.Pada bagian yang kedua adalah memecah string dengan data"kalimat satu. Kalimat dua. Kalimat tiga.", kemudian stringtersebut dipecah dengan menggunakan pola tanda titik yang jugasesuai dengan salah satu pola pemecah string pada fungsi split.Hasil pemecahan string tersebut kemudian dimasukkan ke dalambeberapa variabel dan ditampilkan ke dalam browsermenggunakan fungsi echo seperti pada Gambar 3.19 berikut:

Page 51: PHP Dan MySQL Studi Kasus Database Karyawan

Fungsi-fungsi PHP Bab 3

46

Gambar 3.19 Tampilan pecahan string menggunakan fungsi split.

Page 52: PHP Dan MySQL Studi Kasus Database Karyawan

47

Pada dasarnya database adalah kumpulan data yang disimpan kedalam sebuah file atau beberapa file. Dalam sistem informasikomputer, database adalah sebuah kumpulan data yang tersusunsecara sistematis sehingga akan memudahkan pengguna untukmengakses dan mengatur sehingga akan menghasilkan sebuahinformasi yang efektif dan efisien.Banyak sekali macam dari database, antara lain data karyawan, datacuti, data absensi, data siswa, data penjualan, data inventori danmasih banyak lagi. Database tersebut dapat berdiri-sendiri dan jugadapat digabung menjadi satu kesatuan. Menggabung dua atau lebihjenis database sering juga disebut mengkorelasikan.Suatu contoh kasus sebuah database karyawan dihubungkan dengandatabase absensi karyawan. Untuk menggabungkan beberapadatabase harus ada sebuah penghubung di antara dua databasetersebut yang disebut index. Untuk menggabungkan kedua databasetersebut dibutuhkan index dengan nama NIK (nomor indukkaryawan). Syarat dari sebuah index adalah tidak boleh ada datayang sama dan pada kedua database tersebut harus memuat dataindex tersebut.Sistem manajemen database (Database Management System) DBMSmerupakan software yang banyak digunakan untuk mengolah data,dari pendefinisian database, pengolahan data, perawatan data,

Page 53: PHP Dan MySQL Studi Kasus Database Karyawan

Perencanaan Database Menggunakan MySQL Bab 4

48

sampai dengan pengaturan siapa saja yang diberi hak untukmengakses data tersebut.Sistem manajemen databse relasi merupakan salah satu bentuk darisuatu manajemen database. Sistem manajemen database relasimemiliki komponen dasar, yaitu: Database, tempat menyimpan data yang distrukturkan:

Data disimpan ke dalam tabel. Setiap tabel terdiri atas baris dan kolom.

Sistem manajemen, software yang memungkinkan data dapatdimasukkan, diubah, diambil kembali (dibaca), dicari, dandihapus recordnya.

Relasi, menunjukkan bahwa data yang ada di dalamnya, datapada suatu tabel dapat berhubungan dengan data yang ada padatabel lainnya.

Ada beberapa database yang umum digunakan sekarang ini, antaralain adalah Oracle, Sybase, MS SQL Server, Interbase, Informix,PostgreSQL,MySQL dan MS Access. Pada proyek yang akan dibuat iniakan menggunakan database MySQL.Setiap jenis database tersebut memiliki kelebihan dan kekuranganmasing-masing. Kemampuan menangani jumlah data yang banyak,kelengkapan system keamanan, kemudahan untuk melakukan backupdata replikasi, dan lain-lain merupakan salah satu tawaran databasesebagai kelebihan yang diberikan.MySQL sebagai database, mempunyai banyak kelebihan, pemakaidatabase ini adalah di lingkungan internet merupakan aspek yangpaling menonjol. MySQL terkenal dengan pengolahan data yang cepatwalaupun data record yang dimasukkan dalam jumlah yang banyak.

TABELData yang disimpan ke dalam database dipisahkan menggunakantabel-tabel. Setiap tabel memiliki data / informasi yang sudahdikelompokkan, disusun dalam setiap baris dan kolom. Data setiapbaris dinamakan record. Setiap record memiliki beberapa macaminformasi, yang dipisahkan oleh kolom yang disebut field.

Page 54: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 4 Perencanaan Database Menggunakan MySQL

49

Untuk lebih jelasnya, perhatikan contoh struktur database dalamsebuah tabel berikut:

Nama Alamat Kota Umur Jabatan

Bani Jl. Manggis 53 Madiun 33 Personalia

Iwan Jl. Pahlawan 32 Malang 31 Operasional

Sumadi Jl. Jalak 44 Surabaya 36 Kepala Bagian Keuangan

Jaenal Jl. Seneru 65 Ponorogo 28 Satpam

Nana Jl. Mawar 98 Ponorogo 27 Administrasi

Adin Jl. Salak 44 Jombang 25 Front office

Tabel di atas adalah data yang ada dalam database terdiri atas 6 barisdan 5 kolom atau field. Setiap baris disebut satu record yang memilikikolom-kolom sendiri yang disebut field. Kolom pada satu barismerupakan data yang berkaitan satu sama lain dan tidak dapatdipisahkan karena milik satu baris.Baris yang terdapat pada posisi paling atas adalah nama kolom ataufield. Setiap kolom mempunyai jenis dan lebar kolom yang sama pula.

TIPE DATATipe data yang dapat disimpan ke dalam database secara garis besardibedakan menjadi : Tipe data Numerik Tipe data Karakter Tipe data Tanggal Tipe data BooleanTipe data numeric adalah semua data bilangan (angka) yang dapatdiperhitungkan bukan angka yang bersifat keterangan. Contohnyaadalah data angka jumlah alat tulis pada sebuah kantor, jumlahbarang yang dijual pada sebuah toko dan lain sebagainya. Jumlahangka ini dapat dijumlahkan / diperhitungkan dengan data angkayang lain, sehingga akan menghasilkan data angka yang benar juga.Contoh data angka namun bukan data angka yang sebenarnya adalah

Page 55: PHP Dan MySQL Studi Kasus Database Karyawan

Perencanaan Database Menggunakan MySQL Bab 4

50

sebuah data yang menyatakan nomor dalam sebuah keterangan yangmenunjuk pada alamat. Tipe data angka ini masih dapat dibedakanlagi menjadi beberapa kelompok yang lebih khusus lagi, yaitu Integer,Float, Single, Double, Currency dan masih ada beberapa jenis lagisesuai dengan database yang digunakan.Tipe data karakter adalah semua data huruf, angka, tanda baca. Tipedata karakter ini juga dapat dikelompokkan lagi menjadi beberapabagian yang lebih spesifik lagi, antara lain Char, String, Text, Memo,dan masih ada beberapa lagi.Tipe data tanggal digunakan untuk mendefinisikan data waktu. Tipedata tanggal ini dibagi lagi menjadi tipe data waktu: Date, DateTime,Time, Timestamp.Tipe data yang terakhir adalah tipe data Boolean, adalah tipe datayang digunakan untuk menyatakan status benar atau salah, seringdigunakan untuk mengakomodasikan data yang pasti bernilai duamacam atau lebih, misalkan 0 adalah salah dan 1 adalah benar. Padabeberapa database digunakan untuk menyatakan true atau false, yesatau no dan beberapa macam lagi sesuai dengan database yangdigunakan.

FIELD KUNCI ATAU INDEXPada setiap baris data record sebaiknya ditentukan sebuah field kuncisebagai pengenal dan pembeda antar baris, sehingga dapatmemudahkan dalam mencari / pembacaan data dan lebih cepat dalammendapatkan informasi yang berada dalam satu tabel. Pengenal barisdalam sebuah baris record tersebut disebut field kunci atau key index.Field kunci ini adalah sebuah kolom khusus dan biasanya isi darikolom ini tidak sama antara data record satu dengan yang lainnya.Biasanya field kunci pada sebuah database adalah nomor baris,namun field kunci juga tidak harus nomor baris, hal ini sesuai dengandatabase yang digunakan. Misalkan field kunci pada databasekaryawan dapat menggunakan Nomor Induk Karyawan (NIK) sebagaifield kunci karena NIK ini pasti tidak ada yang sama antarakaryawan yang satu dengan yang lainnya.

Page 56: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 4 Perencanaan Database Menggunakan MySQL

51

PERSIAPAN MERANCANG DATABASESebenarnya secara sederhana membangun sebuah database adalahpekerjaan mendefinisikan tabel-tabel yang akan dibuat untuk menjadisatu kesatuan database. Setiap tabel yang akan dibuat selaludidefinisikan dan digunakan untuk menyimpan sejumlah informasiberdasarkan kolom-kolom yang ada di dalam tabel. Misalkan databasesiswa, maka pada tabel tersebut akan dibuat beberapa kolom yangakan memisahkan data-data siswa sesuai dengan field yang akandimasukkan. Misalkan field yang akan digunakan pada tabeldatabase siswa adalah nama, alamat, nama orangtua, kelas, jeniskelamin dan lain sebagainya.Hasil perancangan sebuah database tergantung pada pemikiranpembuat database. Jadi kemampuan dan keahlian pembuat databaseuntuk menganalisa situasi dan kondisi dari obyek yang akanmenggunakan database tersebut sangat dibutuhkan. Apabila seorangpembuat database tidak cukup jeli dalam menganalisa permasalahanmaka database yang dihasilkanpun akan jauh dari harapan sebuahsystem manajemen database.Hasil perancangan database ini juga sangat menentukan sekalisystem yang akan dibangun, perancangan harus diawali dengan tahapanalisis system. Ketidakjelian dan kepekaan seorang analis akanmenyebabkan awal dari ketidaksempurnaan database yang dibuat,demikian juga sederhananya sebuah database akan mengakibatkanbanyaknya kekurangan informasi yang harus dikelola oleh aplikasipemakai database tersebut. Dengan demikian penggunaan hasilsystem aplikasi ini akan banyak mengalami hambatan dankelemahan pada data yang dibutuhkan.Untuk dapat merancang dan menyempurnakan database adalahdengan melihat contoh kasus yang dapat mencakup banyak informasidan banyak aplikasi yang akan mengelola database tersebut. Denganmenganalisis contoh kasus tersebut, mungkin akan ditemukankelemahan dan kekurangan dari database tersebut. Setelah systemdatabase dijalankan dan dianalisa maka akan ditemukan beberapakendala dan kekurangan. Kekurangan dan kelemahan database yangtelah ditemukan tersebut kemudian disempurnakan kembali dengan

Page 57: PHP Dan MySQL Studi Kasus Database Karyawan

Perencanaan Database Menggunakan MySQL Bab 4

52

mengubah system database tersebut hingga database tersebutmencapai tingkat sempurna, artinya kelemahan-kelemahan yangditemukan tersebut telah disempurnakan.Dengan cara tesebut seorang perancang database akan dilatih untukjeli dan tanggap terhadap sebuah kasus dan bagaimana cara membuatdatabase sehingga database yang telah dibuat akan menjadi jalanpemecahan sebuah kelemahan dari sebuah system informasidatabase.

CONTOH KASUS PEMBUATAN DATABASEUntuk memperjelas bagaimana merancang dan membuat sebuahdatabase yang sesuai dengan kondisi sebuah system informasi, kitaakan mencoba dengan menggunakan sebuah contoh kasus. Contohkasus yang akan diambil adalah sebuah penanganan database yangsederhana, namun diharapkan nanti akan memberikan gambaranyang cukup jelas bagaimana melakukan perancangan sebuahdatabase.Contoh kasus yang diambil adalah sebuah database sekolah yangdigunakan untuk mengelola nilai ujian siswa.Pekerjaan pertama yang akan dilakukan adalah mendefinisikan tabelyang akan digunakan untuk menyimpan data siswa dan data nilaiujian siswa.Diasumsikan seorang siswa akan mengambil beberapa mata pelajaransekolah, misalkan setiap siswa akan mengambil tiga mata pelajaransetiap semester.Pada contoh kasus ini, kita menggunakan dua buah tabel, yaitu tabelsiswa yang mendefinisikan NAMA siswa dan NIS (nomor induksiswa). Hal ini dimaksudkan untuk menghindari data siswa yangganda. Misalkan ada nama yang sama namun untuk memberikannomor induk siswa pasti tidak sama.Pada tabel ini akan diberikan sebuah index sebagai kunci pembacaandata. Field kunci pada tabel siswa ini adalah field NIS (nomor induksiswa). Dengan menggunakan field kunci NIS ini nanti diharapkantidak akan terjadi pembacaan data yang berulang.

Page 58: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 4 Perencanaan Database Menggunakan MySQL

53

Apabila diperhatikan pada tabel siswa yang ada di atas, terdapat duabuah nama siswa yang sama, kemudian Anda perhatikan pada fieldyang kedua dengan nama NIS, maka pada saat pembacaan data siswatidak dikhawatirkan akan terjadi pembacaan ganda. Pada tabel siswatersebut masih dapat dimodifikasi lagi dengan ditambah field alamatnama orang tua, umur, tempat tanggal lahir dan data yangberhubungan dengan siswa yang lainnya.Tabel yang kedua adalah tabel yang digunakan untuk menampungdata nilai siswa. Data nilai siswa tersebut dapat dibaca menggunakanfield kunci NIM, karena hanya pada field ini yang tidak akanmemiliki data ganda dan dapat dijadikan field kunci.Namun demikian rancangan tabel-tabel ini masih mempunyaikelemahan-kelemahan, khususnya pada tabel nilai, sebab:1. Bagaimana apabila ada siswa yang mengikuti mata pelajaran

yang lebih dari tiga ? Di mana harus menyimpannya ?2. Masih ada kolom yang kosong, karena ada beberapa siswa yang

hanya mengambil kurang dari tiga mata pelajaran.3. Pada saat melakukan query akan mengalami kesulitan, karena

pada saat melakukan pencarian / pembacaan akan melakukanpemeriksaan setiap record berapa mata pelajaran yang diambil,

Tabel SiswaNama NIS *

Dinna 1003Mawar 1004Bani 1005Bani 1006Nana 1007

Tabel Nilai

NIM * MataPelajaran 1 Nilai Mata

Pelajaran 1 Nilai MataPelajaran 1 Nilai

1003 Matematika 8 Bhs. Inggris 6 Olah Raga 71004 Agama 7 Bhs. Daerah 8 Olah Raga 81005 Ketrampilan 61006 Matematika 8 Bhs. Daerah1007 Agama 7 Bhs. Inggris 6 Ketrampilan 9

Page 59: PHP Dan MySQL Studi Kasus Database Karyawan

Perencanaan Database Menggunakan MySQL Bab 4

54

berapa mata pelajaran yang sudah keluar nilainya untuk setiapsiswa.

4. Mengambil informasi dan entri data dilakukan berulang, datanama pelajaran selalu dituliskan berulang-ulang.

5. Data yang dientrikan akan tidak konsisten, karena pada saatmenuliskan data mata pelajaran ada kemungkinan kesalahanketik dan hal ini akan mengakibatkan data tidak valid lagi.

Anda perhatikan pada perubahan perancangan database berikutuntuk memperbaiki kelemahan pada database yang dibuatsebelumnya:Untuk meminimalkan kelemahan pada rancangan database tersebut,maka untuk pembuatan tabel dibuat sebanyak 3 jenis. Yang pertamaadalah tabel siswa, tabel nilai dan tabel mata pelajaran.Karena pada database nilai siswa tersebut ada tiga tabel, maka untukmenggabungkan data yang ada di dalamnya dibutuhkan relasi antartabel. Untuk membuat relasi antar tabel dibutuhkan sebuah fieldyang dijadikan field index.Syarat field yang akan dijadikan index dari sebuah tabel dan akandirelasikan dengan tabel lain dalam satu database adalah: Jenis data pada field harus sama dengan data yang ada di tabel

lain. Data yang ada dalam field index tidak boleh ada yang ganda.Pada kasus ini field index yang digunakan untuk relasi pada tabelsiswa dan nilai adalah field NIM, kemudian untuk field index sebagaifield penghubung / relasi antara tabel nilai dan mata pelajaran adalahfield kode pelajaran. Berikut adalah gambaran dari system databasenilai ujian siswa dengan menggunakan tiga tabel:

Page 60: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 4 Perencanaan Database Menggunakan MySQL

55

Anda perhatikan pada struktur tabel untuk database yang telahdiperbarui tersebut. Pada susunan tabel tersebut lebih efektif danlebih efisien. Hal-hal yang telah dipermudah dengan strukturdatabase baru ini adalah:

Tabel SiswaNama NIS *

Dinna 1003Mawar 1004Bani 1005Bani 1006Nana 1007

Tabel NilaiNIM * Kode pelajaran Nilai

1003 Mp1 81003 Mp6 71003 Mp5 91004 Mp5 71004 Mp3 61005 Mp3 61006 Mp1 81007 Mp4 71007 Mp1 71007 Mp7 9

Kode PelajaranKode

Pelajaran Mata Pelajaran

Mp1 MatematikaMp2 AgamaMp3 KetrampilanMp4 AgamaMp5 Bhs. InggrisMp6 Bhs. DaerahMp7 Olah raga

Page 61: PHP Dan MySQL Studi Kasus Database Karyawan

Perencanaan Database Menggunakan MySQL Bab 4

56

Pada saat entri data dan pencarian (query) pada salah satu datapada tabel tertentu lebih cepat, karena hanya membaca satutabel dengan field yang juga tidak banyak.

Siswa dapat mengambil mata pelajaran lebih dari dua. Entri data nilai ujian siswa dapat dimasukkan dengan lebih

cepat, karena pada waktu mengakses tabel nilai untukmenambahkan data tidak harus mengakses field nama siswapada tabel siswa dan juga field mata pelajaran pada tabel matapelajaran.

Perhatikan pada kode siswa dengan nomor induk siswa 1003,pada daftar tabel nilai terdapat tiga buah, artinya siswa dengannomor induk siswa 1003 telah mengambil mata pelajaransebanyak tiga buah. Apabila siswa tersebut akan mengambilmata pelajaran lebih dari tigapun tidak mengalamipermasalahan. Pada saat proses query jumlah pelajaran yangdiambil oleh siswa dengan nomor induk 1003 pun lebih mudah.

RELASIJika diperhatikan pada contoh kasus di atas, maka ditemukan sebuahrelasi antara satu tabel dengan tabel yang lain. Relasi yang adaadalah hubungan atau relasi antar entri data pada tiap-tiap tabel.Pada setiap tabel data akan diwakili dengan sebuah field yangdijadikan field index untuk merelasikan dengan tabel yang lain.Relasi yang pertama adalah antara tabel siswa dengan tabel nilai, disini field yang digunakan untuk merelasikan adalah field NIS. Padatabel siswa dan tabel nilai sama-sama mempunyai field dengan dataentri NIS dan tidak mempunyai data yang diulang-ulang.Pada setiap siswa dapat mengambil mata pelajaran sesuai denganjumlah yang ditentukan oleh system. Data tersebut kemudian akandisimpan pada tabel nilai. Tabel nilai ini akan menampung NIS siswayang mengambil mata pelajaran, data kode mata pelajaran dan datanilai yang dapat dimasukkan dari system.Dari tabel nilai ini akan dapat diperoleh satu NIS siswa dapat tercatatpada lebih dari satu baris atau entri, demikian juga dengan kode matapelajaran dapat tercatat lebih dari satu entri data. Dengan contoh

Page 62: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 4 Perencanaan Database Menggunakan MySQL

57

kasus di atas dapat dilihat sebuah gambaran bahwa entri siswaterelasi dengan banyak entri mata pelajaran. Relasi yang terjadi akandisimpan ke dalam tabel nilai berupa NIS dan mata pelajaran.Kemudian untuk field nilai menjadi sebuah keterangan dalam tabelnilai tersebut.Sebagai gambaran hubungan data tabel dalam database tersebutdapat dilihat seperti pada diagram berikut:

Pada diagram di atas dapat diambil penjelasan bahwa untuk tabelSISWA dan tabel NILAI direlasikan dengan field NIS, kemudianuntuk tabel NILAI dengan tabel MATA PELAJARAN direlasikandengan field KODE.

SISWA NILAI MATAPELAJARAN

NISNAMA NIS = NIS

NISKODENILAI

KODE = KODEKODEMATA -

PELAJARAN

Page 63: PHP Dan MySQL Studi Kasus Database Karyawan

59

Setelah kita memahami tentang database dan system dalam databasetersebut pada bab 4, maka langkah berikutnya dalam membangunsebuah database karyawan yang menangani tentang cuti online dandatabase kehadiran / absensi karyawan adalah merancang sebuahdatabase yang efektif dan efisien. Dengan membangun sebuahstruktur database yang baik diharapkan semua kelemahan padasebuah system dapat diminimalkan.Pada system database karyawan online ini akan dibutuhkan beberapadatabase, antara lain : Data user admin dan password. Data karyawan. Data cuti karyawan. Hak akses karyawan. Jumlah cuti karyawan.Pada bab ini juga diuraikan tentang tabel-tabel yang digunakan danbagaimana membuat dan mengatur relasi antar tabel sehingga akanmenjadi sebuah system yang baik.

Page 64: PHP Dan MySQL Studi Kasus Database Karyawan

Mempersiapkan Database Bab 5

60

MEMBUAT DATABASEUntuk kasus database karyawan ini hanya dibutuhkan sebuahdatabase saja, dengan nama karyawan. Untuk membuat databasetersebut menggunakan sebuah script PHP seperti yang ada di bawahini:

<?// script untuk membuat database karyawan$sambung = mysql_connect("localhost", "mysql_user","mysql_password")or exit("Could not connect");$buat_db= mysql_create_db("karyawan");

if ($buat_db) {print ("Database karyawan telah dibuat\n");

} else {printf ("Database gagal dibuat: %s\n", mysql_error ());

}?>

Penjelasan Script :Perintah script yang berfungsi untuk membuat sebuah databaseadalah mysql_create_db (“nama_database”);.Namun sebelum fungsi untuk membuat database dituliskan, terlebihdahulu program harus terhubung pada MySQL. Fungsi yangdigunakan untuk koneksi ke MySQL adalah mysql_connect (“host”,“user”, “password”). Host pada MySQL secara umum adalah localhost,kemudian untuk user adalah root dan password diisi dengan passworddari masing-masing user.

DATABASE UNTUK USERNAME DAN PASSWORDADMINISTRATOR

Database ini digunakan untuk menyimpan username danpassword administrator. Untuk menangani database ini cukupdibuat sebuah tabel dengan tiga field, yaitu id sebagai index,

Page 65: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 5 Mempersiapkan Database

61

user_name dan password. Tabel yang dibuat diberi nama admindan field-fieldnya adalah sebagai berikut :

Field Tipe Panjang KeteranganId Int 2 Primary keyUser varchar 10 -Password Varchar 10 -

Pada kasus di atas, untuk field id mempunyai tipe Int yaitu jenisangka dengan panjang 2 karakter dan mempunyai atribut primarykey auto_increament. Kemudian untuk field user dan passwordmenggunakan tipe varchar dengan panjang 10 karakter.Script PHP yang digunakan untuk membuat tabel tersebutadalah:

<?// membuat table adminCREATE TABLE admin (

id int(3) NOT NULL auto_increment,user varchar(10) NOT NULL default '',password varchar(10) NOT NULL default '',PRIMARY KEY (id)

) TYPE=MyISAM;?>

Penjelasan script:Perintah yang digunakan untuk membuat tabel adalah denganfungsi CREATE TABLE nama_tabel (field1, field2, .. ). Pada saatmenentukan nama tabel tidak diijinkan dengan adanya spasi.Field yang pertama adalah id dengan tipe int (integer / angka)dengan panjang 2 karakter dan atribut auto_increment artinyanilai yang akan dituliskan pada field id ini akan angka yangdimulai dengan angka 1 dan bertambah satu setiap penambahanentri baru. Kemudian untuk field user dan password mempunyaitipe varchar dengan panjang 10 karakter.

Page 66: PHP Dan MySQL Studi Kasus Database Karyawan

Mempersiapkan Database Bab 5

62

DATABASE UNTUK MENYIMPAN DATA HAK AKSESKARYAWAN

Kriteria hak akses pada setiap karyawan diharapkan berbeda-beda, misalkan hak akses karyawan sebagai atasan diharapkanlebih luas dibandingkan dengan hak akses karyawan biasa. Halini dilakukan supaya ada pembedaan fungsi dan tugas karyawansesuai dengan kelompok hak akses masing-masing karyawan.Misalkan pada karyawan biasa hanya diberi hak untuk melihatdata pribadi, halaman pengajuan cuti dan halaman persetujuancuti untuk melihat hasil pengajuan cuti yang telah diajukankepada atasan. Kemudian hak atasan dapat melihat data seluruhkaryawan dan memberikan persetujuan cuti kepada karyawanyang mengajukan cuti.Untuk membuat database hak akses ini dibuatkan sebuah tabeldengan nama hak_akses dan menggunakan dua buah field yaituNIK dan kode_akses. Berikut keterangan lengkap tentangdatabase hak akses tersebut:

Field Tipe Panjang KeteranganNIK varchar 8 -Kode_akses enum - ‘0’,’1’,’11’,’2’

Field NIK menggunakan tipe varchar dengan panjang 8 karakter.Kemudian untuk field kode_akses sengaja menggunakan tipeenum, artinya value atau nilai dari field ini sudah diset atauditentukan pada saat tabel dibuat. Nilai dari field kode akses inisudah ditentukan yaitu 0 artinya digunakan untuk karyawanbiasa, 1 adalah kode hak akses yang diberikan kepada karyawansebagai atasan yang memberikan persetujuan cuti, 11 adalah kodeakses yang diberikan kepada karyawan yang menjabat sebagaiwakil atasan yang bertugas memberikan keputusan cuti apabilaatasan sedang cuti atau tidak aktif, kemudian untuk 2 adalahkode akses yang diberikan kepada kepala bagian yang berfungsiuntuk mengatur data karyawan yang menjadi bawahannya.Script yang digunakan untuk membuat tabel tersebut adalahsebagai berikut:

Page 67: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 5 Mempersiapkan Database

63

<?CREATE TABLE hak_akses (

nik varchar(8) NOT NULL default '',kode_akses enum('0','1','11','2') NOT NULL default '0'

);?>

Penjelasan script:Script di atas berfungsi untuk membuat sebuah tabel dengannama hak_akses dengan field sebanyak 2 buah yaitu NIK dengantipe varchar, panjang 8 karakter, value defaultnya adalah kosong,kemudian untuk field kedua adalah kode_akses dengan tipe enumnilai pilihannya adalah 0, 1, 11, 2 dan nilai defaultnya adalah 0.

DATABASE KARYAWAN

Database yang harus dibuat berikutnya adalah databasekaryawan. Database karyawan ini nanti digunakan untukmenampung seluruh informasi yang berhubungan denganidentitas karyawan. Misalkan : nama, NIK, alamat, jabatan,golongan, NIK atasan, NIK kepala bagian, status dan passwordkaryawan. Berikut keterangan lengkap tentang tabel untukdatabase karyawan:

Field Tipe Panjang KeteranganId Int 2 Auto_increment,

pramary keyNama Varchar 50 -Nik Varchar 10 -Tingkat Varchar 10 -Jabatan Varchar 50 -Posisi Varchar 50 -Nik_atasan Varchar 10 -Nik_support Varchar 10 -

Page 68: PHP Dan MySQL Studi Kasus Database Karyawan

Mempersiapkan Database Bab 5

64

Field Tipe Panjang KeteranganStatus Enum ‘0’,’1’ -Password Varchar 8 -

Field id mempunyai tipe int (integer) dan memiliki atributauto_increment, primary key, maksudnya adalah value yang adadalam field tersebut akan ditambah satu apabila terdapat dataentri baru yang dimasukkan. Jadi data pada field id tidak diisikanmelalui form. Pada sistem yang akan dibuat, field id akandigunakan sebagai index pembacaan data karyawan yang akandiakses oleh atasan dan support.Field NIK yang ada dalam tabel karyawan tersebut digunakanuntuk menghubungkan dengan data yang ada dalam tabelhak_akses untuk memberikan hak akses terhadap karyawandengan NIK yang sama tersebut.Field status sengaja dibuat dengan tipe field enum, maksudnyadata yang diisikan nanti akan dibatasi dengan data yang sudahditetapkan oleh sistem, ketentuan data yang akan diisikan padafield status adalah 0 dan 1. Arti dari nilai tersebut adalah sistemakan membaca apabila value atau nilai dari field status pada tiap-tiap baris tersebut 0 maka karyawan tersebut mempunyai statussedang aktif, kemudian apabila nilai data dari field statustersebut 1 maka akan diberikan keterangan sedang cuti.

DATABASE JUMLAH CUTI

Database cuti ini digunakan untuk menyimpan jumlah cuti setiapkaryawan yang masih tersisa pada setiap tahun.Database yang diberi nama cuti ini mempunyai empat field yaituid, nik, th2004, th2005, th2006 dan cuti_besar. Selain field nik,masing-masing field akan digunakan untuk menyimpan datajumlah cuti selama setahun yang sudah ditentukan oleh sistem.Namun untuk field cuti_besar digunakan untuk menyimpan datacuti besar. Tabel cuti ini akan direlasikan dengan tabel karyawanmenggunakan data yang ada pada field nik sebagai field kuncinya.

Page 69: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 5 Mempersiapkan Database

65

Pada proyek ini diasumsikan akan digunakan oleh sistem selamatiga tahun dan dapat ditambah apabila dikehendaki olehadministrator. Setiap tahun diberikan jumlah cuti sebanyak 12hari yang dapat diambil oleh karyawan. Selain cuti tahunankaryawan juga diberikan cuti khusus yang disebut cuti besar.Pada aplikasinya karyawan dapat mengambil cuti maksimalsebanyak 12 selama setahun dan juga dapat mengambil cuti besardengan jumlah 45 hari yang harus diambil dalam sekalipengajuan cuti besar.Berikut adalah keterangan detail tentang tabel cuti sebagaitempat untuk menyimpan data jumlah cuti:

Field Tipe Panjang KeteranganId int 3 Auto_incrementNIK varchar 10 -Th2004 int 12 -Th2005 int 12 -Th2006 int 12 -Besar int 45 -

Data yang dalam field NIK pada tabel cuti tersebut digunakansebagai kunci relasi dengan tabel karyawan dan tabel lama_cuti.Kemudian untuk field th2004, th2005, th2006 dan besarmenggunakan tipe int (integer) karena digunakan untukmenyimpan data dengan tipe angka.Berikut script yang digunakan untuk membuat tabel cuti:

<?CREATE TABLE cuti (

id int(4) NOT NULL auto_increment,nik varchar(2) NOT NULL default '',besar int(2) NOT NULL default '45',th2004 int(2) NOT NULL default '12',th2005 int(2) NOT NULL default '12',th2006 int(2) NOT NULL default '12',

Page 70: PHP Dan MySQL Studi Kasus Database Karyawan

Mempersiapkan Database Bab 5

66

PRIMARY KEY (id)) TYPE=MyISAM;?>

Penjelasan script :Bila diperhatikan pada script di atas pada pembuatan tabeldengan field besar sampai dengan field th2006 menggunakan tipeint dengan panjang 2 karakter dan mempunyai nilai default,artinya pada saat tabel dibuat value atau nilai dari tabel tersebutsudah dimasukkan sesuai dengan nilai yang ada dalam nilaidefaultnya.

DATABASE LAMA CUTI

Database lama cuti digunakan untuk menampung data karyawanyang mengajukan cuti. Field yang akan dibuatpun agak banyak,karena akan digunakan untuk menampung beberapa datamengenai cuti yang diambil karyawan. Berikut adalah daftar fieldyang ada dalam tabel cuti :

Field Tipe Panjang KeteranganId int 4 auto_incrementNama varchar 200 -Nik varchar 10 -nik_atasan varchar 10 -nik_support varchar 10 -Mulai varchar 20 -Masuk varchar 20 -Lama char 2 -Jenis varchar 20 -Alamat varchar 255 -Alasan varchar 255 -Catatan varchar 255 -

Page 71: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 5 Mempersiapkan Database

67

Field Tipe Panjang KeteranganTanggal varchar 20 -Status varchar 20 -Aktivasi varchar 20 -

Field nik digunakan untuk menghubungkan tabel cuti dengantabel karyawan. Pada field tanggal mengapa tidak menggunakantipe date, namun menggunakan tipe varchar ? Dengan kasusdemikian Anda akan diajak untuk melihat keunikan dari scriptPHP, walaupun data tanggal disimpan dalam tipe teks namunmasih dapat diolah oleh PHP menjadi informasi dalam bentuktanggal.

Page 72: PHP Dan MySQL Studi Kasus Database Karyawan

69

Dalam membangun sebuah web dengan skala besar, umumnya akanmembutuhkan banyak file script pendukung. Script pendukungtersebut akan digunakan oleh file script PHP yang lain. Scriptpendukung ini biasanya mempunyai kegunaan khusus dan seringdibutuhkan dalam sebuah sistem web. Contoh kegunaan khusus inimisalnya script yang digunakan untuk mengakses database, scriptyang berfungsi sebagai otentikasi, script yang berfungsi untukmendeklarasikan sebuah variabel dan lain sebagainya.

SCRIPT UNTUK MENGAKSES DATABASEScript pendukung yang pertama adalah script yang berfungsi untukmengakses database. Script ini akan digunakan oleh file-file PHP lainyang akan mengakses data dalam database MySQL. Script ini akandisimpan pada sebuah file dengan nama sambung.php yang isinyaadalah:

<?php// sambung.php// script yang digunakan untuk mengakses database.

Page 73: PHP Dan MySQL Studi Kasus Database Karyawan

Script Pendukung Bab 6

70

$host="localhost";$userdb="root";$passdb="";$namadb="karyawan";$sambung=mysql_connect($host,$userdb,$passdb);mysql_select_db($namadb,$sambung);?>

Penjelasan script:Pada script tersebut terdapat banyak variabel, antara lain variabel$host mempunyai nilai “localhost” adalah nama server yangdigunakan oleh database. Variabel $userdb adalah variabel yangmemiliki nilai “root” yaitu user yang mempunyai hak akses terhadapdatabase. Variabel $passdb adalah variabel yang mempunyai nilaikosong, pada variabel ini akan diberi nilai password yang digunakanuntuk mengakses database apabila akses database diberikanpassword. Variabel $namadb adalah variabel yang digunakan untukmenyimpan nilai “karyawan” yaitu nama dari database yang akandiakses. Perintah yang digunakan untuk mengakses database adalah:

$sambung=mysql_connect($host,$userdb,$passdb);

Kemudian untuk memilih database yang akan diakses adalah denganmenggunakan fungsi :

mysql_select_db($namadb,$sambung);

Dengan menggunakan file tersebut, maka file PHP lain apabila akanmengakses database tidak perlu lagi menulis script tersebut berulang-ulang, namun dengan memanggil file tersebut database dapat diaksesdengan lancar.

SCRIPT UNTUK LOGINScript untuk login ini berguna untuk proses otentikasi danberhubungan dengan script otentikasi. Kegunaan dari script ini

Page 74: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 6 Script Pendukung

71

adalah untuk menampilkan formulir login bagi anggota. Berikut scriptyang digunakan untuk login karyawan:

<html><head><title> Login karyawan</title></head><body><table border="0" width="100%" cellpadding="2" id="table3"><form method="POST" action="karyawan.php"><tr><td width="116" align="right"><p style="margin-right: 10px; margin-top: 15px">NIK</td><td><p style="margin-top: 15px"><input type="text" name="nik" size="15" style="color: #000080; font-family:Arial; font-size: 12pt"></td></tr><tr><td width="116" align="right"><p style="margin-right: 10px">Password</td><td><input type="password" name="password" size="15" style="color: #000080;font-family: Arial; font-size: 12pt"></td></tr><tr><td width="116"><p style="margin-bottom: 15px">&nbsp;</td><td><p style="margin-bottom: 15px"><input type="submit" value=" L O G I N " name="login" style="font-family:arial; color: #000080; font-weight: bold"></td>

Page 75: PHP Dan MySQL Studi Kasus Database Karyawan

Script Pendukung Bab 6

72

</tr></form></table></body></html>

SCRIPT UNTUK OTENTIKASIScript otentikasi ini selalu digunakan pada semua halamanadministrator atau halaman anggota dengan akses terbatas anggotatersebut. Pada proyek pembuatan database cuti online ini, filetersebut diberi nama karyawan.php dengan isi script PHP berikut :

<?session_start();include"sambung.php";$data=mysql_query("select * from data_karyawan where nik='$nik'");$user=mysql_fetch_array($data);$data2=mysql_query("select * from data_karyawan wherenik='$user[nik_atasan]'");$user2=mysql_fetch_array($data2);if($password=="$user[password]"){session_register("nik");session_register("password");if($user[hak_akses]=="0"||$user[hak_akses]=="22"||$user[hak_akses]=="11"){if($user2[status]!=="0"){header("Location:./data_karyawan2.php");}else{header("Location:./detail_karyawan.php");}}elseif($user[hak_akses]=="1"||$user[hak_akses]=="2"){header("Location:./data_karyawan.php");

Page 76: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 6 Script Pendukung

73

}else{header("Location:./keluar.php");}}else{echo"<HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY>Maaf, Password yang Anda masukkan salah, <br>Klik di <a href=\”index.php\”> sini</a> untuk mengulangi.</BODY></HTML>“;}?>

Penjelasan script:Script di atas adalah bentuk script lengkap yang digunakan untukmemeriksa kebenaran username dan password yang diisikan olehkaryawan, kemudian apabila data yang diisikan sudah benar makaakan dibuat data sesi dan akses database data_karyawan dandata_cuti. Script tersebut akan diuraikan berdasarkan fungsinyadalam sebuah sistem. Fungsi yang pertama adalah:session_start();

Fungsi ini digunakan untuk mengawali dan mendeklarasikan bahwapada file ini mengandung data sesi, sesi telah dibahas pada babsebelumnya. Fungsi session_start() tidak mempunyai atribut apapun.File ini juga akan mengakses database karena pada saat melakukanpemeriksaan password yang diisikan dengan data password karyawanyang ada dalam database dibutuhkan koneksi dengan database.Untuk membaca database ini tentunya script harus terhubung dengan

Page 77: PHP Dan MySQL Studi Kasus Database Karyawan

Script Pendukung Bab 6

74

database. Untuk koneksi database script ini tidak perlu menulisfungsi koneksi database lagi karena sebelumnya sudah dibuat filependukung yang digunakan untuk mengakses database dengan namasambung.php. Berikutnya Anda tinggal memanggil file tersebutdengan menggunkan fungsi include seperti pada script di bawah ini:include"sambung.php";

Yang perlu diperhatikan dalam memanggil file dalam file lain adalahpath atau lokasi dari file yang dipanggil harus benar-benar tepat.Berikutnya adalah membaca data yang ada dalam database, padascript ini akan membaca dua kali database yang sama, yaitu databasekaryawan. Pada pembacaan yang pertama adalah berdasarkandengan nik karyawan dan pembacaan yang kedua berdasarkandengan nik atasan dari karyawan tersebut. Berikut adalah script yangdigunakan dalam program tersebut:$data=mysql_query("select * from data_karyawan where nik='$nik'");$user=mysql_fetch_array($data);$data2=mysql_query("select * from data_karyawan wherenik='$user[nik_atasan]'");$user2=mysql_fetch_array($data2);

Fungsi yang digunakan untuk membaca data adalah:mysql_query("select * from data_karyawan where nik='$nik'");

Danmysql_query("select * from data_karyawan where nik='$user[nik_atasan]'");

Kemudian hasil pembacaan database oleh script di atas akandisimpan ke dalam variabel user dan user2.Fungsi utama dalam script di atas adalah pada fungsi if yang bergunauntuk mencocokkan data password dari formulir dan data passworddari pembacaan database karyawan, yaitu pada bagian script :if($password=="$user[password]"){

Kemudian pada script di atas diikuti dengan fungsi berikutnya adalahfungsi session atau sesi. Fungsi tersebut adalah:

Page 78: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 6 Script Pendukung

75

session_register("nik");session_register("password");

Fungsi di atas digunakan untuk mendaftarkan variabel nik danpassword ke dalam data sesi. Dengan demikian nilai dari variabel nikdan password akan selalu terbawa ke halaman yang dibukaberikutnya selama sesi belum dihapus atau sebelum browser ditutup.Pada langkah berikutnya script akan menganalisa hak akses darikaryawan yang telah masuk dengan menggunakan fungsi if sepertipada script di bawah ini :if($user[hak_akses]=="0"||$user[hak_akses]=="22"||$user[hak_akses]=="11"){if($user2[status]!=="0"){header("Location:./data_karyawan2.php");}else{header("Location:./detail_karyawan.php");}}elseif($user[hak_akses]=="1"||$user[hak_akses]=="2"){header("Location:./data_karyawan.php");}else{header("Location:./keluar.php");}

Kode akses setiap karyawan akan dibedakan dengan menggunakankode angka yaitu apabila karyawan mempunyai kode akses 1, makakaryawan tersebut mempunyai hak akses sebagai atasan dan akandiarahkan untuk menuju file data_karyawan.php. File ini akanmenampilkan data karyawan yang menjadi bawahannya dankaryawan yang sedang atau mengajukan cuti dari karyawan yangsedang login.Kode akses yang kedua adalah menggunakan angka 0, artinyakaryawan yang mempunyai hak akses biasa dan hanya dapat melihatdata personal dirinya saja. Karyawan ini hanya dapat mengajukancuti dan melihat persetujuan cuti yang telah diajukan kepadaatasannya.

Page 79: PHP Dan MySQL Studi Kasus Database Karyawan

Script Pendukung Bab 6

76

Kode akses selanjutnya adalah angka 2, artinya karyawan yangmemiliki hak akses sebagai support atau kepala bagian. Karyawan inimempunyai akses pada data karyawan dibawahnya dan tidakmempunyai hak untuk memberikan keputusan diterima atauditolaknya sebuah pengajuan cuti.Kemudian untuk hak ases dengan menggunakan kode angka 11adalah karyawan yang mempunyai status sebagai wakil atasan.Fungsi wakil atasan dalam program ini adalah karyawan yang dapatmemberikan keputusan diterima atau tidak pengajuan cuti yangdiajukan oleh karyawan bawahannya apabila atasan sedangberhalangan atau sedang cuti.Kode akses 22 adalah hak akses yang diberikan kepada wakil kepalabagian. Tugas dari wakil kepala bagian adalah memberikan informasitentang karyawan yang ada di bawahnya apabila kepala bagiansedang tidak aktif atau cuti.

SCRIPT UNTUK MEMERIKSA KEBERADAANSESI

Pada setiap program yang menggunakan fasilitas akses terbatasselalu menggunakan data sementara dan global yaitu data sesi. Datasesi ini selalu ada dalam sistem selama tidak dihapus oleh programtersebut. Dalam program ini juga memuat sebuah script yangberfungsi memeriksa keberadaan data sesi.Setiap file yang akan diakses oleh karyawan selalu membutuhkandata sesi yang dibentuk pada saat karyawan tersebut login, kemudianakan selalu dibawa pada setiap menelusuri halaman member.Karyawan yang mengunjungi halaman tertentu dan tidak melaluilogin berarti tidak mempunyai data sesi tersebut sebagai syarat untukmengakses halaman tersebut.Pada halaman tesebut akan diberikan sebuah script yang berfungsiuntuk memeriksa keberadaan data sesi ini, apabila data sesi tidakada maka akan dialihkan ke file yang memuat keterangan kesalahan.Script yang berfungsi untuk memeriksa data sesi ini akan disimpan

Page 80: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 6 Script Pendukung

77

ke dalam sebuah file yang diberi nama cek.php. Pada setiap file yangmembutuhkan konfirmasi data sesi dapat memanggil file ini denganperintah include. Berikut script yang digunakan untuk memeriksadata sesi:

<?//cek.php

session_start();if(!session_is_registered("password")){header(“location:./error.php”);exit;}?>

Penjelasan script:Apabila Anda perhatikan pada script di atas ada bagian yang sangatpenting dan berfungsi untuk memeriksa keberadaan data sesi yaitu:

session_start();if(!session_is_registered("password")){

Pada bagian baris pertama adalah session_start() digunakan programuntuk mendefinisikan bahwa pada script tersebut memiliki data sesidan pada baris kedua yaitu session_is_registered yang berfungsiuntuk memeriksa keberadaan data sesi dengan nama password.Apabila data sesi password tidak ditemukan maka program akanmengalihkan pengunjung untuk membuka file error.php yangmenyatakan informasi kesalahan dengan menggunakan fungsiheader.Fungsi exit; pada script di atas berfungsi untuk menghentikanpembacaan script dibawahnya agar perintah-perintah yang tidaksesuai syarat data sesi akan diabaikan.

Page 81: PHP Dan MySQL Studi Kasus Database Karyawan

79

Langkah berikutnya adalah menyusun file-file yang digunakan untukmembuat program pengolah database karyawan. File-file ini dibuatsesuai dengan fungsi dalam program ini.

SCRIPT UNTUK MENGAKSES DATABASEUntuk koneksi dengan database dalam proyek ini menggunakandatabase MySQL diperlukan sebuah script yang sifatnya global yangberfungsi untuk mengakses database tersebut. Script tersebut akandisimpan ke dalam sebuah file dan nantinya akan dapat dipanggiloleh file lain yang membutuhkan koneksi dengan database. Denganmenggunakan file koneksi ini maka setiap script yang membutuhkanhubungan dengan database tidak akan membuat script baru denganfungsi untuk koneksi ke database secara berulang-ulang. Berikut iniadalah script yang digunakan untuk koneksi ke database dandisimpan ke dalam sebuah file dengan nama sambung.php.

<?php// sambung.php// script yang berfungsi untuk koneksi dengan database MySQL.

$host="localhost";$userdb="root";

Page 82: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

80

$passdb="";$namadb="karyawan";$sambung=mysql_connect($host,$userdb,$passdb);mysql_select_db($namadb,$sambung);?>

Penjelasan script:Pada dasarnya script ini mempunyai dua bagian fungsi pokok.Perhatikan pada bagian berikut:

$sambung=mysql_connect($host,$userdb,$passdb);mysql_select_db($namadb,$sambung);

Pada fungsi yang pertama adalah :$sambung=mysql_connect($host,$userdb,$passdb);, fungsi inidigunakan untuk menghubungkan program dengan database MySQLdengan menggunakan parameter yaitu server host, username danpassword. Server yang digunakan biasanya adalah localhost,username dan password diisi sesuai dengan username dan passwordpada saat daftar pada server MySQL. Script berikutnya adalahmysql_select_db($namadb, $sambung);. Script ini berfungsi untukmemilih database yang akan diakses. $namadb adalah nama daridatabase yang akan diakses, kemudian untuk $sambung adalahvariabel yang mempunyai nilai hasil koneksi database yangmenggunakan fungsi mysql_connect.

SCRIPT UNTUK MEMBUAT DATABASEUntuk membuat media penyimpan data dalam MySQL, yang pertamaharus dilakukan adalah membuat sebuah database terlebih dahulu.Setelah database dibuat, langkah berikutnya adalah membuat sebuahtabel yang berisikan field-field sesuai dengan kebutuhanpenyimpanan data.Fungsi yang digunakan untuk membuat database ini adalah:

Page 83: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

81

Mysql_Create_db(database);

Database adalah string yang berisikan kata yang akan menjadi namadari database.Berikut ini adalah contoh script yang berfungsi untuk membuatdatabase :

<?// Contoh program untuk membuat database.// buat_database.php

$sambung=mysql_connect("localhost","madcoms","madiun");if($sambung){echo"Koneksi berhasil dilakukan.";}else{echo"Koneksi gagal dilakukan.";}

$buat_database=mysql_create_db("karyawan");if($buat_database){echo"Database dataku telah sukses dibuat.";}else{echo"<br><br>Database dataku gagal dibuat.";}?>

Penjelasan script:Pada script di atas mengandung beberapa fungsi yang berhubungandengan koneksi database dan membuat database.Untuk membuat database, langkah yang pertama adalah melakukankoneksi terlebih dahulu dengan database menggunakan perintahmysql_connect(), berikut ini adalah perintah untuk melakukankoneksi dengan database yang ada dalam script di atas:

Page 84: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

82

$sambung=mysql_connect("localhost","madcoms","madiun");

Pada script koneksi di atas server yang diakses adalah localhost,kemudian untuk username-nya adalah madcoms dan password-nyaadalah madiun.Fungsi yang kedua adalah perintah untuk membuat sebuah database.Bentuk scritptnya adalah mysql_create_db();. Pada script di atasbagian yang berfungsi untuk membuat database adalah:

$buat_database=mysql_create_db("karyawan");

Pada script di atas karyawan adalah nama database yang akan dibuatmenggunakan fungsi mysql_create_db();.Jalankan kode program di atas pada browser, maka database dengannama karyawan akan dibuat dan menampilkan informasi bahwakoneksi dengan mysql berhasil dan database karyawan telah suksesdibuat seperti pada gambar berikut:

Gambar 7.1 Membuat database.

SCRIPT UNTUK MEMBUAT TABELTabel dalam sebuah database adalah media untuk menyimpan data.Data yang ada pada tabel ini tiap-tiap barisnya memiliki beberapa

Page 85: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

83

informasi yang disimpan pada masing-masing tabel. Untuk sebuahproyek pembuatan database, setelah dibuat sebuah databasekemudian harus menyediakan sebuah tabel. Tabel yang ada dalamdatabase ini tidak ada begitu saja, namun harus dibuat denganketentuan sesuai dengan kondisi atau kasus sebuah program. Padaproyek administrasi Cuti karyawan online ini membutuhkan beberapatabel yang digunakan untuk menyimpan data-data tertentu.

TABEL KARYAWAN

Yang pertama dibutuhkan tabel untuk menyimpan data karyawandengan nama tabelnya adalah karyawan. Berikut script yangdigunakan untuk membuat tabel karyawan:

<?// buat_tabel_karyawan.php// membuat tabel karyawanInclude”sambung.php”;$buat_tabel=CREATE TABLE karyawan (

id int(2) NOT NULL auto_increment,nama varchar(50) NOT NULL default '',nik varchar(10) NOT NULL default '',tingkat varchar(10) NOT NULL default '',jabatan varchar(50) NOT NULL default '',posisi varchar(50) NOT NULL default '',nik_atasan varchar(10) NOT NULL default '',nik_support varchar(10) NOT NULL default '',status enum('0','1') NOT NULL default '0',password varchar(8) NOT NULL default '',PRIMARY KEY (id)

) TYPE=MyISAM;$hasil=mysql_query($buat_tabel);?>

Page 86: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

84

Penjelasan script :Baris pertama pada script di atas adalah perintah untukmemanggil file sambung.php, yang mana dalam file tersebutterdapat script yang berfungsi untuk melakukan koneksi dengandatabase MySQL. Perintah untuk memanggil file tersebut adalahmenggunakan fungsi include.Fungsi berikutnya adalah CREATE_TABLE();. Perintah inidigunakan untuk membuat sebuah tabel. Pada script ini akandibuat sebuah tabel dengan nama karyawan dengan field-fieldantara lain: id, nama, nik, tingkat, jabatan, posisi, nik_atasan,nik_support, status, password.Pada setiap field memiliki atribut sendiri-sendiri sesuai denganjenis data yang akan dimasukkan selanjutnya. Atribut varchardigunakan pada field yang akan digunakan untuk data tipe teksdengan panjang kurang atau sama dengan 255 karakter. Atributint diberikan pada field yang akan digunakan untuk menampungdata tipe integer atau angka. Enum adalah atribut yang diberikankepada field yang akan digunakan untuk menampung data yangsudah ditentukan sebelumnya, pada kasus ini adalah data 1 dan 0.Kemudian pada field id juga memiliki atribut tambahan, yaituauto_increment dan PRIMARY KEY, artinya adalah data yangakan diisikan ke dalam field ini data angka berurutan dan secaraotomatis ditambahkan apabila ada masukkan baru. Selain itu datapada field ini tidak ada data yang kembar.Untuk membuat tabel tersebut dengan cara menjalankan filebuat_tabel_karyawan.php menggunakan bantuan browser. Setelahdijalankan maka tabel karyawan secara otomatis akan dibuatdalam database karyawan tersebut. Berikut apabila tabel tersebutditampilkan dengan menggunakan SQL dalam browser:

Page 87: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

85

Gambar 7.2 Tampilan struktur tabel karyawan

TABEL HAK AKSES

Tabel yang perlu disiapkan berikutnya adalah tabel hak_aksesyang digunakan untuk menyimpan data hak akses pada tiap-tiapkaryawan. Berikut adalah script untuk membuat tabel hak_akses:

<?// buat_tabel_hakakses.php// membuat tabel hak_aksesInclude”sambung.php”;CREATE TABLE hak_akses (

nik varchar(8) NOT NULL default '',kode_akses enum('0','1','11','2') NOT NULL default '0'

) TYPE=MyISAM;?>

Page 88: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

86

Penjelasan Script :Pada script untuk membuat tabel hak_akses di atas masihmenggunakan file koneksi yang sama, yaitu memanggil filesambung.php menggunakan fungsi include. Berikutnya untukmembuat tabel juga menggunakan fungsi create_table() denganfield yang dibuat adalah nik memakai atribut varchar panjangkarakter 10 dan field hak_akses menggunakan atribut enum dandiatur pilihan yang sudah ditentukan yaitu 0, 1, 11, 2. Padapilihan yang telah ditentukan ini mempunyai arti bahwa hakakses 0 adalah hak akses biasa yang akan diberikan kepadakaryawan biasa, kemudian kode akses 1 yaitu hak akses sebagaiatasan akan diberikan kepada karyawan yang menjadi atasan danhak akses 11 adalah kode akses yang diberikan kepada karyawanyang mempunyai jabatan wakil atasan. Pada karyawan yangmempunyai jabatan sebagai support atau kepala bagian akandiberikan kode hak akses 2.Berikut adalah tampilan tabel hak akses apabila diaksesmenggunakan SQL pada browser :

Page 89: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

87

Gambar 7.3 Tampilan tabel hak_akses

TABEL DATA CUTI

Untuk menampung data-data karyawan yang sedang cuti dandata-data yang berhubungan dengan cuti karyawan, maka dibuatsebuah tabel khusus untuk menampung data tersebut. Tabel inidiberi nama data_cuti.Berikut adalah script yang digunakan untuk membuat tabeldata_cuti:

<?// membuat tabel data_cutiInclude”sambung.php”;CREATE TABLE data_cuti (

id int(4) NOT NULL auto_increment,

Page 90: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

88

nama varchar(200) NOT NULL default '',nik varchar(10) NOT NULL default '',nik_atasan varchar(10) NOT NULL default '',nik_support varchar(10) NOT NULL default '',mulai varchar(20) NOT NULL default '',masuk varchar(20) NOT NULL default '',lama char(2) NOT NULL default '',jenis varchar(20) NOT NULL default '',alamat varchar(255) NOT NULL default '',alasan varchar(255) NOT NULL default '',catatan varchar(255) NOT NULL default '',tanggal varchar(20) NOT NULL default '',status varchar(20) NOT NULL default '',aktivasi varchar(20) NOT NULL default '',PRIMARY KEY (id)

) TYPE=MyISAM;?>

Penjelasan Script:Untuk membuat tabel data_cuti ini tetap dibutuhkan filesambung.php sebagai media untuk koneksi dengan database. Fieldyang ada dalam tabel data_cuti ini lebih banyak dibandingkandengan tabel karyawan sesuai dengan data cuti yang akandimasukkan. Tipe data yang akan dimasukkan ke dalam tabeldata_cuti ini semua adalah data teks, kecuali data yang akandimasukkan ke dalam field id. Field id juga memiliki atributauto_increment dan PRIMARY KEY. Berikut adalah strukturtabel data_cuti apabila dilihat menggunakan SQL seperti padaGambar 6.4 di bawah ini:

Page 91: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

89

Gambar 7.4 Tampilan struktur tabel data_cuti

TABEL ADMIN

Tabel admin dibutuhkan untuk menampung data user danpassword administrator sebagai hak akses yang paling tinggidalam program ini. Tabel ini dibuat menggunakan script phpseperti di bawah ini :

<?// membuat tabel data_cutiInclude”sambung.php”;

Page 92: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

90

CREATE TABLE admin (id int(3) NOT NULL auto_increment,user varchar(10) NOT NULL default '',password varchar(10) NOT NULL default '',PRIMARY KEY (id)

) TYPE=MyISAM;?>

Penjelasan script:Nama tabel ini adalah admin mempunyai tiga field yaitu user,password dan id. Field id difungsikan sebagai index dalam tabelini dan mempunyai atribut int sebagai identitas untuk menyimpandata angka, auto_increment dan PRIMARY KEY.Berikut adalah struktur tabel admin apabila ditampilkanmenggunakan SQL:

Gambar 7.5 Tampilan struktur tabel admin

Page 93: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

91

SCRIPT UNTUK AUTORISASI USER DANPASSWORD

Pada sebuah program yang membedakan hak akses pada setiappenggunanya selalu memberikan fasilitas untuk login. Untuk login,setiap pengguna diminta untuk mengisikan nama user dan passwordyang benar. Benar atau salah sebuah user dan password ini akandiperiksa oleh sebuah bagian program. Pada dasarnya sistem kerjadari program yang berfungsi untuk memeriksa data masukkan (userdan password) adalah membandingkan data masukkan dengan datayang ada dalam database. Apabila data tersebut sama, maka datamasukkan tersebut dianggap valid atau benar dan sebaliknya apabiladata yang dimasukkan tersebut tidak sesuai dengan data yang adadalam database maka data masukkan tersebut akan dianggap tidakvalid, kemudian program akan menginformasikan bahwa data yangdimasukkan tersebut tidak benar. Berikut adalah script yangberfungsi untuk memeriksa benar atau tidaknya user dan passwordyang dimasukkan seorang karyawan :

<?// karyawan.php

session_start();include"sambung.php";$data=mysql_query("select * from data_karyawan where nik='$nik'");$user=mysql_fetch_array($data);$data2=mysql_query("select * from hak_akses wherenik='$user[nik_atasan]'");$user2=mysql_fetch_array($data2);if($password=="$user[password]"){session_register("nik");session_register("password");if($user[hak_akses]=="0"||$user[hak_akses]=="22"

||$user[hak_akses]=="11"){

Page 94: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

92

if($user2[status]!=="0"){header("Location:./data_karyawan2.php");}else{header("Location:./detail_karyawan.php");}}elseif($user[hak_akses]=="1"||$user[hak_akses]=="2"){header("Location:./data_karyawan.php");}else{header("Location:./keluar.php");}}else{echo"<HTML><HEAD><meta http-equiv=\"Content-Language\" content=\"en-us\"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=windows-1252\"><style><!--body { font-family: arial; color: #000080 }--></style><script language=\"JavaScript\"><!--function FP_preloadImgs() {//v1.0var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image;d.FP_imgs[i].src=a[i]; }

}

function FP_swapImg() {//v1.0var doc=document,args=arguments,elm,n; doc.\$imgSwaps=new Array();

Page 95: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

93

for(n=2; n<args.length;n+=2) { elm=FP_getObjectByID(args[n]); if(elm) {

doc.\$imgSwaps[doc.\$imgSwaps.length]=elm;elm.\$src=elm.src; elm.src=args[n+1]; } }

}

function FP_getObjectByID(id,o) {//v1.0var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById)

el=o.getElementById(id);else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]);if(el) return el; } }return null;

}// --></script></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background=\"images/bg.gif\"onload=\"FP_preloadImgs(/*url*/'images/buttonF.gif')\"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR><TD>

<IMG SRC=\"images/tkm_01.gif\" WIDTH=800 HEIGHT=158ALT=\"\"></TD>

</TR><TR>

<TD><table border=\"0\" width=\"100%\" cellspacing=\"0\"

Page 96: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

94

cellpadding=\"0\" background=\"images/tkm_02.gif\" id=\"table1\"><tr>

<td width=\"12\">&nbsp;</td><td valign=\"top\"><p align=\"center\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px;

margin-bottom: 5px\"><font color=\"#800000\">Password yang Anda

masukkan salah,</font></p><p align=\"center\" style=\"margin-top: 5px;

margin-bottom: 5px\"><font color=\"#800000\">Atau</font></p><p align=\"center\" style=\"margin-top: 5px;

margin-bottom: 5px\"><font color=\"#800000\">Data Anda belum

terdaftar dalam database.</font></p><p align=\"center\" style=\"margin-top: 5px;

margin-bottom: 5px\"><font color=\"#800000\">Silakan ulangi

lagi.</font><br>&nbsp;<p align=\"center\" style=\"margin-top: 3px;

margin-bottom: 3px\"><br><a href=\"javascript:history.back();\"><img border=\"0\" id=\"img1\"

src=\"images/buttonE.gif\" height=\"20\" width=\"125\" alt=\"ULANGI\" fp-style=\"fp-btn: Metal Rectangle 1; fp-font-color-hover: #FF0000;fp-img-press: 0; fp-transparent: 1; fp-proportional: 0\" fp-title=\"ULANGI\"onmouseover=\"FP_swapImg(1,0,/*id*/'img1',/*url*/'images/buttonF.gif')\"onmouseout=\"FP_swapImg(0,0,/*id*/'img1',/*url*/'images/buttonE.gif')\"></a></td>

<td width=\"15\">&nbsp;</td></tr>

</table>

Page 97: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

95

</TD></TR><TR>

<TD><IMG SRC=\"images/tkm_05.gif\" WIDTH=800 HEIGHT=45

ALT=\"\"></TD></TR>

</TABLE></BODY></HTML>";}?>

Penjelasan script:Pada script di atas banyak sekali menggunakan fungsi php sesuaidengan tugasnya. Yang pertama adalah fungsi session_start(), fungsiini digunakan untuk mendeklarasikan bahwa pada file inimengandung data dan fungsi session yang lain. Fungsi session_start()selalu dituliskan pada awal script. Apabila dituliskan di tengah ataudi akhir script, maka akan ditolak oleh program php dan dinyatakansebagai kesalahan.Fungsi berikutnya yang digunakan dalam program di atas adalahinclude yang digunakan untuk memanggil file sambung.php sebagaiscript koneksi database. Setelah program terhubung dengan databaseMySQL maka program akan membaca data yang ada dalam tabelkaryawan dan tabel hak_akses menggunakan fungsi MySQL seperti dibawah ini:

$data=mysql_query("select * from data_karyawan where nik='$nik'");$user=mysql_fetch_array($data);$data2=mysql_query("select * from hak_akses wherenik='$user[nik_atasan]'");

Untuk mengakses data pada suatu tabel adalah menggunakan fungsiMySQL adalah mysql_query. Pokok dari fungsi autorisasi ini adalah

Page 98: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

96

fungsi if. Fungsi ini digunakan untuk memisahkan operasi satudengan yang lainnya sesuai dengan kondisi tertentu. Berikut adalahscript yang digunakan untuk autorisasi dalam program di atas:

if($password=="$user[password]"){session_register("nik");session_register("password");if($user[hak_akses]=="0"||$user[hak_akses]=="11"){if($user2[status]!=="0"){header("Location:./data_karyawan2.php");}else{header("Location:./detail_karyawan.php");}}elseif($user[hak_akses]=="1"||$user[hak_akses]=="2"){header("Location:./data_karyawan.php");}else{header("Location:./keluar.php");}

Pada fungsi if dalam script di atas sebagai syarat atau kondisi adalahmembandingkan data yang ada dalam variabel $password yaitu datadari formulir login dengan data yang ada dalam variabel$user[password] yaitu hasil pembacaan dari database sesuai dengandata karyawan yang telah dimasukkan oleh seorang administrator.Apabila data yang ada dalam variabel $password dan data yang adadalam variabel $user[password] sama maka program berikutnya akandijalankan yaitu mendaftarkan data dari variabel nik dan data yangada pada variabel password sebagai data sesi. Dengan terdaftarnyakedua data tersebut maka seorang karyawan yang telah melakukanlogin tersebut dapat membuka halaman keanggotaan yang lain,karena data sesi nik dan password selalu ter-include terus selamabrowser tidak ditutup atau karyawan tersebut keluar dari halamananggota.Kenapa data nik dan password harus didaftarkan menjadi data sesi?Data sesi ini sifatnya global dan tersimpan dalam server dalam jangka

Page 99: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

97

waktu tertentu, selama masih dibutuhkan walau pindah dari halamansatu ke halaman berikutnya. Kemudian pada tiap halaman anggotatersebut selalu meminta nik dan password pengunjung sehingga dapatmengakses isi dari halaman tersebut. Dengan adanya data sesitersebut maka karyawan dapat mengakses seluruh halaman yangmenjadi hak aksesnya.Di dalam fungsi if tersebut masih mengandung fungsi if lagi yangberfungsi untuk memisahkan hak akses dari masing-masingkaryawan yang telah login. Data hasil pembacaan database pada tabelhak_akses berdasarkan nik karyawan akan diperiksa nilainya.Apabila dalam field hak akses mempunyai nilai 0 maka karyawantersebut diarahkan program untuk menuju file data_karyawan2.phpmenggunakan fungsi header(); dan apabila data yang ada pada fieldhak akses 11 maka karyawan akan dialihkan membuka filedetail_karyawan.php. Kemudian apabila data dari field hak aksespada tabel hak akses dari karyawan tersebut mempunyai nilai 1 atau2 maka akan dialihkan ke file data_karyawan.php.Mengapa hal ini dilakukan? Dengan menggunakan fungsi ini makasetiap karyawan dapat dibedakan hak aksesnya dan dibatasi untukmembuka halaman-halaman yang sesuai dengan haknya. Kemudianapabila pengunjung lain tidak terdaftar dalam database maka akandialihkan ke halaman keluar.php menggunakan fungsi header();.

SCRIPT UNTUK MEMERIKSA DATA SESIScript ini akan digunakan pada setiap halaman keanggotaan yangakan diakses oleh karyawan. Fungsi dari script ini adalah memeriksaapakah pengunjung yang membuka halaman keanggotaanmempunyai data sesi atau tidak. Apabila seorang pengunjungmembuka halaman keanggotaan melalui prosedur yang benar yaitumelalui login, maka data sesi akan diciptakan. Tetapi apabila seorangpengunjung dalam membuka sebuah halaman tidak melalui login,maka secara otomatis tidak memiliki data sesi dan berikutnyapengunjung akan ditolak dan ditampilkan sebuah pesan kesalahanoleh program. Berikut adalah script yang digunakan untukmemeriksa keberadaan data sesi:

Page 100: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

98

<?// cek.phpsession_start();if(!session_is_registered("password")){echo"<HTML><HEAD><meta http-equiv=\"Content-Language\"content=\"en-us\"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV=\"Content-Type\"CONTENT=\"text/html; charset=windows-1252\"><style><!--body { font-family: arial; color: #000080 }--></style><script language=\"JavaScript\"><!--function FP_preloadImgs() {//v1.0var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image;

d.FP_imgs[i].src=a[i]; }}function FP_swapImg() {//v1.0var doc=document,args=arguments,elm,n; doc.\$imgSwaps=new Array();for(n=2; n<args.length;n+=2) { elm=FP_getObjectByID(args[n]); if(elm) {

doc.\$imgSwaps[doc.\$imgSwaps.length]=elm;elm.\$src=elm.src; elm.src=args[n+1]; } }

}function FP_getObjectByID(id,o) {//v1.0var c,el,els,f,m,n; if(!o)o=document;if(o.getElementById) el=o.getElementById(id);else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)

Page 101: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

99

for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]);if(el) return el; } }return null;

}// --></script></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background=\"../images/bg.gif\"onload=\"FP_preloadImgs(/*url*/'../images/buttonF.gif')\"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR><TD>

<IMG SRC=\"../images/tkm_01.gif\" WIDTH=800 HEIGHT=158ALT=\"\"></TD>

</TR><TR>

<TD><table border=\"0\" width=\"100%\" cellspacing=\"0\"

cellpadding=\"0\" background=\"../images/tkm_02.gif\" id=\"table1\"><tr>

<td width=\"12\">&nbsp;</td><td valign=\"top\"><p align=\"center\">&nbsp;</p><p align=\"center\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px;

margin-bottom: 3px\">Anda Tidak diijinkan mengakses halaman ini,</p><p align=\"center\" style=\"margin-top: 3px;

Page 102: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

100

\margin-bottom: 3px\">Anda harus login terlebih dahulu.</p><p align=\"center\" style=\"margin-top: 3px;

margin-bottom: 3px\">&nbsp;<p align=\"center\" style=\"margin-top: 3px;

margin-bottom: 3px\"><br><a href=\"javascript:history.back();\"><img border=\"0\" id=\"img1\"

src=\"../images/buttonE.gif\" height=\"20\" width=\"125\" alt=\"ULANGI\"fp-style=\"fp-btn: Metal Rectangle 1; fp-font-color-hover: #FF0000;fp-img-press: 0; fp-transparent: 1; fp-proportional: 0\" fp-title=\"ULANGI\"

onmouseover=\"FP_swapImg(1,0,/*id*/'img1',/*url*/'../images/buttonF.gif')\"onmouseout=\"FP_swapImg(0,0,/*id*/'img1',/*url*/'../images/buttonE.gif')\"></a></td>

<td width=\"15\">&nbsp;</td></tr>

</table></TD>

</TR><TR>

<TD><IMG SRC=\"../images/tkm_05.gif\" WIDTH=800 HEIGHT=45

ALT=\"\"></TD></TR></TABLE>

</BODY></HTML>";exit;}?>

Page 103: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 7 File Pendukung dalam Program

101

Penjelasan script:Pada script untuk memeriksa data sesi ini didominasi tag php danhtml. Fungsi yang digunakan untuk memeriksa data sesi dalam scriptdi atas adalah :

session_start();if(!session_is_registered("password")){

Penjelasan dari fungsi di atas adalah setiap sebuah file mengandungdata sesi harus ditambahkan fungsi session_start(); sehingga data sesiyang ada dalam script dapat dikenali. Kemudian untuk memeriksakeberadaan data sesi maka menggunakan fungsi session_is_registeredyang berada dalam kondisi fungsi if. Tanda seru (!) dalam fungsi iftersebut adalah menyatakan tidak. Jadi jika data sesi password tidakterdaftar, maka akan ditampilkan komentar kesalahan yangdiciptakan menggunakan tag-tag html dan diakhiri dengan fungsi phpyaitu exit; yang artinya perintah berikutnya akan diabaikan. Namunapabila data sesi password telah terdaftar maka program akandilanjutkan dan membuka halaman tersebut.

File yang mengandung script pemeriksaan data sesi ini diberi namacek.php. Untuk memasukkan ke dalam setiap file keanggotaan yaitumenggunakan fungsi include pada setiap halaman keanggotaan.

SCRIPT UNTUK MENGHAPUS DATA SESIApabila seorang karyawan akan meninggalkan halaman keanggotaandiharapkan data sesi juga akan dihapus, karena apabila data sesitidak terhapus, maka orang lain dapat membuka halamankeanggotaan sesuai hak yang dimiliki olah karyawan yang terakhirmengakses halaman keanggotaan tersebut. Untuk menghapus datasesi ini, maka dibuat sebuah file yang berisi script yang berfungsiuntuk menghapus data sesi. Berikut adalah script yang berfungsiuntuk menghapus data sesi dalam file keluar.php.

<?// keluar.phpsession_start();

Page 104: PHP Dan MySQL Studi Kasus Database Karyawan

File Pendukung dalam Program Bab 7

102

session_destroy();header("location:index.php");?>

Penjelasan script:Script untuk menghapus data sesi sangat sederhana sekali. Pada awalscript harus dituliskan fungsi sessien_start(); yang menyatakanbahwa dalam script tersebut mengandung data sesi, kemudian untukmenghapus data sesi menggunakan fungsi session_destroy();. Padaakhir script setelah data sesi dihapus maka pengunjung diarahkan kehalaman index.php menggunakan fungsi header.

Page 105: PHP Dan MySQL Studi Kasus Database Karyawan

103

Yang dimaksud dengan file program utama dalam proyek ini adalahsemua file yang berfungsi untuk mengakses dan sekaligusmenampilkan data pada browser. File tersebut secara langsung dapatdilihat oleh pengunjung atau karyawan yang sudah terdaftar dalamdatabase. File-file tersebut dapat dibedakan menjadi dua bagianbesar, antara lain halaman utama dan halaman keanggotaan.

HALAMAN UTAMAHalaman utama dalam proyek ini adalah file yang pertama kali akandiakses oleh karyawan. Isi dari halaman utama adalah menampilkanjumlah karyawan yang aktif, jumlah karyawan yang mengajukan cutidan jumlah karyawan yang sedang cuti. Selain itu pada halaman inijuga menampilkan formulir untuk login karyawan. Berikut adalahscript yang digunakan untuk menampilkan halaman utama :

<?include"sambung.php";$data=mysql_query("select * from karyawan where status='0'");$aktif=mysql_num_rows($data);$data2=mysql_query("select * from karyawan where status='1'");$cuti=mysql_num_rows($data2);$data3=mysql_query("select * from data_cuti where status='0'");

Page 106: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

104

$proses=mysql_num_rows($data3);$total=$aktif + $cuti;?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 ackground="images/bg.gif"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR> <TD> <IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD> </TR>

<TR><TD><table border="0" width="100%" cellspacing="0"cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td>

<td width="430" valign="top"><table border="1" width="97%" cellspacing="1" id="table4">

<tr><td bgcolor="#80A6D2"><p align="center">DATAKARYAWAN</td></tr>

<tr><td><table border="0" width="100%" cellspacing="3"cellpadding="2" id="table5">

<tr><td width="281" bgcolor="#FFCC99">Keterangan</td><td bgcolor="#FFCC99"><p align="center">Jumlah</td>

</tr><tr><td width="281" bgcolor="#B3CAE3">JumlahKaryawan Aktif</td><td bgcolor="#B3CAE3" align="right">

<p style="margin-right: 40px"><?echo$aktif?></td></tr><tr><td width="281" bgcolor="#B3CAE3">Jumlah Karyawan Cuti</td><tdbgcolor="#B3CAE3" align="right"> <p style="margin-right:40px"><?echo$cuti?></td></tr><tr><td width="281" bgcolor="#B3CAE3">Jumlah Karyawan MengajukanCuti</td><td bgcolor="#B3CAE3" align="right">

Page 107: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

105

<p style="margin-right: 40px"><?echo$proses?></td>tr><tr><td width="281" bgcolor="#B3CAE3">Jumlah Total Karyawan</td><tdbgcolor="#B3CAE3" align="right"><p style="margin-right: 40px"><b><?echo$total?></b></td> </tr></table></td>

</tr></table></td><td valign="top"><table border="1" width="308" id="table2" cellspacing="1"><tr><td bgcolor="#80A6D2"><p align="center">LOGIN UNTUKKARYAWAN</td> </tr><tr> <td bgcolor="#FFCC99"><table border="0" width="100%"cellpadding="2" id="table3"><formulir method="POST"action="karyawan.php"><tr><td width="116" align="right"><p style="margin-right: 10px; margin-top: 15px">NIK</td><td><p style="margin-top: 15px"><input type="text" name="nik"size="15" style="color: #000080; font-family: Arial; font-size:12pt"></td></tr><tr><td width="116" align="right"><p style="margin-right:10px">Password</td><td><input type="password" name="password"size="15" style="color: #000080; font-family: Arial; font-size:12pt"></td></tr><tr><td width="116"><p style="margin-bottom: 15px">&nbsp;</td><td><pstyle="margin-bottom: 15px"><input type="submit" value=" L O G I N " name="login" style="font-family: arial; color: #000080; font-weight: bold"></td></tr></form></table></td></tr></table></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR>

Page 108: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

106

</TABLE></BODY></HTML>

Penjelasan script:Pada file index.php sebagai halaman utama dari proyek inimenampilkan data karyawan yang diakses dari database, sehinggamembutuhkan file sambung.php sebagai script untuk koneksi dengandatabase. File sambung.php dipanggil menggunakan fungsi includeseperti di bawah ini :include"sambung.php";

Fungsi berikutnya adalah perintah query untuk membaca data yangada dalam database karyawan dan database data_cuti. Berikut adalahpotongan perintah query yang digunakan untuk membaca datakaryawan tersebut :

$data=mysql_query("select * from karyawan where status='0'");$aktif=mysql_num_rows($data);

Potongan script di atas berfungsi untuk membaca data karyawan yangmemiliki status 0 (sedang aktif) sebagai syarat pembacaan data.Setelah data dibaca kemudian dihitung jumlah data sesuai dengansyarat statusnya 0 menggunakan fungsi mysql_num_rows(). Hasildari fungsi di atas adalah data angka dengan nilai sebanyak recordkaryawan yang memiliki data status 0. Pembacaan data berikutnyaadalah menghitung jumlah karyawan yang sedang cuti, pada databasediberikan status 1, artinya karyawan tersebut sedang cuti. Berikutadalah penggalan script yang berfungsi untuk membaca danmenghitung jumlah karyawan yang memiliki status 1 atau sedangcuti :

$data2=mysql_query("select * from karyawan where status='1'");$cuti=mysql_num_rows($data2);

Pembacaan data hanya yang memiliki status 1 saja, artinya hanyadata karyawan yang cuti saja. Kemudian data yang telah dibacamenggunakan fungsi mysql_num_rows().

Page 109: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

107

Selanjutnya adalah membaca data karyawan yang sedangmengajukan cuti. Artinya bahwa karyawan tersebut masih aktif,namun pada saat tersebut telah mengajukan cuti dan belum disetujuioleh pimpinan. Hal ini dimaksudkan untuk mempermudah atasan /pimpinan untuk mengetahui apakah hari tersebut ada karyawan yangsedang mengajukan cuti yang akan diterima atau ditolak. Apabila adamaka seorang atasan akan melakukan login ke data karyawan danmemberikan tanggapan atas pengajuan cuti yang telah diajukan olehkaryawannya. Berikut adalah fungsi yang digunakan oleh halamanutama tersebut untuk membaca dan menghitung data karyawan yangsedang mengajukan cuti:

$data3=mysql_query("select * from data_cuti where status='0'");$proses=mysql_num_rows($data3);

Pada ketiga fungsi tersebut adalah sama yaitu untuk mengaksesdatabase dan menghitung data yang telah dibaca. Bedanya adalahdatabase yang dibaca dan syarat pembacaan database tersebut.Setelah database telah dibaca, kemudian data tersebut disimpan kedalam variabel. Hasil pembacaan dan penghitungan data karyawanyang sedang cuti disimpan ke dalam variabel $cuti, kemudian untukdata karyawan yang sedang mengajukan cuti disimpan ke dalamvariabel $proses dan data karyawan yang sedang aktif disimpan kedalam variabel $aktif. Setelah data hasil pembacaan disimpan dalammasing-masing variabel, kemudian script php menampilkannya kedalam halaman utama dengan menyisipkan data tersebut disela-selatag HTML menggunakan fungsi echo.Berikut adalah tampilan dari halaman utama menggunakan script diatas :

Page 110: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

108

Gambar 8.1 Tampilan halaman utama

Tampilan dari halaman utama adalah dibagi menjadi dua bagian,yang pertama adalah bagian kiri yang berisikan tentang informasikaryawan dan yang kedua adalah bagian kanan berisikan formuliruntuk login karyawan.

HALAMAN DATA KARYAWANHalaman data karyawan ini digunakan untuk menampilkan daftardata karyawan yang telah dimasukkan ke dalam database. Apabilahak akses karyawan yang login melalui formulir login ini adalahseorang atasan atau pimpinan, maka halaman ini akan menampilkannama-nama karyawan yang menjadi bawahannya. Namun apabilakaryawan yang login hanya memiliki hak akses sebagai karyawanbiasa maka tidak dapat mengakses halaman ini, namun akandialihkan ke halaman detail_karyawan.php.Berikut adalah script yang digunakan untuk menampilkan halamandata karyawan :

Page 111: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

109

<?session_start();include"cek.php";include"sambung.php";$data4=mysql_query("select * from karyawan where nik='$nik'");$d4=mysql_fetch_array($data4);if($d4[hak_akses]=="1"){$akses="nik_atasan";}else{$akses="nik_support";}?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/button3.gif',/*url*/'images/button5.gif', /*url*/'images/button7.gif',/*url*/'images/button9.gif', /*url*/'images/buttonB.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158 ALT=""></TD></TR><TR><TD>

Page 112: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

110

<table border="0" width="100%" cellspacing="0" cellpadding="0"background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td colspan="5"><p align="right"><?if($d4[hak_akses]=="2"){?><a href="tambah_data.php"><img border="0" id="img1" src="images/button2.gif" height="20"width="150" alt="Tambah Data" onmouseover="FP_swapImg(1,0,/*id*/'img1',/*url*/'images/button3.gif')"onmouseout="FP_swapImg(0,0,/*id*/'img1',/*url*/'images/button2.gif')" fp-style="fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent:1; fp-proportional: 0" fp-title="Tambah Data"></a><?}?><a href="detail_karyawan.php"><img border="0" id="img2" src="images/button4.gif" height="20"width="150" alt="Lihat Data Pribadi" onmouseover="FP_swapImg(1,0,/*id*/'img2',/*url*/'images/button5.gif')" onmouseout="FP_swapImg(0,0,/*id*/'img2',/*url*/'images/button4.gif')" fp-style="fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent:1; fp-proportional: 0" fp-title="Lihat Data Pribadi"></a><a href="pengajuan.php"><img border="0" id="img3" src="images/button6.gif" height="20"width="150" alt="Pengajuan Cuti" onmouseover="FP_swapImg(1,0,/*id*/'img3',/*url*/'images/button7.gif')"onmouseout="FP_swapImg(0,0,/*id*/'img3',/*url*/'images/button6.gif')" fp-style="fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent:1; fp-proportional: 0" fp-title="Pengajuan Cuti"></a><a href="persetujuan.php"><img border="0" id="img4" src="images/button8.gif" height="20"

Page 113: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

111

width="150" alt="Persetujuan Cuti" onmouseover="FP_swapImg(1,0,/*id*/'img4',/*url*/'images/button9.gif')"onmouseout="FP_swapImg(0,0,/*id*/'img4',/*url*/'images/button8.gif')" fp-style="fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent:1; fp-proportional: 0" fp-title="Persetujuan Cuti"></a><a href="keluar.php"><img border="0" id="img5" src="images/buttonA.gif" height="20"width="150" alt="Keluar" onmouseover="FP_swapImg(1,0,/*id*/'img5',/*url*/'images/buttonB.gif')" onmouseout="FP_swapImg(0,0,/*id*/'img5',/*url*/'images/buttonA.gif')" fp-style="fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent:1; fp-proportional: 0" fp-title="Keluar"></a></p></td></tr><tr><td colspan="5">Data Karyawan</td></tr><tr><td width="26%" bgcolor="#6799CF">Nama</td><td width="15%" bgcolor="#6799CF">Jabatan</td><td width="25%" bgcolor="#6799CF">Posisi</td><td width="17%" bgcolor="#6799CF">Status</td><td width="17%"bgcolor="#6799CF">Keterangan</td></tr><?include"sambung.php";$data1=mysql_query("select * from karyawan where $akses='$nik' orderby nama");while($d1=mysql_fetch_array($data1)){if($d1[status]=="0"){$d1[status]="Sedang Aktif";}else{$d1[status]="<font color=\"#FF0000\">Sedang Cuti</font>";}echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[nama]</td>

Page 114: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

112

<td width=\"15%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[jabatan]</td><td width=\"25%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[posisi]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[status]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\"><p align=\"center\"><a href=\"detail_karyawan2.php?id=$d1[id]&act=detail\">LihatDetail</a></td></tr>";}?><tr><td width="26%">Data Karyawan Cuti</td></tr><tr><td width="26%" bgcolor="#6799CF">Nama</td><td width="15%" bgcolor="#6799CF">Mulai Cuti</td><td width="25%" bgcolor="#6799CF">Alamat Cuti</td><td width="17%" bgcolor="#6799CF">Jumlah Cuti</td><td width="17%" bgcolor="#6799CF">Keterangan</td></tr><?// kode php$data3=mysql_query("select * from data_cuti where $akses='$nik' andstatus<>'2'and aktivasi<>'-'");while($d2=mysql_fetch_array($data3)){if($d2[status]=="0"){$d2[status]="<a href=\"detail_cuti.php?id=$d2[id]&s=new\">Baru</a>";}elseif($d2[status]=="1"){$d2[status]="Sedang Cuti";}else{$d2[status]="Ditolak";}echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom:

Page 115: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

113

1px solid #FFFFFF\">$d2[nama]</td> <td width=\"15%\"bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\">$d2[mulai]</td><td width=\"25%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[alamat]</td><td width=\"17%\" bgcolor=\"#F5DDB8\"style=\"border-bottom: 1px solid #FFFFFF\">$d2[lama] hari</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"><p align=\"center\">$d2[status]</td></tr>";}?></table><p align="right">Untuk Memberikan persetujuan pengajuan cutioleh karyawan, <br>dapat diklik kata <b>Baru</b> pada bagian keterangan<br>di tiap-tiap karyawan yang mengajukan cuti.</td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script :Script pada halaman data karyawan ini terdiri dari tag-tag html dankode-kode php. Kode php berfungsi untuk mengolah data yang adadalam database dan tag-tag html berfungsi untuk membuat tampilangrafik pada browser.Pada awal script dituliskan fungsi session_start() yang memberikanidentitas bahwa dalam file ini terdapat data sesi yang akandideklarasikan dalam sebuah variabel. Baris berikutnya adalahmenggunakan fungsi include untuk memanggil file cek.php. Filecek.php ini berfungsi untuk memeriksa apakah pengunjung tersebutmelalui proses yang sah atau tidak. Artinya apabila melalui proseduryang sah akan melalui formulir login dan dalam proses berikutnyaakan mendaftarkan data dari variabel dimasukkan menjadi data sesi.

Page 116: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

114

Apabila data sesi tidak ada maka dengan adanya file cek.php ini akandialihkan ke halaman index.php, dan apabila data sesi terdaftar makaperintah selanjutnya akan dijalankan. Selain memanggil file cek.php,script ini juga memanggil file sambung.php yang digunakan untukkoneksi dengan database. Potongan script ini adalah sebagai berikut:session_start();include"cek.php";include"sambung.php";

Fungsi session_start() selau dituliskan pada awal script. Kemudiandiikuti fungsi-fungsi yang lain sesuai dengan struktur operasi dalamsebuah file.Script berikutnya adalah perintah query yang berfungsi untukmembaca data yang ada dalam database karywan. Data yang dibacakemudian diperiksa apakah karyawan yang bersangkutan mempunyaihak akses sebagai kepala bagian (support) atau mempunyai hak aksessebagai atasan. Berikut adalah potongan script yang berfungsi untukmengakses dan memeriksa hak akses karyawan tersebut:

$data4=mysql_query("select * from karyawan where nik='$nik'");$d4=mysql_fetch_array($data4);if($d4[hak_akses]=="1"){$akses="nik_atasan";}else{$akses="nik_support";}

Perintah query pertama adalah mysql_query(); untuk membacadatabase berdasarkan nik tertentu, kemudian hasilnya dimasukkanke dalam variabel $d4 dengan menggunakan perintah querymysql_fetch_array($data4);. Berikutnya adalah fungsi if yangdigunakan untuk menganalisa / memeriksa apakah hak akseskaryawan tersebut sebagai atasan atau kepala bagian (support).Setelah hak akses karyawan ditentukan, kemudian halaman datakaryawan ditampilkan menggunakan tag-tag html. Namun padatampilan data karyawan digunakan fungsi php kembali untukmengakses database dan mendeklarasikan field-field data yang adadalam database ke tag-tag html. Berikut adalah bagian kode php yang

Page 117: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

115

berfungsi untuk mengakses dan menampilkan data ke dalam halamandata karyawan :

$data1=mysql_query("select * from karyawan where $akses='$nik' orderby nama");while($d1=mysql_fetch_array($data1)){if($d1[status]=="0"){$d1[status]="Sedang Aktif";}else{$d1[status]="<font color=\"#FF0000\">Sedang Cuti</font>";}

Pada potongan script di atas berfungsi untuk mengakses data yangada dalam database karyawan dan menampilkan ke dalam halamandata karyawan, apabila mempunyai kode status 0 maka dinyatakansedang aktif dan apabila mempunyai kode 1 maka karyawandinyatakan sedang cuti. Namun pada script di atas belum ada fungsiuntuk menampilkan data pada browser, berikut adalah bagian scriptyang berfungsi untuk menampilkan data pada browser:

Echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[nama]</td><td width=\"15%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[jabatan]</td><td width=\"25%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[posisi]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d1[status]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\"><p align=\"center\"><a href=\"detail_karyawan2.php?id=$d1[id]&act=detail\">LihatDetail</a></td></tr>";

Page 118: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

116

Sebagian besar pada script di atas adalah kode html, namun apabilaAnda berhatikan ada bagian-bagian tertentu yang dideklarasikandengan variabel-variabel dari script php, seperti $d1[nama],$d1[jabatan], $d1[posisi], $d1[status] dan $d1[id]. Kelima variabeltersebut berisikan data yang diambil dari pembacaan databasekaryawan.Pada bagian ke dua dalam file ini adalah membaca dan menampilkandata yang ada dalam database data_cuti. Tujuan dari pembacaandatabase data_cuti ini adalah untuk menginformasikan datakaryawan yang sedang mengajukan cuti berdasarkan nik atasan.Berikut adalah bagian script yang berfungsi untuk membaca danmenampilkan data karyawan yang sedang cuti:

$data3=mysql_query("select * from data_cuti where $akses='$nik' andstatus<>'2'and aktivasi<>'-'");while($d2=mysql_fetch_array($data3)){if($d2[status]=="0"){$d2[status]="<a href=\"detail_cuti.php?id=$d2[id]&s=new\">Baru</a>";}elseif($d2[status]=="1"){$d2[status]="Sedang Cuti";}else{$d2[status]="Ditolak";}echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom:1px solid #FFFFFF\">$d2[nama]</td> <td width=\"15%\"bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\">$d2[mulai]</td><td width=\"25%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[alamat]</td><td width=\"17%\" bgcolor=\"#F5DDB8\"style=\"border-bottom: 1px solid #FFFFFF\">$d2[lama] hari</td><td width=\"17%\" bgcolor=\"#F5DDB8\"style=\"border-bottom: 1px solid #FFFFFF\"><palign=\"center\">$d2[status]</td></tr>";}

Pada prinsipnya script untuk membaca database karyawan dandata_cuti sama, yang membedakan adalah filter yang digunakanuntuk membaca data yang ada dalam data_cuti, yaitu pembacaandata berdasarkan data field akses harus sesuai dengan nik atasan

Page 119: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

117

kemudian untuk field status tidak sama dengan 2 denganmenggunakan tanda <> dan field aktivasi tidak bernilai “-“ denganmenggunakan parameter <> artinya “tidak sama dengan”.Untuk menampilkan data pada halaman data karyawan ini jugamenggunakan fungsi echo, sama dengan menampilkan data karyawandari hasil pembacaan database karyawan di atas.Berikut adalah tampilan halaman data karyawan yang diakses olehseorang atasan:

Gambar 8.2 Tampilan halaman data karyawan.

HALAMAN DETAIL KARYAWANHalaman detail ini berisikan data pribadi karyawan yang sedanglogin. Apabila karyawan tersebut sebagai karyawan biasa, maka

Page 120: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

118

setelah login akan langsung diarahkan ke halaman ini. Namunapabila karyawan ini sebagai atasan atau support untuk mengakseshalaman ini setelah login diarahkan ke halaman data karyawankemudian menekan menu Lihat Data Pribadi pada halaman datakaryawan yang diakses.

Gambar 8.3 Tombol menu lihat data karyawan.

Setelah tombol Lihat Data Pribadi diklik, maka akan ditampilkansebuah halaman yang berisikan informasi tentang data diri karyawan.Berikut adalah script yang digunakan untuk menampilkan halamandetail_karyawan.php :

<?include"cek.php";include"sambung.php";if($act=="detail"){$akses="id";$val=$id;

Tombol untuk melihatdata pribadi

Page 121: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

119

}else{$akses="nik";$val=$nik;}$data=mysql_query("select * from karyawan where $akses='$val'");$d1=mysql_fetch_array($data);if($d1[status]=="0"){$d1[status]="Aktif";$aju="<a href=\"pengajuan.php\"><img border=\"0\" id=\"img3\"src=\"images/button6.gif\" height=\"20\" width=\"150\"alt=\"Pengajuan Cuti\"onmouseover=\"FP_swapImg(1,0,/*id*/'img3',/*url*/'images/button7.gif')\" onmouseout=\"FP_swapImg(0,0,/*id*/'img3',/*url*/'images/button6.gif')\" fp-style=\"fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent: 1; fp-proportional: 0\" fp-title=\"Pengajuan Cuti\"></a><ahref=\"persetujuan.php\">";}else{$d1[status]="<font color=\"#FF0000\">Cuti</font>";$aju="";}?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/button7.gif',/*url*/'images/button9.gif', /*url*/'images/buttonB.gif',/*url*/'images/arsip2.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158

ALT=""></TD><TR><TR><TD><table border="0" width="100%" cellspacing="0"cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td>

Page 122: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

120

<td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td><p align="right">&nbsp; <ahref="arsip_cuti.php?id=<?echo$d1[nik]?>"> <img border="0" id="img6"src="images/arsip2.gif" height="20" width="150"alt="Arsip Cuti" onmouseover="FP_swapImg(1,0,/*id*/'img6',/*url*/'images/arsip2.gif')" onmouseout="FP_swapImg(0,0,/*id*/'img6',/*url*/'images/arsip2.gif')" fp-style="fp-btn: MetalRectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent: 1; fp-proportional: 0" fp-title="Arsip Cuti"></a><?if($id ==""){echo"$aju";?><a href="persetujuan.php"><img border="0" id="img4"src="images/button8.gif" height="20" width="150" alt="Persetujuan Cuti"title="Persetujuan Cuti"></a><?}else{?><a href="karyawan.php"><img border="0" id="img3"src="images/kembali1.gif" height="20" width="150" alt="Kembali"title="Kembali"></a><?}?><a href="keluar.php"><img border="0" id="img5"src="images/buttonA.gif" height="20" width="150" alt="Keluar"title="Keluar"></a></td></tr></table><?echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><formulir method=\"POST\"action=\"ubah_password.php\"><tr><td colspan=\"2\"bgcolor=\"#6799CF\"><p align=\"center\" style=\"margin-top: 5px;margin-bottom: 5px\">Data Karyawan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; Data

Page 123: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

121

Personal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top:2px; margin-bottom: 2px\">$d1[nama]</td> </tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[tingkat]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik_atasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik_support]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Status</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[status]</td></tr>

Page 124: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

122

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Jumlah Cuti yang belum diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[besar] Hari</td></tr>

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2004] </td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2005] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[th2006] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:

Page 125: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

123

2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Password untuk login karyawan bersangkutan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Password</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;<!--webbotbot=\"Validation\" b-value-required=\"TRUE\" i-maximum-length=\"8\" --><input type=\"text\" name=\"pass\" size=\"17\" style=\"color: #000080;font-family: arial; font-size: 12pt\" value=\"$d1[password]\"maxlength=\"8\"><input type=\"submit\" value=\"Klik Disini Untuk UbahPassword Anda\" name=\"kirim\" style=\"color: #000080; font-family:arial; font-weight: bold\"></td></tr> <input type=\"hidden\"value=\"$d1[nik]\" name=\"id\"<tr><td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><font color=\"#FF0000\">Maksimal 8 karakter</font></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\"align=\"right\">&nbsp;</td><td width=\"73%\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 5px; margin-bottom: 5px\">&nbsp;</td></tr></form></table>";?></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Page 126: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

124

Penjelasan script:Pada file detail_karyawan.php ini juga dibentuk dari tag-tag html dankode-kode php. Kode php dalam file ini berfungsi untukmenghubungkan script dengan database dan sekaligus membaca danmenampilkan data pada halaman detail_karyawan.php. Berikutadalah potongan kode php yang berfungsi untuk membaca danmenampilkan data pada file detail_karyawan.php:

include"sambung.php";if($act=="detail"){$akses="id";$val=$id;}else{$akses="nik";$val=$nik;}$data=mysql_query("select * from karyawan where $akses='$val'");$d1=mysql_fetch_array($data);

Untuk koneksi ke database dalam halaman ini tetap menggunakanfile sambung.php dengan cara memanggil file tersebut. Pada scriptberikutnya adalah menyaring data yang ada dalam variabel $act darihalaman karyawan.php, apabila variabel $act mempunyai nilai detail,maka terbentuk variabel baru dengan nama $akses dan mempunyainilai id dan variabel $val dengan nilai sama dengan nilai variabel $iddari halaman sebelumnya. Apabila nilai dari variabel $act buka detail,maka variabel $akses diberikan nilai nik dan variabel $val diberikannilai dari variabel $nik. Kemudian nilai dari kedua variabel inidigunakan sebagai syarat atau filter untuk membaca databasekaryawan yang sedang login tersebut.Perintah pembacaan data dari database menggunakan perintah querydari MySQL.Untuk menampilkan data karyawan secara detail menggunakanperintah echo pada masing-masing bagian dengan cara menyisipkankode-kode php ke dalam tag-tag html.

Page 127: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

125

Berikut adalah tampilan halaman detail_karyawan apabila diaksesmenggunakan browser:

Gambar 8.4 Tampilan halaman detail_karyawan.

HALAMAN PENGAJUAN CUTIPada dasarnya sistem yang dibuat dengan platform online adalahbertujuan untuk memberikan kemudahan kepada pengguna dalambentuk online dan realtime. Demikian juga untuk proyek databasekaryawan khususnya pengajuan cuti online ini, direncanakan setiap

Page 128: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

126

karyawan dapat mengajukan cuti secara online dan tanpa harusbertemu dengan atasannya langsung. Halaman pengajuan cuti iniditampilkan formulir yang dapat diisi oleh karyawan yangmengajukan cuti dengan menuliskan informasi-informasi tentang cutiyang diajukan, seperti tanggal cuti, jumlah cuti, alasan cuti danalamat cuti yang dapat dihubungi oleh pihak kantor apabila adakeperluan mendesak sehingga mengharuskan kehadiran karyawantersebut di kantor.Berikut adalah script yang digunakan untuk membuat halamanpengajuan cuti:

<?include"cek.php";include"sambung.php";$data=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data);if($d1[status]=="0"){$d1[status]="Aktif";}else{$d1[status]="Cuti";}?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0

Page 129: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

127

MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/buttonB.gif',/*url*/'images/batal1.gif', /*url*/'images/button13.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0CELLSPACING=0>

<TR><TD>

<IMG SRC="images/tkm_01.gif" WIDTH=800HEIGHT=158 ALT=""></TD>

</TR><TR>

<TD><table border="0" width="100%" cellspacing="0"

cellpadding="0" background="images/tkm_02.gif" id="table1"><tr>

<td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2"

cellspacing="0" cellpadding="0"><tr>

<td><p align="right">

<a href="javascript:history.back();"><img border="0" id="img8" src="images/button12.gif" height="20"width="150" alt="Kembali" </a> <a href="karyawan.php"><img border="0" id="img4" src="images/batal2.gif" height="20"width="150" ></a><a href="keluar.php"><img border="0" id="img5" src="images/buttonA.gif" height="20"width="150" alt="Keluar" </a></td>tr> </table><?$thn=date("Y");$thn2=$thn+1;

Page 130: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

128

echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"ellpadding=\"0\" id=\"table3\"><formulir method=\"POST\" action=\"proses_pengajuan.php\"><tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\">Halaman Pengajuan Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataPersonal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[tingkat]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

Page 131: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

129

<p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Jabatan</td>

<td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">

$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">

NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px;margin-bottom: 2px\">$d1[nik_atasan]</td><tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px;

margin-top: 2px; margin-bottom: 2px\">$d1[nik_support]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

Page 132: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

130

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">Jumlah Cuti yang belum diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[besar] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[th2004] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">

Tahun 2005</td><td width=\"73%\"><p style=\"margin-left:10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2005]Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[th2006] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

Page 133: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

131

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td>

<td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td>

<td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">Pengajuan Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">

Mulai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;<select size=\"1\" name=\"t\" style=\"color: #000080;font-family: Arial; font-size:12pt\">";$tanggal=date("j");for($t=$tanggal; $t<=31;$t++){echo"<option value=\"$t\">$t</option>";}echo"</select><select size=\"1\" name=\"b\" style=\"font-family:Arial; color: #000080; font-size:12pt\">";$b=date("n");$bln=array("Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember");while($b<13){$bb= $b-1;echo"<option value=\"$b\">$bln[$bb]</option>";$b++;}echo"</select>

Page 134: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

132

<select size=\"1\" name=\"y\" style=\"font-family: Arial; color: #000080;font-size:12pt\"><option value=\"$thn\">$thn</option><optionvalue=\"$thn2\">$thn2</option></select> </td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">LamaCuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">&nbsp;<select size=\"1\" name=\"lama\"style=\"color: #000080; font-family: Arial; font-size:12pt\">";for($l=1; $l<=10;$l++){echo"<option value=\"$l\">$l</option>";}echo"<option value=\"45\">45</option></select> hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">JenisCuti Yang Diambil</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"radio\" value=\"tahunan\" checkedname=\"jenis\">Tahunan&nbsp;<input type=\"radio\" value=\"besar\" name=\"jenis\">Besar</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Alamat Cuti Yang Dapat Dihubungi</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;<textarea rows=\"2\" name=\"alamat\" cols=\"33\"style=\"font-family: Arial; font-size: 12pt; color: #000080\"></textarea></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">AlasanMengambil Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;<textarea rows=\"3\" name=\"alasan\" cols=\"33\"style=\"font-family: Arial; font-size: 12pt; color:#000080\"></textarea></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">&nbsp;</td><tdwidth=\"73%\">&nbsp;</td></tr><tr>

Page 135: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

133

<td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 5px; margin-bottom:

5px\"><input type=\"submit\" value=\"AMBIL CUTI\" name=\"kirim\"style=\"color: #000080; font-family: arial; font-weight: bold\"></td></tr></form></table>";?>/td>

<td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45 ALT=""></TD>

</TR></TABLE></BODY></HTML>

Penjelasan script:Pada dasarnya halaman ini adalah berisi formulir pengajuan cutiyang disusun dengan tag-tag html. Namun karena halaman inibersifat personal atau akses terbatas, maka dibutuhkan kode-kodephp yang berfungsi untuk membatasi akses oleh orang yang tidakdiinginkan. Berikut adalah script php yang digunakan untuk fungsitersebut:

<?include"cek.php";include"sambung.php";$data=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data);if($d1[status]=="0"){$d1[status]="Aktif";}else{

Page 136: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

134

$d1[status]="Cuti";}?>

Setelah diperiksa menggunakan file validasi yaitu file cek.php,kemudian karyawan yang sedang login diperiksa apakah berstatuscuti atau sedang aktif dengan menggunakan fungsi if yang memeriksadata cuti karyawan dalam database data_cuti. Hal tersebut dilakukandengan tujuan untuk menampilkan keterangan apakah karyawantersebut sedang cuti atau sedang aktif dalam halaman pengajuan cuti.Script php berikutnya yang ada dalam halaman ini adalah kombinasifungsi date dan fungsi for (pengulangan). Gabungan kedua fungsi inidigunakan untuk membentuk bagian formulir yaitu option. Bagianformulir option adalah salah satu jenis isian formulir yangmenyediakan pilihan tertentu. Berikut adalah script php tersebut:

<select size=\"1\" name=\"t\" style=\"color: #000080;font-family: Arial; font-size:12pt\">";$tanggal=date("j");for($t=$tanggal; $t<=31;$t++){echo"<option value=\"$t\">$t</option>";}echo"</select>”;

Hasilnya apabila dijalankan menggunakan browser adalah sepertipada gambar berikut:

Page 137: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

135

Gambar 8.5 Tampilan option menggunakan php.

Fungsi tersebut selain digunakan untuk menyusun bagian formulirtanggal juga untuk membuat option pada bulan dan tahun. Berikutadalah script php yang digunakan untuk membuat option bulan:

Echo”<select size=\"1\" name=\"b\" style=\"font-family:Arial; color: #000080; font-size:12pt\">";$b=date("n");$bln=array("Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember");while($b<13){$bb= $b-1;echo"<option value=\"$b\">$bln[$bb]</option>";$b++;}echo"</select>”;

Page 138: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

136

Selain mengunakan fungsi while dan date dalam script di atas jugamenggunakan fungsi array untuk mendeklarasikan nama bulandalam bahasa Indonesia.Berikut adalah tampilan halaman pengajuan cuti oleh karyawandengan menggunakan browser:

Gambar 8.6 Tampilan halaman pengajuan cuti.

Page 139: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

137

Jika Anda perhatikan pada gambar halaman pengajuan cuti di atas,untuk menampilkan data personal adalah dengan cara membacadatabase karyawan dan untuk menampilkan data jumlah cuti yangbelum diambil adalah dengan membaca data_cuti.

SCRIPT PROSES PENGAJUAN CUTIScript untuk memproses data yang dikirimkan melalui formulirpengajuan cuti ini disimpan ke dalam file proses_pengajuan.php. Jadisudah pasti formulir pengajuan cuti ini actionnya diarahkan ke fileproses_pengajuan.php.Fungsi dari script ini bertugas untuk mengolah data isian dariformulir pengajuan. Tugas utamanya adalah memasukkan data isianke dalam database dan meng-update data karyawan, khususnya padastatus karyawan, sebelumnya berstatus aktif menjadi berstatussedang mengajukan cuti. Dengan demikian seorang atasan darikaryawan tersebut dapat melihat bahwa karyawan bawahannya telahmengajukan cuti dan akan diperiksa.Berikut adalah script yang berfungsi untuk mengolah data isianpengajuan cuti tersebut :<?include"cek.php";include"sambung.php";$d=mysql_query("select * from karyawan where nik='$nik'");$data=mysql_fetch_array($d);$year=date("Y");if($jenis=="besar"){$array="$jenis";$lama=45;}else{$array="th$year";}$tanggal=mktime(0,0,0, $b, $t, $y);

Page 140: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

138

if($lama <= $data[$array]){$add=mysql_query("INSERT INTO `data_cuti` ( `id` , `nama` ,`nik` , `nik_atasan` , `nik_support` , `mulai` , `masuk` , `lama` ,`jenis` ,

`alamat` , `alasan` , `catatan` , `tanggal` , `status` , `aktivasi` )VALUES ('', '$data[nama]', '$data[nik]', '$data[nik_atasan]','$data[nik_support]', '$t / $b / $y', '', '$lama', '$array', '$alamat','$alasan', '', '$tanggal', '0', '0'

)");

if($add){$psn="<p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">Pengajuan cuti yang Anda tulis telah terkirim</p><p align=\"center\"style=\"margin-top: 3px; margin-bottom: 3px\">ke dalam database. Untukmelihat persetujuan Cuti Anda,<br>Silakan Login kembali beberapa jamlagi.</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom:3px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\"><br><a href=\"detail_karyawan.php\"><img border=\"0\"id=\"img1\" src=\"images/button20.gif\" height=\"20\" width=\"125\"alt=\"Halaman Member\" fp-style=\"fp-btn: Metal Rectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent: 1; fp-proportional:0\" fp-title=\"Halaman Member\" ></a><a href=\"keluar.php\"><imgborder=\"0\" id=\"img2\" src=\"images/button22.gif\" height=\"20\"width=\"125\" alt=\"Keluar\" ></a></td><td width=\"15\">&nbsp;</td>";}}else{$psn="<p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">Pengajuan cuti yang Anda tulis tidak diterima,</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">karena jumlah cuti yang tersisa tidak mencukupi.<br>Silakan ulangilagi.</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom:3px\">&nbsp;</p>

Page 141: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

139

<p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\"><br><a href=\"detail_karyawan.php\"><img border=\"0\" id=\"img1\" src=\"images/button20.gif\"height=\"20\" width=\"125\" alt=\"Halaman Member\" fp-style=\"fp-btn:Metal Rectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-

transparent: 1; fp-proportional: 0\" fp-title=\"Halaman Member\" ')\"></a><a href=\"keluar.php\"><img border=\"0\" id=\"img2\" src=\"images/button22.gif\" height=\"20\"width=\"125\" alt=\"Keluar\"fp-title=\"Keluar\"></a></td><td width=\"15\">&nbsp;</td>";}?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style><script language="JavaScript"><!--function FP_preloadImgs() {//v1.0var d=document,a=arguments; if(!d.FP_imgs)

d.FP_imgs=new Array();for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image;

d.FP_imgs[i].src=a[i]; }

Page 142: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

140

}function FP_swapImg() {//v1.0var doc=document,args=arguments,elm,n;doc.$imgSwaps=new Array(); for(n=2; n<args.length;n+=2) { elm=FP_getObjectByID(args[n]); if(elm) {

doc.$imgSwaps[doc.$imgSwaps.length]=elm;elm.$src=elm.src; elm.src=args[n+1]; } }

}function FP_getObjectByID(id,o) {//v1.0var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById)el=o.getElementById(id);else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;if(o.id==id || o.name==id) return o; if(o.childNodes)c=o.childNodes; if(c)for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]);if(el) return el; }f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]);if(el) return el; } }return null;

}// --></script></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/button21.gif',/*url*/'images/button23.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD> </TR><TR><TD><table border="0" width="100%" cellspacing="0"

Page 143: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

141

cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><p align="center">&nbsp;</p><?echo$psn?></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Script di atas berfungsi untuk mengolah data yang dikirim dariformulir pengajuan cuti oleh karyawan. Inti dari script ini adalahpada awal script, yaitu kode-kode php yang menggunakan fungsi-fungsi untuk memasukkan data ke dalam database. Kemudian tag-taghtml yang ada dalam script ini adalah digunakan untuk menampilkanketerangan apakah data pengajuan cuti berhasil dikirim atau gagal.Berikut adalah potongan script yang berfungsi untuk mengakses danmengolah data dalam database :

include"cek.php";include"sambung.php";$d=mysql_query("select * from karyawan where nik='$nik'");$data=mysql_fetch_array($d);$year=date("Y");if($jenis=="besar"){$array="$jenis";$lama=45;}else{$array="th$year";}

Page 144: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

142

$tanggal=mktime(0,0,0, $b, $t, $y);if($lama <= $data[$array]){

Sebelum data dimasukkan ke dalam database, maka data yangdikirim akan diperiksa terlebih dahulu menggunakan fungsi if denganjalan memeriksa apakah pengajuan cuti yang terkirim adalah cutitahunan atau cuti besar. Kemudian dari hasil pemeriksaan inidisimpan ke dalam variabel $array dan variabel $lama.Script berikutnya digunakan untuk memasukkan data dari formulirpengajuan cuti ke dalam database sesuai dengan jenis cuti yangdiambil oleh karyawan tersebut. Berikut adalah potongan script yangberfungsi untuk mengakses dan mengolah data dalam database:

$add=mysql_query("INSERT INTO `data_cuti` ( `id` , `nama` ,`nik` , `nik_atasan` , `nik_support` , `mulai` , `masuk` , `lama` ,`jenis` ,

`alamat` , `alasan` , `catatan` , `tanggal` , `status` , `aktivasi` )VALUES ('', '$data[nama]', '$data[nik]', '$data[nik_atasan]','$data[nik_support]', '$t / $b / $y', '', '$lama', '$array', '$alamat','$alasan', '', '$tanggal', '0', '0'

)");

Data yang telah dikirim dari formulir pengajuan cuti tersebutkemudian disimpan ke dalam database data_cuti menggunakan querydatabase yaitu mysql_query(insert into database).Perintah berikutnya adalah fungsi if dan fungsi echo yang digunakanuntuk menampilkan tag-tag html pada browser dengan isi komentarbahwa data pengajuan cuti telah terkirim ke database atau gagaldikirim karena ada kesalahan pengisian formulir.Berikut adalah tampilan halaman proses_pengajuan cuti.php apabilaseorang karyawan telah mengisi formulir pengajuan cuti online:

Page 145: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

143

Gambar 8.7 Tampilan halaman persetujuan pengajuan cuti.

Pada halaman ini ditampilkan komentar bahwa data pengajuan cutitelah terkirim dan juga ditampilkan dua buah tombol, yaitu tombolHalaman member apabila ditekan maka akan dibawa ke halamandata karyawan dan apabila ditekan tombol keluar akan dialihkan kefile keluar.php yang fungsinya untuk menghapus data sesi.

PROSES PERSETUJUAN PENGAJUAN CUTIYang memberikan persetujuan cuti ini tentunya adalah seorangatasan dari karyawan yang mengajukan cuti. Proses pemberianpersetujuan cuti pun dalam proyek ini akan dilakukan dengan sistemonline, artinya persetujuan dapat diberikan melalui website dari jarakyang jauh dan tanpa harus bertemu dengan karyawan yangmengajukan cuti. Inilah yang dimaksud dengan sistem manajemeninformasi online melalui internet. Keuntungan dengan adanya sistemini adalah :1. Untuk mengajukan cuti, seorang karyawan tidak perlu

mendatangi ruang atau kantor atasannya. Apalagi apabila lokasikantor tidak terletak dalam satu area, misalkan ada kantor pusat

Page 146: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

144

yang ada di kota A dan ada beberapa kantor cabang yangberlokasi di luar daerah.

2. Pengajuan dan persetujuan cuti dapat dilakukan secara realtime,artinya apabila dilakukan pada saat itu maka akan ditampilkanpada saat itu juga.

3. Pencatatan atau administrasi pengajuan cuti dapat diarsipkandengan aman dan rapi tanpa ada kemungkinan rusak atautertinggal di tempat lain.

4. Kemudahan bagi seorang kepala bagian atau seorang atasanuntuk melihat status karyawan bawahannya tanpa harusmencari-cari buku arsip. Untuk melihat atau mengontroladministrasi cuti cukup dengan membuka halaman website cutionline dan dapat dilihat informasi yang up to date.

Langkah-langkah yang dilakukan oleh seorang atasan untuk melihatdan memberikan persetujuan pengajuan cuti oleh karyawannyaadalah :1. Seorang atasan pertama adalah harus membuka halaman website

cuti online dan melakukan login untuk melihat data karyawandibawahnya.

2. Setelah melakukan login, maka akan ditampilkan data karyawanbawahannya baik karyawan yang aktif, sedang cuti maupun yangmengajukan cuti. Berikut adalah gambar tampilan data karyawanyang diakses oleh kepala bagian atau atasan:

Page 147: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

145

Gambar 8.8 Tampilan halaman data karyawan.

Pada halaman data karyawan ini akan ditampilkan datakaryawan yang hanya karyawan bawahannya. Selain itu jugaditampilkan status karyawan yang ditampilkan di tabel bawah,yaitu data karyawan cuti. Pada bagian keterangan akanditampilkan keterangan baru, artinya karyawan tersebut sedangmengajukan cuti dan belum diputuskan disetujui atau tidak.Untuk memberi persetujuan, maka seorang atasan harusmembuka link baru tersebut. Apabila karyawan tersebut disetujui,maka akan ditampilkan pada bagian keterangan sedang cuti danapabila tidak disetujui maka data karyawan cuti tersebut akandihapus dari tabel data karyawan cuti tersebut.Berikut tampilan halaman untuk menyetujui pengajuan karyawancuti oleh atasan:

Klik disini untukmemberi

persetujuan

Page 148: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

146

Gambar 8.9 Tampilan halaman formulir persetujuan pengajuan cuti.

Pada halaman persetujuan ini ditampilkan data pengajuan cutiyang diambil dari pembacaan database data_cuti. Pada halamanini juga ditampilkan sebuah formulir persetujuan yang akan diisioleh karyawan yang mengajukan cuti tersebut. Berikut adalahscript yang digunakan untuk menampilkan halaman persetujuantersebut:

Page 149: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

147

<?include"cek.php";include"sambung.php";$data4=mysql_query("select * from karyawan where nik='$nik'");$d3=mysql_fetch_array($data4);?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/buttonB.gif',/*url*/'images/batal1.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0"cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td><p align="right">&nbsp;&nbsp;<a href="data_karyawan.php"><img border="0" id="img4" src="images/kembali1.gif" height="20"width="150" alt="Kembali ke halaman data karyawan" ></a><a href="keluar.php"><img border="0" id="img5"src="images/buttonA.gif" height="20" width="150"alt="Keluar"></a></td></tr></table><?$data2=mysql_query("select * from data_cuti where id='$id'");$d2=mysql_fetch_array($data2);

Page 150: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

148

$data3=mysql_query("select * from data_karyawan wherenik='$d2[nik]'");$d1=mysql_fetch_array($data3);$data4=mysql_query("select * from karyawan wherenik='$d1[nik_atasan]'");$d4=mysql_fetch_array($data4);echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\"style=\"margin-top: 5px; margin-bottom: 5px\">Halaman DataKaryawan Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataPersonal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d1[tingkat]</td> </tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px;

Page 151: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

149

margin-top: 2px; margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[nik_atasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d1[nik_support]</td></tr>";?><tr><td width="27%" bgcolor="#F5DDB8" align="right"><pstyle="margin-top: 2px; margin-bottom: 2px">&nbsp;</td><tdwidth="73%"><p style="margin-top: 2px; margin-bottom: 2px">&nbsp;</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><pstyle="margin-right: 10px; margin-top: 2px; margin-bottom:2px">&nbsp;</td><td bgcolor="#F5DDB8" width="73%"><pstyle="margin-left: 10px; margin-top: 2px; margin-bottom: 2px">

Jumlah Cuti yang belumdiambil</td>

</tr><?

if($d2[status]=="0"){$d2[status]="Baru";}elseif($d2[status]=="1"){$d2[status]="Sedang Cuti";}else{$d2[status]="Ditolak";}$dt=explode("/", $d2[mulai]);

Page 152: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

150

$dari=mktime(0,0,0, $dt[1], $dt[0],$dt[2]);

$lama=$d2[lama]-1;$hs= ($lama * 86400)+$dari;$dt=date("d / m / Y", $hs);$dt=explode("/", $dt);if($d4[hak_akses]=="1"){$d3[hak_akses]="1";}else{

$d3[hak_akses]="$d3[hak_akses]";}if($d3[hak_akses]=="1" && $s=="new"){$d2[masuk]="<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"tgl\" size=\"3\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\" value=\"$dt[0]\">/<input type=\"text\" name=\"bln\" size=\"3\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\" value=\"$dt[1]\">/<input type=\"text\" name=\"thn\" size=\"5\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\"value=\"$dt[2]\">";$d2[lama]="<input type=\"text\" name=\"lama\" size=\"3\"style=\"color: #000080; font-family: arial; font-size: 12pt; text-align:center\" value=\"$d2[lama]\">";$d2[status]="<input type=\"radio\" value=\"1\" name=\"acc\">Diterima&nbsp;<input type=\"radio\" value=\"2\" name=\"acc\">Ditolak";$d2[catatan]="<textarea rows=\"3\" name=\"catatan\" cols=\"33\"style=\"font-family: Arial; font-size: 12pt; color:#000080\"></textarea>";$act="<formulir method=\"POST\" action=\"proses_detail_cuti.php\">

Page 153: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

151

<input type=\"hidden\" value=\"$id\" name=\"id\"><input type=\"hidden\" value=\"$d2[jenis]\" name=\"jenis\">";$submit="<input type=\"submit\" value=\"PERSETUJUAN CUTI\"name=\"kirim\" style=\"color: #000080; font-family: arial; font-weight:bold\">";}echo"$act<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[besar] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2004] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2005] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2006] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td>

Page 154: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

152

<td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Pengajuan Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Mulai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[mulai]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Selesai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[masuk]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Lama Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d2[lama] hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Jenis Cuti Yang Diambil</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d2[jenis]</td></tr>

Page 155: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

153

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\" valign=\"top\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Alamat Cuti Yang Dapat Dihubungi</td><td width=\"73%\" valign=\"top\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d2[alamat]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"valign=\"top\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Alasan Mengambil Cuti</td><td width=\"73%\" valign=\"top\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[alasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"valign=\"top\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Pengajuan Cuti Karyawan</td><td width=\"73%\" valign=\"top\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[status]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\" valign=\"top\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Catatan</td><td width=\"73%\" valign=\"top\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d2[catatan]</td></tr>";?><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:

2px">&nbsp;</td><td bgcolor="#F5DDB8" width="73%"><p style="margin-left: 10px; margin-top: 5px; margin-bottom: 5px">

<?echo$submit?></form></td>

Page 156: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

154

</tr></table></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD>

</TR></TABLE></BODY></HTML>

Penjelasan script:Langkah pertama dalam menyusun script ini adalah membuatkode-kode php yang berfungsi untuk koneksi dan membaca datayang ada dalam database. Berikut adalah potongan kode php yangmempunyai fungsi koneksi dan membaca data dalam database:

include"sambung.php";$data1=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data1);

Bagian kode php yang pertama adalah membaca databasekaryawan untuk memberikan informasi tentang karyawan yangmengajukan cuti, kemudian ditampilkan menggunakan tag-taghtml dalam halaman website.Script php berikutnya adalah bagian yang berfungsi untukmembaca data yang ada dalam database data_cuti sebagai syaratuntuk membaca database karyawan. Berikut adalah potongan dariscript untuk membaca data_cuti:

$data2=mysql_query("select * from data_cuti where id='$id'");$d2=mysql_fetch_array($data2);$data3=mysql_query("select * from karyawan where nik='$d2[nik]'");$d1=mysql_fetch_array($data3);$data4=mysql_query("select * from karyawan where

Page 157: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

155

nik='$d1[nik_atasan]'");$d4=mysql_fetch_array($data4);$acc="Belum disetujui";}

Tujuan dari script di atas adalah untuk membaca data yang adadalam database data_cuti berdasarkan nik dan nik atasan yangdiabmil dari database karyawan. Data tang telah dibaca denganscript di atas kemudian di tampilkan menggunakan tag-tag htmlberikutnya. Namun pada beberapa bagian tampilan datadibutuhkan script php untuk menyaring data yang akadditampilkan antara lain adalah membedakan status daripengajuan cuti tersebut, misalkan dengan status 0 makapengajuan cuti tersebut masih baru dan belum di periksa olehatasan dan apabila status data cuti tersebut 1 maka pengajuancuti ditolak dan apabila status cuti tersebut 2 maka pengajuancuti telah diterima. Berikut adalah script yang digunakan untukmemeriksa data tersebut:

if($d2[status]=="0"){$d2[status]="Baru";

}elseif($d2[status]=="1"){$d2[status]="Sedang Cuti";

}else{$d2[status]="Ditolak";

}

Script berikutnya adalah fungsi-fungsi yang digunakan untukmengolah data waktu. Berikut adalah potongan script tersebut :

$dt=explode("/", $d2[mulai]);$dari=mktime(0,0,0, $dt[1], $dt[0], $dt[2]);$lama=$d2[lama]-1;$hs= ($lama * 86400)+$dari;$dt=date("d / m / Y", $hs);$dt=explode("/", $dt);if($d4[hak_akses]=="1"){

$d3[hak_akses]="1";

Page 158: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

156

}else{$d3[hak_akses]="$d3[hak_akses]";

}

Dalam potongan script di atas yang pertama adalah menggunakanfungsi explode untuk memecah data string hasil pembacaan fieldmulai dari database data_cuti. Hasil dari fungsi explode ini adalahdata dalam bentuk data array. Kemudian data array ini dijadikandata sumber untuk menciptakan data waktu mikro menggunakanfungsi mktime(). Hasil dari fungsi ini adalah jumlah detik daritanggal 1 januari 1970 jam 00:00:00 (ditetapkan oleh programphp). Dengan menciptakan data waktu mikro ini diharapkandapat dioperasikan dengan penjumlahan lama hari dan mulaipengajuan cuti. Variabel $hs mempunyai nilai lama hari cutidalam bentuk hitungan detik, jadi pada script tersebut dituliskanlama cuti dalam bentuk hari dari pembacaan database data_cutikemudian dikalikan dengan jumlah detik dalam satu hari yaitu86400 detik. Hasilnya kemudian di tambah dengan data waktudalam detik dari penggunaan fungsi mktime(). Sebelumditampilkan ke dalam halaman website data tersebut harusdikonversikan dalam format data tanggal dengan menggunakanfungsi data() dan dipisah lagi sehingga menghasilkan data tanggalbulan dan tahun menggunakan fungsi explode.Proses selanjutnya adalah menampilkan data tersebut menyatudengan tag-tag html sesuai dengan lokasi data akan ditampilkan.

3. Langkah pemberian persetujuan yang ketiga adalah seorangatasan harus mengisi formulir pesetujuan beserta catatan yangada dalam bagian formulir dan yang terakhir adalah menekantombol persetujuan cuti.

SCRIPT PENGOLAH DATA PERSETUJUANCUTI

Data yang terkirim dari formulir persetujuan cuti yang dikirim olehseorang atasan dari formulir tanggapan persetujuan, kemudiandikirim ke file yang berisi script pengolah data persetujuan ini. Fileini diberi nama proses_persetujuan.php.

Page 159: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

157

Berikut adalah script yang digunakan untuk mengolah datapersetujuan cuti dalam file proses_persetujuan.php :

<?include"cek.php";include"sambung.php";$d=mysql_query("select * from karyawan where nik='$nik'");$data=mysql_fetch_array($d);$year=date("Y");if($jenis=="besar"){$array="$jenis";$lama=45;}else{$array="th$year";}$tanggal=mktime(0,0,0, $b, $t, $y);if($lama <= $data[$array]){$add=mysql_query("INSERT INTO `data_cuti` ( `id` , `nama` , `nik` ,`nik_atasan` , `nik_support` , `mulai` , `masuk` , `lama` , `jenis` , `alamat` ,`alasan` , `catatan` , `tanggal` , `status` , `aktivasi` )VALUES ('', '$data[nama]', '$data[nik]', '$data[nik_atasan]', '$data[nik_support]', '$t /$b / $y', '', '$lama', '$array', '$alamat', '$alasan', '', '$tanggal', '0', '0')");if($add){$psn="<p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">Pengajuan cuti yang Anda tulis telah terkirim</p><p align=\"center\"style=\"margin-top: 3px; margin-bottom: 3px\">ke dalam database. Untukmelihat persetujuan Cuti Anda,<br>Silakan Login kembali beberapa jamlagi.</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom:3px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\"><br><a href=\"detail_karyawan.php\"><img border=\"0\"id=\"img1\" src=\"images/button20.gif\" height=\"20\" width=\"125\"alt=\"Halaman Member\" fp-style=\"fp-btn: Metal Rectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fp-transparent: 1; fp-proportional:0\" fp-title=\"Halaman Member\")\"></a>a href=\"keluar.php\"><img

Page 160: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

158

border=\"0\" id=\"img2\" src=\"images/button22.gif\" height=\"20\"width=\"125\" alt=\"Keluar\"></a></td><td width=\"15\">&nbsp;</td>";}}else{$psn="<p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">Pengajuan cuti yang Anda tulis tidak diterima,</p><p align=\"center\"style=\"margin-top: 3px; margin-bottom: 3px\">karena jumlah cuti yangtersisa tidak mencukupi.<br> ulangi lagi.</p><p align=\"center\"style=\"margin-top: 3px; margin-bottom: 3px\">&nbsp;</p><palign=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">br><ahref=\"detail_karyawan.php\"><img border=\"0\" id=\"img1\"src=\"images/button20.gif\" height=\"20\" width=\"125\" alt=\"HalamanMember\" fp-style=\"fp-btn: Metal Rectangle 1; fp-font-color-hover:#FF0000; fp-img-press: 0; fp-transparent: 1; fp-proportional: 0\" fp-title=\"Halaman Member\")\"></a><a href=\"keluar.php\"><imgborder=\"0\" id=\"img2\" src=\"images/button22.gif\" height=\"20\"width=\"125\" alt=\"Keluar\" ></a></td><td width=\"15\">&nbsp;</td>";}?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/button21.gif',/*url*/'images/button23.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0"cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><tdwidth="12">&nbsp;</td><td valign="top"><p align="center">&nbsp;</p><?echo$psn?>

Page 161: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

159

</tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Pada dasarnya script ini adalah berfungsi untuk mengolah data yangdikirim dari formulir persetujuan cuti. Data dari persetujuan cutiyang diisi oleh atasan ini akan dimasukkan ke dalam databasedata_cuti dan merubah status karyawan dari 0 (sedang aktif) menjadi1 (sedang cuti) dalam database karyawan.Susunan script yang pertama adalah cek keberadaan data sesi denganmenggunakan file cek.php dengan memanggilnya menggunakanfungsi include. Kemudian melakukan koneksi ke database dengancara memanggil file koneksi yaitu sambung.php menggunakan fungsiinclude. Berikut adalah potongan script pertama dalam file ini yangberfungsi seperti yang dijelaskan di atas:

include"cek.php";include"sambung.php";$d=mysql_query("select * from karyawan where nik='$nik'");$data=mysql_fetch_array($d);

Data yang dibaca dari database karyawan tersebut kemudiandiperiksa, apakah data cuti yang diambil cuti tahuan atau cuti besarmenggunakan fungsi if seperti pada potongan script di bawah ini:

$year=date("Y");if($jenis=="besar"){$array="$jenis";$lama=45;}else{$array="th$year";

Page 162: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

160

}$tanggal=mktime(0,0,0, $b, $t, $y);

Langkah berikutnya dalam script ini adalah mengirimkan data dariformulir ke dalam database. Berikut adalah potongan script yangberfungsi untuk mengirim data dalam database :

$add=mysql_query("INSERT INTO `data_cuti` ( `id` , `nama` , `nik` ,`nik_atasan` , `nik_support` , `mulai` , `masuk` , `lama` , `jenis` , `alamat` ,`alasan` , `catatan` , `tanggal` , `status` , `aktivasi` )VALUES ('', '$data[nama]', '$data[nik]', '$data[nik_atasan]', '$data[nik_support]', '$t /$b / $y', '', '$lama', '$array', '$alamat', '$alasan', '', '$tanggal', '0', '0')");

Untuk memasukkan data ke dalam database data_cuti menggunakanquery dari mysql, yaitu mysql_query(insert into data_cuti (field)values (value);Penempatan urutan field dan data yang akan dimasukkan harussesuai, misalkan field nama berada diurutan kedua, maka untuk datayang akan dimasukkan juga harus di urutan kedua dalam bagianvalue. Berikut adalah tampilan halaman proses data persetujuan cutisetelah pengajuan cuti disetujui menggunakan tag-tag html:

Gambar 8.10 Tampilan halaman persetujuan pengajuan cuti.

Page 163: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

161

HALAMAN KONFIRMASI PERSETUJUANCUTI KARYAWAN

Halaman persetujuan ini ditujukan untuk karyawan yang telahmengajukan cuti. Data karyawan yang telah mengajukan cuti dantelah ditanggapi oleh atasannya akan disimpan ke dalam halamanpersetujuan ini. Halaman ini hanya dapat diakses oleh karyawanyang mengajukan cuti tersebut. Data yang ada dalam halaman iniadalah data tentang cuti yang diajukan dan persetujuan cuti yangtelah diberikan oleh atasannya, baik disetujui atau ditolak. Untukmelihat hasil tanggapan pengajuan cuti ini, seorang karyawan haruslogin terlebih dahulu dan menekan tombol persetujuan cuti yang adadi bagian atas halaman keanggotaan. Berikut adalah tampilan danposisi tombol persetujuan cuti dalam halaman keanggotaan:

Gambar 8.11 Tombol untuk menampilkan halaman persetujuan cuti.Berikut adalah script yang berfungsi untuk mengakses databasedata_cuti dan data karyawan sekaligus menampilkan pada halamanpersetujuan menggunakan tag-tag html :

<?include"cek.php";

Tombol untuk melihatpersetujuan cuti

Page 164: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

162

include"sambung.php";$data1=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data1);?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/buttonB.gif',/*url*/'images/kembali1.gif', /*url*/'images/button1C.gif',/*url*/'images/button1E.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0CELLSPACING=0>

<TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0"cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0"width="100%" id="table2" cellspacing="0" cellpadding="0"><tr><td><p align="right"><a href="karyawan.php"><img border="0"id="img8" src="images/kembali1.gif" height="20" width="150"alt="Kembali" > <a href="keluar.php"><img border="0" id="img5"src="images/buttonA.gif" height="20" width="150" alt="Keluar" ></a></td></tr></table><?echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><tr><td colspan=\"2\"bgcolor=\"#6799CF\"><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">Halaman Persetujuan Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><tdbgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataPersonal</td></tr>

Page 165: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

163

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Nama</td><td width=\"73%\">

<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left:

10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left:

10px; margin-top: 2px; margin-bottom: 2px\">$d1[tingkat]</td></tr>

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left:10px; margin-top: 2px; margin-bottom: 2px\">$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">NIK Atasan</td><td width=\"73%\"><pstyle=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[nik_atasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:

Page 166: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

164

2px\">$d1[nik_support]</td> </tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\"

width=\"73%\"><p style=\"margin-left: 10px; margin-top:2px; margin-bottom: 2px\">Jumlah Cuti yang belum diambil

</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:

2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[besar] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\"> Tahun 2004</td><td width=\"73%\"><pstyle=\"margin-left:10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2004] Hari</td></tr>

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Tahun 2005</td> <td width=\"73%\"><pstyle=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[th2005] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Tahun 2006</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[th2006] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\">

Page 167: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

165

<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><pstyle=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">Persetujuan Cuti</td></tr>";$data2=mysql_query("select * from data_cuti where nik='$nik' andaktivasi<>'-' order by id desc limit 1");

while($d2=mysql_fetch_array($data2)){if($d2[status]=="1"){$acc="Cuti Diterima";}elseif($d2[status]=="2"){$acc="Cuti Ditolak";$d2[lama]="-";

$d2[masuk]="-";}else{$acc="Belum disetujui";}

echo"<tr><td width=\"27%\" bgcolor=\"#F5DDB8\"align=\"right\"><p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">Pengajuan Cuti Anda</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top:px; margin-bottom: 2px\"><font color=\"#800000\">$acc</font></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px;margin-bottom: 2px\">Mulai Cuti Tanggal</td><tdwidth=\"73%\"><p style=\"margin-left: 10px; margin-top:2px; margin-bottom: 2px\">$d2[mulai]</td></tr>

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:

Page 168: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

166

2px\">Selesai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px;margin-bottom: 2px\">$d2[masuk]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Lama Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[lama] hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jenis Cuti Yang Diambil</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;$d2[jenis]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Alamat Cuti Yang Dapat Dihubungi</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[alamat] </td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Alasan Mengambil Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d2[alasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Catatan</td><td width=\"73%\"><p style=\"margin-left:

10px; margin-top: 2px; margin-bottom: 2px\">$d2[catatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr>

Page 169: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

167

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\" bgcolor=\"#F5DDB8\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"> Cetak dan Aktivasi</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tampilan Cetak</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Tampilan cetak digunakan untuk menampilkan dataatau persetujuan pengajuan cuti, kemudiandicetak ke dalam bentuk cetakan kertas.<p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><a href=\"cetak.php?id=$d2[id]\"><img border=\"0\" id=\"img9\"src=\"images/button1B.gif\" height=\"20\" width=\"125\" alt=\"TampilanCetak\"></a></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Aktivasi</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Apabila Anda mulai aktif kembali atau mengakhiri cuti,Anda dapat mengaktifkan data cuti Anda dengan meng-klik tombolaktivasi <br><a href=\"aktivasi.php?id=$d2[id]\"><img border=\"0\"id=\"img10\" src=\"images/button1D.gif\" height=\"20\" width=\"125\"alt=\"Aktivasi\" ></a></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">&nbsp;</td><td width=\"73%\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 5px; margin-bottom:5px\">&nbsp;</td></tr>";}?></table></td>

Page 170: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

168

<td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Langkah pertama dalam menyusun script ini adalah membuat kode-kode php yang berfungsi untuk koneksi dan membaca data yang adadalam database. Berikut adalah potongan kode php yang berfungsiuntuk koneksi dan membaca data dalam database:

include"sambung.php";$data1=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data1);

Bagian kode php yang pertama adalah membaca database karyawanuntuk memberikan informasi tentang karyawan yang mengajukancuti, kemudian ditampilkan menggunakan tag-tag html dalamhalaman website.Script php berikutnya adalah bagian yang berfungsi untuk membacadata yang ada dalam database data_cuti. Berikut adalah potongandari script untuk membaca data_cuti:

$data2=mysql_query("select * from data_cuti where nik='$nik' andaktivasi<>'-' order by id desc limit 1");

while($d2=mysql_fetch_array($data2)){if($d2[status]=="1"){

$acc="Cuti Diterima";}elseif($d2[status]=="2"){

$acc="Cuti Ditolak";$d2[lama]="-";$d2[masuk]="-";

}else{$acc="Belum disetujui";

}

Page 171: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

169

Tujuan dari script di atas adalah untuk membaca data yang adadalam database data_cuti berdasarkan nik dan aktivasi tidak samadengan “-“. Hasil pembacaan data dari database data_cuti kemudiandiurutkan berdasarkan id. Pada halaman tampilan data karyawancuti ini akan dibedakan berdasarkan dengan status karyawan masing-masing, yaitu apabila mempunyai status 1 maka karyawan tersebutdinyatakan cuti diterima, kemudian untuk kode status 2 makapermohonan cuti karyawan dinyatakan ditolak. Apabila data yang adadalam field status selain 1 dan 2 maka akan dinyatakan pengajuancuti belum disetujui. Data yang telah dibaca akan ditampilkan kedalam sebuah halaman website menggunakan fungsi echo dengan tag-tag html.Berikut adalah tampilan halaman persetujuan cuti yang akan diaksesoleh masing-masing karyawan yang mengajukan cuti:

Gambar 8.12 Halaman persetujuan cuti.

Keteranganpersetujuan cuti

Page 172: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

170

Pada halaman ini akan diinformasikan beberapa bagian, yaitu datapribadi karyawan, jumlah cuti yang belum diambil dan persetujuancuti yang telah diajukan kepada atasannya.Di bagian bawah dari halaman ini ditampilkan dua tombol yaitutombol tampilan cetak dan tombol aktivasi. Tombol tampilan cetakdigunakan untuk menampilkan data dari halaman persetujuan cutiini apabila ingin dicetak ke dalam kertas. Tombol yang kedua adalahtombol aktivasi yaitu digunakan untuk menginformasikan bahwakaryawan tersebut telah aktif kembali. Proses aktivasi atauberakhirnya masa cuti karyawan tidak perlu lagi menemui atasannya,namun cukup menekan tombol aktivasi oleh karyawan itu sendiri.Setelah karyawan aktif kembali, seorang atasan tinggal memeriksastatus karyawan yang telah aktif kembali dari website onlinetersebut.

TAMPILAN CETAK PERSETUJUAN CUTITampilan cetak ini hanya digunakan untuk menampilkan formatcetak untuk halaman persetujuan cuti. Kadang seorang administratormembutuhkan arsip data dalam bentuk cetakan kertas. Dari alasantersebut di atas maka halaman persetujuan cuti format cetak inidibuat. Berikut adalah script yang digunakan untuk menyusunhalaman tampilan cetak persetujuan cuti :

<?session_start();include"cek.php";include"sambung.php";$d=mysql_query("select * from karyawan where nik='$nik'");$data=mysql_fetch_array($d);$d2=mysql_query("select * from data_cuti where nik='$nik' order by iddesc limit 1");$data2=mysql_fetch_array($d2);$d3=mysql_query("select * from karyawan wherenik='$data[nik_atasan]'");$data3=mysql_fetch_array($d3);

Page 173: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

171

$d4=mysql_query("select * from karyawan wherenik='$data[nik_support]'");$data4=mysql_fetch_array($d4);if($data2[status]=="1"){$kep="Disetujui";$data2[lama]=$data2[lama];$mulai="<b>$data2[mulai]</b> s/d <b>$data2[masuk]</b>";}else{$kep="Tidak Disetujui";$data2[lama]="-";$mulai ="-";}?><html><head><title>Laporan Cuti Karyawan</title></head><body><table border="0" width="656" cellspacing="0" cellpadding="0"id="table2"><tr><td>&nbsp;</td><td colspan="2"><p align="center" style="margin-top: 5px; margin-bottom: 5px"><br><font size="4">PERMOHONAN / LAPORAN CUTIKARYAWAN</font></p><p align="center" style="margin-top: 5px; margin-bottom:5px">&nbsp;</p><p align="center" style="margin-top: 5px; margin-bottom:5px">&nbsp;</p><p align="left" style="margin-top: 5px; margin-bottom: 5px">A. <u>DATAPEGAWAI</u></p><table border="0" width="100%" cellspacing="0" cellpadding="0"id="table3"><?echo"<tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom: 5px\">1.&nbsp; N a m a /NIK</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">:

Page 174: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

172

$data[nama]&nbsp;/&nbsp; $data[nik]</td></tr><tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom: 5px\">2. Tingkat</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">:$data[tingkat]</td></tr><tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom:5px\">3. Jabatan</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">:$data[jabatan]</td></tr><tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom: 5px\">4. Tempat Bekerja</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">: Area$data[posisi]</td></tr><tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom: 5px\">5. Lama Cuti</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">: $data2[lama] harikerja</td></tr><tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom:5px\">6. Alamat Cuti</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">:$data2[alamat]</td></tr><tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom:5px\">7. Alasan Cuti&nbsp; *)</td><td><p style=\"margin-top: 5px; margin-bottom: 5px\">:$data2[alasan]</td></tr><tr><td width=\"160\">&nbsp;</td><td><table border=\"0\" width=\"105%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table4\"><tr><td width=\"215\"><p style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</td><td valign=\"bottom\"><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\">Madiun, $data2[tanggal]<br>Pemohon,</p>

Page 175: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

173

<p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\"><u>$data[nama]<br></u>NIK : $data[nik]<br>&nbsp;</td></tr></table></td></tr><tr><td colspan=\"2\"><p style=\"margin-top: 5px; margin-bottom: 5px\">B. <u>CATATANPEJABAT KEPEGAWAIAN</u></td></tr><tr><td colspan=\"2\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"id=\"table5\"><tr><td width=\"375\" valign=\"top\"><p style=\"margin-top: 5px; margin-bottom: 5px\">$data2[catatan]</td><td valign=\"bottom\"><palign=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\"><spanstyle=\"text-transform: uppercase\">ss. support</span><br></p><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\"><u>$data4[nama]<br></u>&nbsp;NIK :$data[nik_support]<br>&nbsp;</td></tr></table></td></tr><tr><td colspan=\"2\"><p style=\"margin-top: 5px; margin-bottom: 5px\">C. <u>KEPUTUSAN /PENETAPAN PEJABAT YANG BERWENANG</u></td></tr><tr><td colspan=\"2\"><p style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;&nbsp;&nbsp;&nbsp;$kep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selama :&nbsp;&nbsp;&nbsp;&nbsp; ( <b>$data2[lama]</b> ) harikerja<br>&nbsp;&nbsp;&nbsp;&nbsp; Mulai tanggal&nbsp;&nbsp;&nbsp;$mulai</td></tr>

Page 176: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

174

<tr><td width=\"160\"><p style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</td><td><table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table6\"><tr><td width=\"205\"><p style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</td><td valign=\"bottom\"><p align=\"center\" style=\"margin-top: 5px;margin-bottom: 5px\"><br>Pejabat yang berwenang<br></p><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom:5px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\"><u>$data3[nama]<br></u>NIK : $data[nik_atasan]</td></tr></table></td></tr><tr><td width=\"160\">&nbsp;</td><td>&nbsp;</td></tr>";?></table><p align="left">&nbsp;<p align="left">&nbsp;<p align="left">*)Diisi untuk Cuti Alasan Penting<br>&nbsp;&nbsp;&nbsp; dan Cuti diluarTanggungan Perusahaan.<hr></td></tr><tr><td width="36">&nbsp;</td><td width="299">REVISI : 01</td><td width="321"><p align="right">01 - 09 - 1999</td></tr></table></body></html>

Penjelasan script:Pada dasarnya script ini hanya berfungsi untuk membaca datapersetujuan cuti dalam database kemudian ditampilkan ke dalamhalaman html sederhana. Halaman ini hanya menampilkan data tekstanpa grafis yang rumit dan bermacam-macam warna. Tujuan darihalaman ini dibuat hanya digunakan untuk dicetak ke dalam kertas.Berikut adalah tampilan halaman cetak persetujuan cuti:

Page 177: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

175

Gambar 8.13 Halaman tampilan cetak persetujuan cuti.

Page 178: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

176

Untuk mencetak halaman ini menjadi sebuah arsip, cukup sederhanadan tidak perlu program yang lain. Yaitu setelah halamanditampilkan kemudian pilih menu File dan pilih menu Print, sehinggaakan ditampilkan jendela print seperti pada gambar di bawah ini :

Gambar 8.14 Jendela Print.

Langkah berikutnya adalah tekan tombol Print pada jendela Printtersebut, apabila printer sudah siap maka proses mencetak ke dalamkertas akan segera dijalankan.

AKTIVASI KARYAWAN CUTI

Untuk kembali aktif atau mengakhiri masa cuti dapat dilakukansendiri oleh karyawan yang sedang cuti tersebut. Langkah yang harus

Page 179: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

177

dilakukan oleh karyawan yang sedang cuti dan akan aktif kembaliadalah membuka halaman persetujuan cuti, kemudian menekantombol aktivasi yang ada di bawah dari halaman tersebut. Setelahmenekan tombol tersebut, maka akan diarahkan ke halaman aktivasi.Berikut adalah script yang digunakan untuk menampilkan halamanaktivasi tersebut :<?include"cek.php";include"sambung.php";$data1=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data1);?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/buttonB.gif',/*url*/'images/batal1.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0"cellpadding="0" background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td><p align="right">&nbsp;&nbsp;<a href="karyawan.php"><img border="0" id="img4" src="images/batal2.gif" height="20"width="150" alt="Batal" ></a><a href="keluar.php"><img border="0" id="img5"

Page 180: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

178

src="images/buttonA.gif" height="20" width="150" alt="Keluar"></a></td></tr></table><?echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><formulir method=\"POST\"action=\"proses_aktivasi.php\"><tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\">Halaman Aktivasi </td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataPersonal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[tingkat]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">

Page 181: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

179

NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik_atasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik_support]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><pstyle=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Jumlah Cuti yang belum diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[besar] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"> $d1[th2004] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"> $d1[th2005]Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2006]Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:

Page 182: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

180

2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><pstyle=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Aktivasi</td></tr>";$data2=mysql_query("select * from data_cuti where nik='$nik' order by iddesc limit 1");while($d2=mysql_fetch_array($data2)){

if($d2[status]=="1"){$acc="Cuti Diterima";}elseif($d2[status]=="2"){$acc="Cuti Ditolak";$d2[lama]="-";$d2[masuk]="-";}else{$acc="Belum disetujui";}

echo"<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Mulai cuti tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d2[mulai]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Aktif kembali pada tanggal</td><td width=\"73%\"><p style=\"margin-left:10px; margin-top: 2px; margin-bottom: 2px\">$d2[masuk]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Jumlah Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d2[lama] </td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\"align=\"right\">&nbsp;</td><td width=\"73%\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><pstyle=\"margin-left: 10px; margin-top: 5px; margin-bottom: 5px\"><input type=\"hidden\" value=\"$id\" name=\"id\"><input type=\"submit\"value=\"AKTIF KEMBALI\" name=\"kirim\" style=\"color: #000080; font-family: arial; font-weight: bold\"></td></tr>

Page 183: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

181

</form></table>";}?></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Dengan script ini akan ditampilkan sebuah halaman yangmenginformasikan tentang karyawan dan data cuti yang sedangberjalan. Script pertama adalah membaca database tentang karyawantersebut yaitu pada bagian potongan script paling awal dari script ini.

include"cek.php";include"sambung.php";$data1=mysql_query("select * from karyawan where nik='$nik'");$d1=mysql_fetch_array($data1);

Seperti script sebelumnya adalah untuk melakukan koneksi dengandatabase adalah menggunakan file sambung.php. Kemudian untukmembaca data karyawan menggunakan query mysql.Untuk menampilkan pada browser dalam script di atas adalahmenggunakan tag-tag html.Yang perlu diperhatikan dalam halaman ini adalah tombol aktifkembali pada bagian bawah dari halaman ini. Tombol ini dibuatdengan tag html khususnya menggunakan form.Berikut adalah tampilan halaman aktivasi setelah mengakhiri masacuti :

Page 184: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

182

Gambar 8.15 Halaman aktivasi.

Perhatikan pada bagian bawah halaman aktivasi ini, yangmenampilkan tombol dari obyek formulir yang namanya adalahAKTIF KEMBALI. Tombol tersebut digunakan untuk memberikaninformasi bahwa karyawan yang sedang cuti mulai aktif kembali.

Page 185: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

183

Setelah tombol tersebut ditekan, maka akan diarahkan ke fileprosesaktivasi.php sebagai file yang memproses data karyawan untukmengubah status cuti menjadi aktif kembali. Berikut script yang adadalam file prosesaktivasi.php :

<?include"cek.php";include"sambung.php";$update=mysql_query("update data_karyawan set status='0' wherenik='$nik'");$update1=mysql_query("update data_cuti set aktivasi='-' where id='$id'");?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style><script language="JavaScript"><!--function FP_preloadImgs() {//v1.0var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image;

d.FP_imgs[i].src=a[i]; }}

function FP_swapImg() {//v1.0var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array();

for(n=2; n<args.length;n+=2) { elm=FP_getObjectByID(args[n]); if(elm) {

doc.$imgSwaps[doc.$imgSwaps.length]=elm;

Page 186: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

184

elm.$src=elm.src; elm.src=args[n+1]; } }}

function FP_getObjectByID(id,o) {//v1.0var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById)

el=o.getElementById(id);else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return

el; } }return null;

}// --></script></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/button21.gif',/*url*/'images/button23.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR><TD>

<IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD>

</TR><TR>

<TD><table border="0" width="100%" cellspacing="0"

cellpadding="0" background="images/tkm_02.gif" id="table1"><tr>

<td width="12">&nbsp;</td><td valign="top">

Page 187: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

185

<p align="center">&nbsp;</p><p align="center" style="margin-top: 3px; margin-

bottom: 3px">&nbsp;</p><p align="center" style="margin-top: 3px; margin-

bottom: 3px">Terimakasih, Anda telah aktif kembali<p

align="center" style="margin-top: 3px; margin-bottom: 3px"><br><br><a href="karyawan.php"><img border="0" id="img1"

src="images/button20.gif" height="20" width="125" alt="HalamanMember" ></a>

<a href="keluar.php"><img border="0" id="img2"

src="images/button22.gif" height="20" width="125" alt="Keluar"></a></td>

<td width="15">&nbsp;</td></tr>

</table></TD>

</TR><TR>

<TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45

ALT=""></TD></TR>

</TABLE></BODY></HTML>

Penjelasan script:Script inti dalam halaman ini adalah kode html yang ada di awalscript, yaitu:

include"cek.php";include"sambung.php";

Page 188: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

186

$update=mysql_query("update data_karyawan set status='0' wherenik='$nik'");$update1=mysql_query("update data_cuti set aktivasi='-' where id='$id'");

Script ini berfungsi untuk merubah status karyawan dalam databasekaryawan yaitu field status menjadi 0 dan juga mengubah data cutiyang ada dalam database data_cuti pada field aktivasi dengan nilai“-“. Untuk script berikutnya adalah menampilkan informasikonfirmasi bahwa aktivasi telah dijalankan. Setelah tombol aktivasiditekan maka akan ditampilkan halaman konfirmasi seperti padagambar berikut:

Gambar 8.16 Halaman konfirmasi aktivasi.

SCRIPT UNTUK MENGGANTI PASSWORD

Dalam proyek administrasi pengajuan cuti online karyawan ini jugamenyediakan fasilitas untuk mengganti password oleh tiap-tiapkaryawan yang bersangkutan. Hal ini dilakukan untuk memberikanprivasi karyawan yang bersangkutan atas data pribadi masing-masing. Untuk mengganti password, seorang karyawan harusmelakukan login terlebih dahulu. Pada halaman data karyawan ini

Page 189: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

187

akan ditampilkan sebuah formulir untuk mengganti password dibawah halaman ini. Berikut adalah tampilan formulir untukmengganti password tersebut:

Gambar 8.17 Formulir untuk mengganti password.

Pada formulir password ini akan otomatis terisi data password yangtelah ada sebelumnya. Untuk mengganti password, seorang karyawancukup mengisi password baru pada kotak isian ini dan menekantombol “Klik disini untuk ubah password Anda” yang berada disebelah kanan kotak isian password.Berikut adalah potongan script yang digunakan untuk membuatformulir ganti password tersebut:<?Echo”<formulir method=\"POST\" action=\"ubah_password.php\"><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p

Page 190: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

188

style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Password</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;<!--webbot bot=\"Validation\" b-value-required=\"TRUE\" i-maximum-length=\"8\" --><input type=\"text\"name=\"pass\" size=\"17\" style=\"color: #000080; font-family: arial; font-size: 12pt\" value=\"$d1[password]\" maxlength=\"8\"><inputtype=\"submit\" value=\"Klik Disini Untuk Ubah Password Anda\"name=\"kirim\" style=\"color: #000080; font-family: arial; font-weight:bold\"></td></tr><input type=\"hidden\" value=\"$d1[nik]\" name=\"id\"></form>”;?>

Penjelasan script:Script di atas dibentuk dengan tag-tag html dan ditampilkan dengankode php. Pada script formulir ini mengandung beberapa obyek, yangpertama adalah action dengan nilai ubah_password.php. Artinyaapabila tombol submit ditekan maka data yang diisikan dalamformulir akan dikirim ke halaman ubah_password.php. Obyekberikutnya adalah kotak teks dengan nama pass. Kotak teks inimempunyai nilai atau value data password yang diambil daripembacaan database karyawan yang bersangkutan. Obyek lain yangada dalam formulir tersebut adalah submit yang akan menjadi sebuahtombol dan sebuah obyek hidden yang mempunyai nilai nik darikaryawan tersebut.Setelah password baru diketik kemudian data password baru tersebutakan dikirim ke halaman ubah_password.php dengan script pengolahdata seperti di bawah ini:

<?include"./cek.php";include"./sambung.php";$edit=mysql_query("update karyawan set password='$pass' wherenik='$id'");if($edit){echo"<HTML><HEAD>

Page 191: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

189

<TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background=\"./images/bg.gif\"onload=\"FP_preloadImgs(/*url*/'./images/lanjut2.gif')\"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC=\"./images/tkm_01.gif\" WIDTH=800 HEIGHT=158ALT=\"\"></TD></TR><TR><TD><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"background=\"./images/tkm_02.gif\" id=\"table1\"><tr><td width=\"12\">&nbsp;</td><td valign=\"top\"><p align=\"center\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">Password Anda telah diubah menjadi<br><b>$pass</b><p align=\"center\" style=\"margin-top: 3px; margin-bottom:3px\">&nbsp;<p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">Untuk kembali ke halaman data karyawan<br>Klik tombol berikutini<br><br><a href=\"data_karyawan.php\"><img border=\"0\" id=\"img1\"src=\"./images/lanjut1.gif\" height=\"20\" width=\"125\" alt=\"LANJUT\"></a></td><td width=\"15\">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC=\"./images/tkm_05.gif\" WIDTH=800 HEIGHT=45ALT=\"\"></TD></TR></TABLE></BODY></HTML>";}?>

Penjelasan script:Inti dari script di atas adalah mengubah data password lama yang adadalam database karyawan diganti dengan password baru yang dikirim

Page 192: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

190

dari formulir ubah password. Script yang berfungsi untuk mengubahdata password tersebut adalah:

include"./sambung.php";$edit=mysql_query("update karyawan set password='$pass' wherenik='$id'");

Perintah yang digunakan adalah update dengan tujuan mengubah isidari database karyawan pada field password dengan nilai baru dariformulir $pass dengan filter atau syarat field nik adalah nilai darivariabel $id.Setelah proses mengubah data password lama dengan data passwordyang baru, maka pada halaman ini akan ditampilkan konfirmasibahwa data password telah diubah dengan data password yang baruseperti pada gambar berikut :

Gambar 8.18 Konfirmasi bahwa password telah diubah..

ARSIP CUTI TIAP KARYAWANData cuti yang pernah diambil oleh tiap karyawan akan disimpan didalam database sebagai arsip dan laporan di tiap akhir periode. Dataarsip cuti ini hanya dapat diakses oleh atasan, kepala bagian dankaryawan itu sendiri. Cara mengakses data arsip cuti ini adalahsetiap karyawan harus login dan menekan tombol arsip cuti yang ada

Page 193: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

191

di menu atas pada halaman data karyawan. Halaman arsip cutikaryawan ini menampilkan data cuti yang pernah diambilberdasarkan waktu pengambilan cuti. Berikut adalah script yangdigunakan untuk menampilkan halaman arsip cuti karyawan:

<?include"cek.php";?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/buttonB.gif',/*url*/'images/kembali.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0" cellpadding="0"background="images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td><p align="right">&nbsp; <ahref="karyawan.php"><img border="0" id="img7"src="images/kembali1.gif" height="20" width="150" alt="Kembali"></a><a href="keluar.php"><img border="0" id="img5" src="images/buttonA.gif" height="20"width="150" alt="Keluar" ></a></td></tr></table><?include"sambung.php";$data=mysql_query("select * from karyawan where nik='$id'");$d1=mysql_fetch_array($data);if($d1[status]=="0"){

Page 194: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

192

$d1[status]="Aktif";}else{$d1[status]="Cuti";}echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\"style=\"margin-top: 5px; margin-bottom: 5px\">Data cuti yang pernah diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp;DataPersonal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">

Page 195: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

193

<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">Jumlah cuti yang belum diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[besar] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top:2px; margin-bottom: 2px\">$d1[th2004] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"> $d1[th2005] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2006] Hari</td></tr>";?><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td><tdwidth="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:2px">&nbsp;</td><td bgcolor="#F5DDB8" width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px">Arsipcuti yang pernah diambil</td></tr><tr><td width="100%" bgcolor="#CEE4FD" align="right" colspan="2"><pstyle="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"align="left">Untuk melihat data cuti secara lengkap, silakan klik padabagian keterangan (detail) pada masing masing data cuti yang pernah

Page 196: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

194

diambil</p><table border="0" width="100%" cellspacing="0" cellpadding="0"id="table4"><tr><td bgcolor="#6799CF" width="133"><p style="margin-top: 2px;margin-bottom: 2px"> Jenis Cuti</td><td bgcolor="#6799CF"><pstyle="margin-top: 2px; margin-bottom: 2px"> Tanggal Cuti</td><td bgcolor="#6799CF" width="114"><p style="margin-top: 2px; margin-bottom: 2px"> Jumlah Cuti</td><td bgcolor="#6799CF" width="256"><p style="margin-top: 2px; margin-bottom: 2px">Alasan Mengambil Cuti</td><td bgcolor="#6799CF" width="117">Keterangan</td></tr><?$data2=mysql_query("select * from data_cuti where nik='$id' andstatus='1' order by mulai");while($d2=mysql_fetch_array($data2)){echo"<tr><td width=\"133\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\">&nbsp;$d2[jenis]</td><td valign=\"top\" bgcolor=\"#F5DDB8\"style=\"border-bottom: 1px solid #FFFFFF\">$d2[mulai]</td><td width=\"114\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"> $d2[lama] hari</td><td width=\"256\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"> $d2[alasan]</td><td width=\"117\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"><p align=\"center\"><a href=\"detail_arsip.php?id=$d2[id]\">Detail</a></td></tr>";}?></table></td></tr><tr>

Page 197: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

195

<td width="100%" bgcolor="#CEE4FD" align="right" colspan="2"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"align="left">&nbsp;</td></tr><tr><td width="100%" bgcolor="#F5DDB8" align="right" colspan="2"><pstyle="margin-left: 10px; margin-top: 0; margin-bottom:0">&nbsp;</td></tr></table></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Dalam script ini membaca data personal karyawan dan membaca datacuti yang pernah diambil selama menjadi karyawan dalam setiapperiode. Yang pertama dalam script di atas adalah membaca datakaryawan yaitu membaca database yang ada dalam databasekaryawan. Berikut adalah potongan script yang membaca datakaryawan tersebut:

include"sambung.php";$data=mysql_query("select * from karyawan where nik='$id'");$d1=mysql_fetch_array($data);if($d1[status]=="0"){$d1[status]="Aktif";}else{$d1[status]="Cuti";}

Setelah membaca database karyawan dan menampilkan status aktifatau cuti dengan menggunakan fungsi if, kemudian ditampilkanmenggunakan tag-tag html.

Page 198: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

196

Tahap berikutnya adalah membaca data cuti yang ada dalamdatabase data_cuti. Pembacaan data cuti ini berdasarkan field nik,yaitu nik dari karyawan yang sedang membuka halaman tersebut.Data yang telah dibaca kemudian ditampilkan semua. Berikut adalahpotongan script yang berfungsi membaca dan menampilkan data arsipcuti tersebut:

$data2=mysql_query("select * from data_cuti where nik='$id' andstatus='1' order by mulai");while($d2=mysql_fetch_array($data2)){echo"<tr><td width=\"133\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\">&nbsp;$d2[jenis]</td><td valign=\"top\" bgcolor=\"#F5DDB8\"style=\"border-bottom: 1px solid #FFFFFF\">$d2[mulai]</td><td width=\"114\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"> $d2[lama] hari</td><td width=\"256\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"> $d2[alasan]</td><td width=\"117\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid #FFFFFF\"><p align=\"center\"><a href=\"detail_arsip.php?id=$d2[id]\">Detail</a></td></tr>";}

Script di atas yang pertama adalah membaca database data_cutidengan menggunakan perintah query select berdasarkan field nikadalah id dan field status bernilai 1. Pembacaan data diurutkanberdasarkan field mulai.Untuk menampilkan data sera berurutan dan berulang-ulang sampaidata dibaca dan ditampilkan semua menggunakan fungsi while. Dataditampilkan menggunakan tag-tag html yang ada dalam fungsi while.Berikut adalah tampilan halaman arsip cuti tiap-tiap karyawan:

Page 199: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

197

Gambar 8.19 Halaman arsip cuti karyawan.

Perhatikan pada tampilan halaman arsip cuti tersebut, bagian atasdari halaman ini ditampilkan data personal dari karyawan yanghbersangkutan dan bagian bawah ditampilkan daftar cuti yang pernahdiambil. Tiap-tiap arsip cuti pada bagian keterangan adalah sebuahlink yang digunakan untuk membuka keterangan detail ditiap-tiapdata cuti.

HALAMAN DETAIL ARSIP CUTIYang disebut dengan halaman detail cuti dalam proyek ini adalahsebuah halaman yang menampilkan data secara detail pada tiap-tiapcuti yang pernah diambil oleh seorang karyawan. Halaman ini dapatdibuka apabila seorang karyawan yang sudah membuka halamanarsip cuti. Setelah ditampilkan halaman data arsip cuti kemudiandalam tiap data cuti dapat dilihat sebuah link yang ada di bagianketerangan. Dengan menekan link ini maka akan ditampilkanhalaman detail cuti dari arsip cuti.

Page 200: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

198

Berikut adalah script yang digunakan untuk membuat halaman detailcuti tersebut:

<?include"cek.php";include"sambung.php";$data4=mysql_query("select * from karyawan where nik='$nik'");$d3=mysql_fetch_array($data4);?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style><script language="JavaScript"><!--function FP_preloadImgs() {//v1.0var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image;

d.FP_imgs[i].src=a[i]; }}

function FP_swapImg() {//v1.0var doc=document,args=arguments,elm,n; doc.$imgSwaps=new Array();

for(n=2; n<args.length;n+=2) { elm=FP_getObjectByID(args[n]); if(elm) {

doc.$imgSwaps[doc.$imgSwaps.length]=elm;elm.$src=elm.src; elm.src=args[n+1]; } }

}

Page 201: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

199

function FP_getObjectByID(id,o) {//v1.0var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById)

el=o.getElementById(id);else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)for(n=0; n<c.length; n++) { el=FP_getObjectByID(id,c[n]); if(el) return el; }f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;for(m=0; m<els.length; m++){ el=FP_getObjectByID(id,els[n]); if(el) return

el; } }return null;

}// --></script></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="images/bg.gif"onload="FP_preloadImgs(/*url*/'images/buttonB.gif',/*url*/'images/batal1.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR><TD>

<IMG SRC="images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD>

</TR><TR>

<TD><table border="0" width="100%" cellspacing="0"

cellpadding="0" background="images/tkm_02.gif" id="table1"><tr>

<td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2"

cellspacing="0" cellpadding="0"><tr>

Page 202: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

200

<td><p align="right">&nbsp;&nbsp;<a href="data_karyawan.php"><img border="0" id="img4"

src="images/kembali1.gif" height="20" width="150" alt="Kembali kehalaman data karyawan" ></a>

<a href="keluar.php"><img border="0" id="img5"

src="images/buttonA.gif" height="20" width="150" alt="Keluar"></a></td>

</tr></table>

<?$data2=mysql_query("select * from

data_cuti where id='$id'");$d2=mysql_fetch_array($data2);$data3=mysql_query("select * from

data_karyawan where nik='$d2[nik]'");$d1=mysql_fetch_array($data3);$data4=mysql_query("select * from

data_karyawan where nik='$d1[nik_atasan]'");$d4=mysql_fetch_array($data4);

echo"<table border=\"0\" width=\"100%\"cellspacing=\"0\" cellpadding=\"0\" id=\"table3\">

<tr><td colspan=\"2\"

bgcolor=\"#6799CF\"><p align=\"center\" style=\"margin-

top: 5px; margin-bottom: 5px\">Halaman Data Karyawan Cuti</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\">&nbsp;</td>

<td bgcolor=\"#F5DDB8\"width=\"73%\">&nbsp;&nbsp; Data

Page 203: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

201

Personal</td></tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[nama]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[nik]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[tingkat]</td>

</tr><tr>

Page 204: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

202

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[jabatan]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[posisi]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[nik_atasan]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;

Page 205: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

203

margin-top: 2px; margin-bottom: 2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[nik_support]</td>

</tr>";?><tr>

<td width="27%"bgcolor="#F5DDB8" align="right">

<p style="margin-top: 2px; margin-bottom: 2px">&nbsp;</td>

<td width="73%"><p style="margin-top: 2px; margin-

bottom: 2px">&nbsp;</td></tr><tr>

<td width="27%"bgcolor="#F5DDB8" align="right">

<p style="margin-right: 10px;margin-top: 2px; margin-bottom: 2px">&nbsp;</td>

<td bgcolor="#F5DDB8"width="73%">

<p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px">

Jumlah Cuti yang belumdiambil</td>

</tr><?

if($d2[status]=="0"){$d2[status]="Baru";}elseif($d2[status]=="1"){$d2[status]="Sedang Cuti";}else{

Page 206: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

204

$d2[status]="Ditolak";}$dt=explode("/", $d2[mulai]);$dari=mktime(0,0,0, $dt[1], $dt[0], $dt[2]);$lama=$d2[lama]-1;$hs= ($lama * 86400)+$dari;$dt=date("d / m / Y", $hs);$dt=explode("/", $dt);if($d4[hak_akses]=="1"){$d3[hak_akses]="1";}else{$d3[hak_akses]="$d3[hak_akses]";}if($d3[hak_akses]=="1" && $s=="new"){$d2[masuk]="<p style=\"margin-left:

10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"tgl\" size=\"3\" style=\"color: #000080; font-

family: arial; font-size: 12pt; text-align: center\" value=\"$dt[0]\">/

<input type=\"text\" name=\"bln\" size=\"3\" style=\"color: #000080; font-family: arial; font-size: 12pt; text-align: center\" value=\"$dt[1]\">

/<input type=\"text\" name=\"thn\" size=\"5\" style=\"color: #000080; font-family: arial; font-size: 12pt; text-align: center\"value=\"$dt[2]\">";

$d2[lama]="<input type=\"text\"name=\"lama\" size=\"3\" style=\"color: #000080; font-family: arial;font-size: 12pt; text-align: center\" value=\"$d2[lama]\">";

$d2[status]="<input type=\"radio\"value=\"1\" name=\"acc\">

Diterima&nbsp;<input type=\"radio\" value=\"2\" name=\"acc\">

Ditolak";$d2[catatan]="<textarea rows=\"3\"

name=\"catatan\" cols=\"33\" style=\"font-family: Arial;

Page 207: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

205

font-size: 12pt; color: #000080\"></textarea>";$act="<formulir method=\"POST\"

action=\"proses_detail_cuti.php\"><input type=\"hidden\" value=\"$id\" name=\"id\">

<input type=\"hidden\"value=\"$d2[jenis]\" name=\"jenis\">";$submit="<input type=\"submit\" value=\"PERSETUJUAN CUTI\"name=\"kirim\" style=\"color: #000080; font-family: arial; font-weight:bold\">";

}

echo"$act<tr><td width=\"27%\"

bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px;

margin-top: 2px; margin-bottom: 2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[besar]Hari</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[th2004]Hari</td>

</tr><tr>

Page 208: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

206

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[th2005]Hari</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d1[th2006]Hari</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;</td>

<td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;

Page 209: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

207

margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\"

width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">Pengajuan Cuti</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">

Mulai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d2[mulai]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Selesai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d2[masuk]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Lama Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

Page 210: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

208

top: 2px; margin-bottom: 2px\">$d2[lama]hari</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Jenis Cuti Yang Diambil</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-

top: 2px; margin-bottom: 2px\">$d2[jenis]</td>

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\" valign=\"top\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Alamat Cuti Yang DapatDihubungi</td><td width=\"73%\" valign=\"top\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">

$d2[alamat]</td></tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\" valign=\"top\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Alasan Mengambil Cuti</td><td width=\"73%\" valign=\"top\">

<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">

$d2[alasan]</td>

Page 211: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

209

</tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\" valign=\"top\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">Pengajuan Cuti Karyawan</td><td width=\"73%\" valign=\"top\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">

$d2[status]</td></tr><tr>

<td width=\"27%\"bgcolor=\"#F5DDB8\" align=\"right\" valign=\"top\">

<p style=\"margin-right: 10px;margin-top: 2px; margin-bottom: 2px\">

Catatan</td><td width=\"73%\" valign=\"top\">

<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">

$d2[catatan]</td></tr>";?><tr>

<td width="27%"bgcolor="#F5DDB8" align="right">

<p style="margin-right: 10px;margin-top: 2px; margin-bottom: 2px">&nbsp;</td>

<td bgcolor="#F5DDB8"width="73%">

<p style="margin-left: 10px; margin-top: 5px; margin-bottom: 5px"><?echo$submit?></form></td>

</tr></table>

</td>

Page 212: PHP Dan MySQL Studi Kasus Database Karyawan

File Program Utama Bab 8

210

<td width="15">&nbsp;</td></tr>

</table></TD>

</TR><TR><TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45

ALT=""></TD></TR>

</TABLE></BODY></HTML>

Penjelasan script:Bagian awal script ini adalah membaca database karyawanberdasarkan nik karyawan yang sedang membuka halaman ini.Kemudian data yang telah dibaca dari database karyawan iniditampilkan kedalam awal halaman sebagai data personal karyawan.Berikut adalah potongan script yang membaca data karyawantersebut:

$data4=mysql_query("select * from karyawan where nik='$nik'");$d3=mysql_fetch_array($data4);

Script yang perlu diperhatikan lagi adalah bagian yangmendeklarasikan apakah karyawan tersebut berstatus sedang cutiatau sedang aktif. Sumber data yang digunakan untuk menentukanstatus ini adalah dari database karyawan dan dideklarasikanmenggunakan fungsi if. Berikut adalah script yang berfungsi untukmenyaring data status dan mendeklarasikan ke dalam halamandetail_cuti.php:if($d2[status]=="0"){$d2[status]="Baru";}elseif($d2[status]=="1"){$d2[status]="Sedang Cuti";}else{$d2[status]="Ditolak";}

Page 213: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 8 File Program Utama

211

Untuk menampilkan data yang telah dibaca dari database karyawankemudian ditampilkan dalam browser dengan tag-tag html.Berikut adalah tampilan detail dari halaman detail_cuti karyawanyang bersangkutan:

Gambar 8.20 Halaman detail arsip cuti karyawan.

Page 214: PHP Dan MySQL Studi Kasus Database Karyawan

213

Setiap program dan website membutuhkan fasilitas administratoryang dapat mengelola isi atau data yang ada di dalam programtersebut. Administrator adalah user atau pengguna yang mempunyaihak akses paling tinggi dalam sebuah program. Administratorbertanggungjawab atas data yang ada dalam program tersebut.Fungsi dari administrator ini adalah sebuah solusi pemecahanpermasalahan dalam lingkup pengolahan data pada program ini.Misalkan dalam pengisian data karyawan dalam program ini adakesalahan dan perlu diperbaiki, maka seorang administrator sangatdibutuhkan untuk memperbaiki kesalahan yang terjadi.Script-script administrator disimpan dalam file-file yang disimpandalam sebuah folder tersendiri diberi nama admin. File utama dalamfolder admin ini adalah index.php. Apabila file index.php ini dipanggilmenggunakan browser, maka akan ditampilkan sebuah halaman yangberisikan formulir untuk login. Berikut adalah tampilan halamanindex.php sebagai file utama untuk mengakses halamanadministrator:

Page 215: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

214

Gambar 9.1. Tampilan halaman utama administrator.

Setiap user sebagai administrator yang akan masuk ke halamanadministrator harus memasukkan user id dan password. User yangmembuka halaman ini harus memiliki hak akses penuh sebagaiadministrator. Berikut adalah script yang digunakan untukmembentuk halaman index.php:

<HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0

Page 216: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

215

MARGINWIDTH=0 MARGINHEIGHT=0 background="../images/bg.gif"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="../images/tkm_01.gif" WIDTH=800 HEIGHT=158 ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0" cellpadding="0"background="../images/tkm_02.gif" id="table1"><tr><td width="215">&nbsp;</td><td valign="top"><p align="center">&nbsp;</p><form method="POST" action="admin.php"><table border="0" width="100%" cellspacing="1" id="table2"height="99"><tr><td colspan="2"><p align="center" style="margin-top: 3px; margin-bottom: 3px"><b><font face="Arial">LOGIN ADMINISTRATOR</font></b></td></tr><tr><td width="37%" align="right"><p style="margin-top: 3px; margin-bottom: 3px">User ID</td><td width="61%"><p style="margin-top: 3px; margin-bottom: 3px">:<input type="text" name="user" size="20" style="color: #000080; font-family: arial; font-size: 12pt"></td></tr><tr><td width="37%" align="right">

Page 217: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

216

<p style="margin-top: 3px; margin-bottom: 3px">Password</td><td width="61%"><p style="margin-top: 3px; margin-bottom: 3px">:<input type="password" name="password" size="20" style="color:#000080; font-family: arial; font-size: 12pt"></td></tr><tr><td width="37%"><p style="margin-top: 3px; margin-bottom:3px">&nbsp;</td><td width="61%"><p style="margin-top: 3px; margin-bottom: 3px"><input type="submit" value=" L O G I N " name="login" style="font-family:Arial; color: #000080; font-size: 10pt; font-weight: bold"></td></tr></table></form><p align="center" style="margin-top: 3px; margin-bottom: 3px"><br><br>&nbsp;</td><td width="200">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="../images/tkm_05.gif" WIDTH=800 HEIGHT=45 ALT=""></TD></TR></TABLE></BODY></HTML>

Page 218: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

217

Penjelasan script:Yang perlu diperhatikan dalam menyusun script ini adalah menyusunbagian tag-tag formulir. Pada formulir ini memiliki beberapa obyekyang harus dibuat dengan benar. Yang pertama adalah obyek action,obyek action dalam sebuah formulir adalah parameter yangmempunyai nilai lokasi dan nama file tujuan apabila tombol submitditekan. Secara otomatis data yang ada dalam obyek-obyek yang lainakan terkirim ke file tujuan tersebut.

<form method="POST" action="admin.php">

Nilai dari obyek action dalam formulir login tersebut adalahadmin.php. Artinya apabila userid dan password telah diisi dantombol Login ditekan, maka data yang ada dalam formulir logintersebut akan dikirim ke file admin.php.Obyek yang ke dua adalah kotak teks dengan tipe text dan diberinama user. Obyek ini digunakan untuk menuliskan data user id olehadministrator.

<input type="text" name="user" size="20" style="color: #000080; font-family: arial; font-size: 12pt">

Script ini apabila dijalankan pada browser akan membentuk sebuahkotak teks dengan nama user.Obyek yang ke tiga adalah kotak teks juga dengan nama password.Tipe dari kotak teks ini adalah password. Dengan membuat kotakteks dengan tipe password ini, maka data yang dituliskan ke dalamkotak teks ini akan ditampilkan dengan karakter tertentu sehinggadata tidak terbaca seperti karakter yang diketikkan.

<input type="password" name="password" size="20" style="color:#000080; font-family: arial; font-size: 12pt">

Script ini apabila dijalankan menggunakan browser, maka akanditampilkan sebagai kotak teks yang akan digunakan untuk menulispassword administrator.Obyek yang terakhir adalah sebuah tombol dengan tipe submit.Tombol ini digunakan untuk menjalankan formulir sehingga dataakan terkirim ke file admin.php. Tombol submit ini diberi nama login

Page 219: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

218

dan memiliki nilai atau value LOGIN. Nilai dari tombol ini nantinyaakan ditampilkan di dalam tombol, yaitu LOGIN.

<input type="submit" value=" L O G I N " name="login" style="font-family:Arial; color: #000080; font-size: 10pt; font-weight: bold">

Kemudian script formulir ini ditutup dengan tag </form> sebagaibatas akhir dari sebuah formulir.

HALAMAN ADMINHalaman admin disusun dengan script php dan tag-tag html. Scriptphp dalam halaman ini berfungsi untuk mengakses database danmemanipulasi data yang telah dibaca dari database. Tag-tag htmlberfungsi untuk menampilkan halaman dan data yang telah diaksesdalam bentuk grafis. Pada awal script dalam halaman admin inidisusun oleh script php yang fungsinya mengakses data dari databaseadmin. Database admin digunakan untuk menampung data user danpassword administrator. Berikut adalah script yang ada dalam fileadmin.php:

<?session_start();include"../sambung.php";$admin=mysql_query("select * from admin where id='1'");$user2=mysql_fetch_array($admin);if($user==$user2[user] && $password==$user2[password]){session_register("password");header("location:./administrator.php");exit;}?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE>

Page 220: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

219

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="../images/bg.gif"onload="FP_preloadImgs(/*url*/'../images/buttonF.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="../images/tkm_01.gif" WIDTH=800 HEIGHT=158 ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0" cellpadding="0"background="../images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><p align="center">&nbsp;</p><p align="center">&nbsp;</p><p align="center" style="margin-top: 3px; margin-bottom: 3px">User ID atau Password yang Anda masukkan salah,</p><p align="center" style="margin-top: 3px; margin-bottom: 3px">Silakan ulangi lagi</p><br><center><a href="javascript:history.back();">

Page 221: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

220

<img border="0" id="img1" src="../images/buttonE.gif"height="20" width="125" alt="ULANGI" fp-style="fp-btn:Metal Rectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0;fp-transparent: 1; fp-proportional: 0" fp-title="ULANGI"

onmouseover="FP_swapImg(1,0,/*id*/'img1',/*url*/'../images/buttonF.gif')" onmouseout="FP_swapImg(0,0,/*id*/'img1',/*url*/'../images/buttonE.gif')"></a></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="../images/tkm_05.gif" WIDTH=800 HEIGHT=45 ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Pada awal script di atas diawali dengan kode-kode php yaitu fungsisession() yang berfungsi untuk mendeklarasikan bahwa dalamhalaman ini mengandung data sesi yang akan diciptakan. Kemudiandibawahnya adalah fungsi include untuk memanggil file sambung.phpyang di dalamnya terdapat script untuk koneksi dengan databaseMySQL. Script berikutnya adalah query SQL yang berfungsi untukmembaca database admin yaitu data user dan password untukadministrator. Potongan script tersebut adalah :

session_start();include"../sambung.php";$admin=mysql_query("select * from admin where id='1'");$user2=mysql_fetch_array($admin);

Page 222: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

221

Data user dan password hasil pembacaan dari database adminkemudian disimpan ke dalam beberapa variabel. Jenis data yangdihasilkan adalah data array. Berikut adalah data user dan datapassword yang telah dihasilkan :

$user2[user]=”administrator”;$user2[password]=”passwordku”;

Maksud dari script di atas adalah data user yang telah dibaca daridatabase admin disimpan di dalam variabel $user2[user] dengan nilai“administrator” dan data password disimpan ke dalam variabel$user2[password] dengan nilai password “passwordku”.Langkah berikutnya dalam script halaman admin.php ini akanmenyaring atau membandingkan data hasil pembacaan dari databaseadmin dengan data yang telah dikirim dari formulir login dalamhalaman index.php (halaman utama administrator). Fungsi yangdigunakan untuk membandingkan kedua data ini adalah fungsi logikaif else. Berikut adalah script yang digunakan untuk membandingkankedua data tersebut dengan fungsi if else :

if($user==$user2[user] && $password==$user2[password]){session_register("password");header("location:./administrator.php");exit;}

Maksud dari potongan script di atas adalah apabila data padavariabel $user dari formulir login sama dengan data dalam variabel$user2[user], dan data yang ada dalam variabel $password samadengan data yang ada dalam variabel $user2[password], maka datayang ada dalam variabel $password akan didaftarkan sebagai datasesi dengan fungsi:session_register("password");

Kemudian administrator dialihkan membuka file administrator.phpmenggunakan fungsi :header("location:./administrator.php");

Apabila data user dan password yang dikirim dari formulir login tidaksama dengan data hasil pembacaan dari database admin, maka akan

Page 223: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

222

ditampilkan pesan kesalahan yang disusun dengan tag-tag html dariscript dibawahnya, seperti yang tampak pada Gambar 9.2 berikut :

Gambar 9.2 Komentar kesalahan memasukkan password pada administrator

HALAMAN ADMINISTRATORPada halaman ini ditampilkan beberapa link yang digunakan untukmembuka halaman-halaman administrator yang lain, seperti halamanuntuk menambah data karyawan dan halaman untuk mengubah datakaryawan. Namun sebelum menampilkan isi dari halamanadministrator ini keberadaan data sesi akan diperiksa terlebihdahulu. Hal ini dilakukan untuk menolak user lain selainadministrator yang akan membuka halaman ini. Script yangdigunakan untuk memeriksa keberadaan data sesi ini ada dalam filecek.php. Jadi urutan kerja script dalam halaman administrator iniadalah memanggil file cek.php, berikutnya mengakses database danmenampilkan halaman administrator pada browser. Berikut adalahscript yang ada dalam halaman administrator.php:

<?include"../cek.php";include"../sambung.php";$admin=mysql_query("select * from admin order by id limit 1");$user2=mysql_fetch_array($admin);

Page 224: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

223

?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="../images/bg.gif"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR><TD>

<IMG SRC="../images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD>

</TR><TR>

<TD><table border="0" width="100%" cellspacing="0"

cellpadding="0" background="../images/tkm_02.gif" id="table1"><tr>

<td width="10">&nbsp;</td><td valign="top"><p align="center"><a

href="data_karyawan.php">Lihat DataKaryawan</a></p><p align="center"><a

href="input_data.php">TambahData Karyawan</a></p>

Page 225: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

224

<p align="center">Ubah Password</p><form method="POST"

action="ubah_password.php"><center><table border="1" width="43%"

cellspacing="0" cellpadding="0" id="table2"><tr>

<td align="center" colspan="2"bgcolor="#80A6D2">

<p align="center">Ubah User ID danPassword</p>

</td></tr><tr>

<td align="right">UserID Baru</td><td align="left"><!--webbot bot="Validation" B-

Value-Required="TRUE" I-Maximum-Length="10" --><input type="text" name="user_baru"

size="20" style="color: #000080; font-family: arial; font-size: 12pt"maxlength="10"></td>

</tr><tr>

<td align="right">PasswordBAru</td>

<td align="left"><!--webbot bot="Validation" B-

Value-Required="TRUE" I-Maximum-Length="10" --><input type="text" name="password_baru"

size="20" style="color: #000080; font-family: arial; font-size: 12pt"maxlength="10"></td>

</tr><tr>

<td align="right">&nbsp;</td><td align="left">

<input type="submit" value="UBAH"

Page 226: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

225

name="submit" style="color: #000080; font-family: arial"></td></tr>

</table><input type="hidden" name="id"

value="<?echo"$user2[id]"?>"></form><p align="center"><a

href="keluar.php">Keluar</a></td><td width="15">&nbsp;</td>

</tr></table>

</TD></TR><TR>

<TD><IMG SRC="../images/tkm_05.gif" WIDTH=800 HEIGHT=45

ALT=""></TD></TR>

</TABLE></BODY></HTML>

Penjelasan script:Susunan script pada halaman administrator ini diawali dengan kode-kode php yang berfungsi sebagai autorisasi keberadaan data sesi.Berikut potongan script php tersebut:

<?include"../cek.php";include"../sambung.php";$admin=mysql_query("select * from admin order by id limit 1");$user2=mysql_fetch_array($admin);?>

Apabila data sesi password ditemukan, maka akan ditampilkanhalaman administrator yang berisikan beberapa link dan formulir

Page 227: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

226

untuk mengganti user baru dan password baru. Berikut adalahtampilan halaman administrator.php:

Gambar 9.3 Halaman administrator.php

HALAMAN DATA KARYAWANHalaman data karyawan diakses dari link lihat data karyawan yangada dalam halaman administrator. Halaman data karyawan inimenampilkan data karyawan dan data cuti yang pernah diambil olehkaryawan secara keseluruhan. Berikut adalah script yang digunakanuntuk membentuk halaman data karyawan :

<?session_start();?><HTML><HEAD><meta http-equiv="Content-Language" content="en-us"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;

Page 228: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

227

charset=windows-1252"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="../images/bg.gif"onload="FP_preloadImgs(/*url*/'../images/button3.gif',/*url*/'../images/buttonB.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="../images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0" cellpadding="0"background="../images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td colspan="5"><p align="right"><a href="input_data.php"><img border="0" id="img1" src="../images/button2.gif" height="20"width="150" alt="Tambah Data" ></a><a href="keluar.php"><img border="0" id="img5" src="../images/buttonA.gif" height="20"width="150" alt="Keluar" ></a></td></tr><tr><td colspan="5">Data Karyawan</td>

Page 229: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

228

</tr><tr><td width="26%" bgcolor="#6799CF">Nama</td><td width="23%" bgcolor="#6799CF">Jabatan</td><td width="17%" bgcolor="#6799CF">Posisi</td><td width="17%" bgcolor="#6799CF">Status</td><td width="17%" bgcolor="#6799CF">Keterangan</td></tr><?include"../sambung.php";$data2=mysql_query("select * from karyawan order by nama");while($d1=mysql_fetch_array($data2)){if($d1[status]=="0"){$d1[status]="Aktif";}else{$d1[status]="Cuti";}echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">&nbsp;".$d1[nama]."</td><td width=\"23%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">".$d1[jabatan]."</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">".$d1[posisi]."</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">".$d1[status]."</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\"><p align=\"center\"><a href=\"ubah_data.php?id=".$d1[id]."&nik=".$d1[nik]."\">UBAH</a> ||<a href=\"proses_ubah_data.php?id=".$d1[id]."&act=del\">

Page 230: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

229

HAPUS</a> </td></tr>";}?><tr><td width="26%">&nbsp;</td><td width="23%">&nbsp;</td><td width="17%">&nbsp;</td><td width="17%">&nbsp;</td><td width="17%">&nbsp;</td></tr><tr><td width="26%">Data Karyawan Cuti</td><td width="23%">&nbsp;</td><td width="17%">&nbsp;</td><td width="17%">&nbsp;</td><td width="17%">&nbsp;</td></tr><tr><td width="26%" bgcolor="#6799CF">Nama</td><td width="23%" bgcolor="#6799CF">N I K</td><td width="17%" bgcolor="#6799CF">Mulai Cuti</td><td width="17%" bgcolor="#6799CF">Jumlah Cuti</td><td width="17%" bgcolor="#6799CF">Keterangan</td></tr><?$data2=mysql_query("select * from data_cuti order by nama");while($d2=mysql_fetch_array($data2)){echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom:1px solid #FFFFFF\">$d2[nama]</td><td width=\"23%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[nik]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid

Page 231: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

230

#FFFFFF\">$d2[mulai]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[jumlah] hari</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\"><p align=\"center\"><a href=\"detail_cuti.php?id=$d2[id]\">Lihat Detail</a></td></tr>";}?></table></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="../images/tkm_05.gif" WIDTH=800 HEIGHT=45 ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan script:Struktur dari script halaman data karyawan ini dibentuk oleh kode-kode php dan tag-tag html. Script php digunakan untuk mengaksesdata yang ada dalam database karyawan dan data_cuti, kemudiandata tersebut diolah dan ditampilkan di halaman data karyawanmenggunakan tag-tag html. Yang perlu diperhatikan dalam script diatas adalah kode-kode php yang berfungsi mengakses dan membacadatabase karyawan seperti pada potongan script di bawah ini :

include"../sambung.php";$data2=mysql_query("select * from karyawan order by nama");while($d1=mysql_fetch_array($data2)){if($d1[status]=="0"){$d1[status]="Aktif";}else{

Page 232: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

231

$d1[status]="Cuti";}

Script bagian ini berfungsi untuk melakukan koneksi dengandatabase karyawan dan membaca data karyawan. Hasil pembacaandata karyawan ini disimpan ke dalam variabel $d1 dengan tipe dataarray. Khusus data yang dibaca dari field status akan dijadikan filteruntuk menampilkan status karyawan, yaitu sedang aktif atau sedangcuti. Tahap berikutnya adalah menampilkan data hasil pembacaandari database karyawan ini ke dalam halaman data karyawan dengancara menyisipkan pada bagian-bagian tag-tag html.Kode php berikutnya adalah digunakan untuk melakukan koneksidengan database data cuti. Hal ini dilakukan untuk menampilkanseluruh arsip cuti dari seluruh karyawan yang tercatat dalamdatabase.Berikut adalah kode-kode php yang berfungsi untuk membaca datacuti dan sekaligus menampilkan dalam halaman data karyawan:

$data2=mysql_query("select * from data_cuti order by nama");while($d2=mysql_fetch_array($data2)){echo"<tr><td width=\"26%\" bgcolor=\"#F5DDB8\" style=\"border-bottom:1px solid #FFFFFF\">$d2[nama]</td><td width=\"23%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[nik]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[mulai]</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\">$d2[jumlah] hari</td><td width=\"17%\" bgcolor=\"#F5DDB8\" style=\"border-bottom: 1px solid#FFFFFF\"><p align=\"center\"><a href=\"detail_cuti.php?id=$d2[id]\">Lihat Detail</a></td></tr>";}

Page 233: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

232

Fungsi yang pertama untuk membaca database menggunakanperintah query dari MySQL. Kemudian data ditampilkanmenggunakan fungsi echo yang ada di dalam fungsi while sebagaiperintah pengulangan menampilkan data cuti karyawan sebanyakrecord yang ada dalam database.Berikut adalah tampilan halaman data karyawan tersebut:

Gambar 9.4 Halaman data karyawan administrator.

Jika diperhatikan pada tampilan halaman data karyawan ini setiapbagian keterangan data karyawan ditampilkan link UBAH danHAPUS. Kedua link tersebut digunakan untuk mengubah data danmenghapus data karyawan yang bersangkutan. Kemudian di bagiandata karyawan cuti pada bagian keterangan di masing-masing datakaryawan cuti juga ditampilkan sebuah link dengan nama Lihat

Page 234: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

233

Detail dengan tujuan untuk melihat data cuti secara detail danapabila ada kesalahan, maka dapat diperbaiki oleh administrator.

UBAH DATA KARYAWANHalaman ubah data karyawan ini digunakan untuk menampilkandata karyawan tertentu ke dalam formulir dengan tujuan untukmengubah data yang salah menjadi data yang benar atau baru. Caramembuka halaman ini yaitu dengan membuka link UBAH di sebelahkanan data karyawan pada halaman data karyawan administrator.Berikut adalah script untuk menampilkan halaman ubah datakaryawan tersebut:

<?include"../cek.php";?><HTML><HEAD><TITLE>Website Cuti Online</TITLE></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background="../images/bg.gif"onload="FP_preloadImgs(/*url*/'../images/buttonB.gif',/*url*/'../images/lihat2.gif')"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><IMG SRC="../images/tkm_01.gif" WIDTH=800 HEIGHT=158ALT=""></TD></TR><TR><TD><table border="0" width="100%" cellspacing="0" cellpadding="0"background="../images/tkm_02.gif" id="table1"><tr><td width="12">&nbsp;</td><td valign="top"><table border="0" width="100%" id="table2" cellspacing="0"cellpadding="0"><tr><td><p align="right"><a href="data_karyawan.php">

Page 235: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

234

<img border="0" id="img1" src="../images/lihat1.gif" height="20"width="150" alt="Lihat Data" ></a><a href="keluar.php"><img border="0" id="img5" src="../images/buttonA.gif" height="20"width="150" alt="Keluar" ></a></td></tr></table><?include"../sambung.php";$dat=mysql_query("select * from data_karyawan where id='$id'");$d=mysql_fetch_array($dat);echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><form method=\"POST\" action=\"proses_ubah_data.php\"><tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\"style=\"margin-top: 5px; margin-bottom: 5px\">Masukkan DataKaryawan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataKaryawan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nama\" size=\"37\" style=\"color: #000080;font-family: arial; font-size: 12pt\" value=\"$d[nama]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nik_baru\" size=\"21\"style=\"color: #000080; font-family: arial; font-size: 12pt\"value=\"$d[nik]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><input type=\"text\"name=\"tingkat\" size=\"21\" style=\"color: #000080; font-family: arial;font-size: 12pt\" value=\"$d[tingkat]\"></td></tr>

Page 236: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

235

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"jabatan\" size=\"29\" style=\"color: #000080;font-family: arial; font-size: 12pt\" value=\"$d[jabatan]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><select size=\"1\" name=\"posisi\" style=\"color: #000080; font-family: arial; font-size: 12pt\"><option selectedvalue=\"Madiun\">Madiun</option><optionvalue=\"Ponorogo\">Ponorogo</option><optionvalue=\"Magetan\">Magetan</option><optionvalue=\"Ngawi\">Ngawi</option><optionvalue=\"Nganjuk\">Nganjuk</option><optionvalue=\"Kediri\">Kediri</option><optionvalue=\"Bojonegoro\">Bojonegoro</option><option value=\"Tuban\">Tuban</option></select></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIKAtasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nik_atasan\" size=\"21\"style=\"color: #000080; font-family: arial; font-size: 12pt\"value=\"$d[nik_atasan]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIKSupport</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><input type=\"text\" name=\"nik_support\" size=\"21\" style=\"color:#000080; font-family: arial; font-size: 12pt\"value=\"$d[nik_support]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

Page 237: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

236

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Status</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"radio\" value=\"0\" name=\"status\"checked>Aktif&nbsp;&nbsp;<input type=\"radio\" value=\"1\" name=\"status\">Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">HakAkses</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><select size=\"1\" name=\"akses\" style=\"color: #000080; font-family:arial; font-size: 12pt\"><option selected value=\"0\">Karyawanbiasa</option><option value=\"1\">Atasan</option><option value=\"2\">Support</option><option value=\"22\">Wakil Support</option><option value=\"11\">Wakil Atasan</option></select></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">Jumlah Cuti yang belum diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"besar\" size=\"6\"style=\"color: #000080; font-family: arial; font-size: 12pt; text-align:center\" value=\"$d[besar]\">

Page 238: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

237

Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"th2004\" size=\"6\"style=\"color: #000080; font-family: arial; font-size: 12pt; text-align:center\" value=\"$d[th2004]\">Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"th2005\" size=\"6\"style=\"color: #000080; font-family: arial; font-size: 12pt; text-align:center\" value=\"$d[th2005]\">Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><input type=\"text\" name=\"th2006\" size=\"6\" style=\"color:#000080; font-family: arial; font-size: 12pt; text-align: center\"value=\"$d[th2006]\">Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">Password untuk login karyawan bersangkutan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Password</td><tdwidth=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;<!--webbot bot=\"Validation\" b-value-required=\"TRUE\" i-maximum-length=\"8\" --><input type=\"text\" name=\"pass\" size=\"17\"style=\"color: #000080; font-family: arial; font-size: 12pt\"

Page 239: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

238

value=\"$d[password]\" maxlength=\"8\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><font color=\"#FF0000\">Maksimal8 karakter</font></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\"align=\"right\">&nbsp;</td><td width=\"73%\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 5px; margin-bottom:5px\"><input type=\"submit\" value=\" K I R I M \" name=\"kirim\"style=\"color: #000080; font-family: arial; font-weight: bold\"></td></tr><input type=\"hidden\" value=\"$d[id]\" name=\"id\"></form></table>";?></td><td width="15">&nbsp;</td></tr></table></TD></TR><TR><TD><IMG SRC="../images/tkm_05.gif" WIDTH=800 HEIGHT=45ALT=""></TD></TR></TABLE></BODY></HTML>

Penjelasan Script:Pada script tersebut banyak didominasi tag-tag html pembentukformulir. Dalam formulir ini terdapat beberapa obyek, antara lainkotak teks, option dan drop down. Nilai yang ada di dalam masing-masing obyek ini adalah data karyawan yang akan diubah datanya.Data yang ditampilkan tersebut diambil dari database karyawan yangdibaca menggunakan kode-kode php.Berikut adalah potongan script php yang berfungsi untuk mengaksesdan membaca data karyawan dalam script di atas:

Page 240: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

239

include"../sambung.php";$dat=mysql_query("select * from data_karyawan where id='$id'");$d=mysql_fetch_array($dat);

Pembacaan data karyawan dalam database karyawan tersebutberdasarkan field id dengan nilai sama dengan nilai yang ada dalamvariabel $id.Field id dalam database karyawan menjadi index,sehingga setiap pembacaan berdasarkan field id akan menghasilkandata record tunggal. Hasil pembacaan tersebut kemudian ditampilkanmenggunakan perintah echo ke dalam nilai tiap-tiap obyek dalamformulir ubah data karyawan sesuai dengan namanya. Berikut adalahtampilan halaman ubah data karyawan:

Gambar 9.5 Halaman ubah data karyawan administrator.

Page 241: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

240

Pada halaman ini apabila Anda perhatikan adalah sebuah formuliryang berisikan data karyawan tertentu. Untuk mengubah datakaryawan cukup mengganti data yang akan diubah dan menekantombol KIRIM pada bagian bawah formulir. Setelah tombol KIRIM,data baru yang ada di formulir tersebut akan dikirim ke file yangberisikan script untuk mengolah data karyawan yang telah diubahtersebut.

SCRIPT PROSES UBAH DATA KARYAWANScript ini disimpan ke dalam sebuah file dengan namaproses_ubah_data.php. File ini dijadikan nilai action dari formulirubah data pada halaman ubah_data.php yang telah dibahassebelumnya. Fungsi utama dari script ini adalah melakukan koneksidengan database karyawan dan mengubah atau meng-update datakaryawan tertentu dari data lama diganti dengan data baru yangtelah diubah dari formulir ubah data karyawan sebelumnya. Berikutadalah script proses ubah data tersebut:<?include"../cek.php";include"../sambung.php";if($act=="del"){$del=mysql_query("delete from karyawan where id='$id'");}else{$add=mysql_query("UPDATE karyawan set nama='$nama' ,nik='$nik_baru' , tingkat='$tingkat' , jabatan='$jabatan' ,posisi='$posisi' , nik_atasan='$nik_atasan' , nik_support='$nik_support' ,status='$status' , hak_akses= '$akses', besar='$besar' , th2004='$th2004' ,th2005='$th2005' , th2006='$th2006' , password='$pass' where id='$id'");}header("location:./data_karyawan.php");?>

Penjelasan script:Pada script di atas diawali dengan memanggil file cek.php sebagaiotorisasi keberadaan data sesi. Apabila data sesi tidak ditemukan

Page 242: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

241

maka proses ubah data akan dibatalkan dan dialihkan ke halamanindex.php yang berisikan formulir untuk login. Perintah berikutnyaadalah memanggil file sambung.php untuk melakukan koneksidengan database. Karena script ini juga sebagai referensi untukmenghapus data karyawan, maka digunakan juga fungsi if sebagaipemisah operasi menghapus data dan mengubah data. Jika darihalaman sebelumnya mengandung variabel $act dengan nilai “del”,maka perintah penghapusan data akan dilakukan. Jika dari halamansebelumnya tidak mempunyai variabel $act dengan nilai “del”, makaperintah mengubah data akan dilaksanakan. Berikut adalah potonganscript yang berfungsi mengubah data karyawan tersebut :$add=mysql_query("UPDATE karyawan set nama='$nama' ,nik='$nik_baru' , tingkat='$tingkat' , jabatan='$jabatan' ,posisi='$posisi' , nik_atasan='$nik_atasan' , nik_support='$nik_support' ,status='$status' , hak_akses= '$akses', besar='$besar' , th2004='$th2004' ,th2005='$th2005' , th2006='$th2006' , password='$pass' where id='$id'");

Perintah untuk mengubah data dalam database adalah perintahquery UPDATE. Kemudian diikuti nama database dan nama field-field dengan nilai baru.Pada akhir script ini, tuliskan fungsi header dengan nilai“location:./admin.php”, artinya apabila proses perubahan data selesaimaka akan langsung diarahkan untuk membuka halaman admin.php.

PROSES MENGHAPUS DATA KARYAWANMenghapus data karyawan dari database kadang perlu dilakukanapabila seorang karyawan telah meninggalkan perusahaan. Pekerjaanini akan dilakukan oleh seorang administrator. Proses menghapusdata karyawan ini diawali dari membuka data karyawan. Setiapdaftar data karyawan yang ditampilkan akan diberikan sebuah linkHAPUS untuk menghapus data karyawan yang bersangkutan.Berikut adalah tampilan link HAPUS dari data karyawan dalamhalaman data karyawan:

Page 243: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

242

Gambar 9.6 Link untuk menghapus data karyawan.

Nilai link HAPUS tersebut adalah:http://localhost/karyawan/admin/proses_ubah_data.php?id=5&act=delMaksud dari link di atas adalah file yang dituju dari link hapusadalah proses_ubah_data.php yang mempunyai dua atribut yaitu iddengan nilai 5 dan atribut act dengan nilai del.Kedua atribut tersebut pada script yang ada dalam fileproses_ubah_data.php adalah sebagai filter untuk prosespenghapusan data karyawan. Berikut script yang berfungsi untukmenghapus data karyawan:

<?include"../cek.php";include"../sambung.php";if($act=="del"){$del=mysql_query("delete from karyawan where id='$id'");}else{$add=mysql_query("UPDATE karyawan set nama='$nama' ,nik='$nik_baru' , tingkat='$tingkat' , jabatan='$jabatan' ,posisi='$posisi' , nik_atasan='$nik_atasan' , nik_support='$nik_support' ,status='$status' , hak_akses= '$akses', besar='$besar' , th2004='$th2004' ,th2005='$th2005' , th2006='$th2006' , password='$pass' where id='$id'");}header("location:./data_karyawan.php");?>

Link untukmenghapus data

Page 244: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

243

Penjelasan script:Yang perlu diperhatikan dalam script di atas adalah fungsi if yangmempunyai filter variabel $act dengan nilai “del”. Variabel ini diambildari atribut link HAPUS, artinya Jika variabel $act tersebut adamaka perintah yang akan dijalankan dalam script ini adalah querySQL delete. Kemudian atribut id dengan nilai 5 digunakan untukfilter penghapusan record di database karyawan yaitu data yang akandihapus adalah data karyawan yang berada dalam databasekaryawan pada field id dengan nilai 5. Untuk lebih jelasnyaperhatikan potongan script untuk menghapus data tersebut:

$del=mysql_query("delete from karyawan where id='$id'");

UBAH DATA CUTI KARYAWANFasilitas untuk mengubah data cuti karyawan ini digunakan untukmengubah data cuti yang diisi oleh karyawan yang mengajukan cutidan pengisian persetujuan cuti yang diisi oleh atasan. Pengubahandata cuti ini hanya dapat dilakukan oleh administraor. Hal inidilakukan untuk mengantisipasi kecurangan yang dilakukan olehpemakai program. Pengubahan data cuti karyawan ini diawali darimembuka halaman detail cuti karyawan dari link yang ada dihalaman admin. Setelah link dibuka maka akan ditampilkan data cutikaryawan seperti pada Gambar 9.6 berikut :

Page 245: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

244

Gambar 9.7 Data detail karyawan untuk diubah.

Script yang digunakan untuk menampilkan data cuti karyawantersebut adalah sebagai berikut :

<table border="0" width="100%" cellspacing="0" cellpadding="0"id="table3"><?include"../sambung.php";$data=mysql_query("select * from data_cuti where id='$id'");

Page 246: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

245

$d2=mysql_fetch_array($data);$data1=mysql_query("select * from karyawan where nik='$d2[nik]'");$d1=mysql_fetch_array($data1);if($d2[status]=="0"){$d2[status]="Baru";}elseif($d2[status]=="1"){$d2[status]="Diterima";}else{$d2[status]="Ditolak";}echo"<tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\">Halaman Karyawan Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataPersonal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-

Page 247: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

246

right: 10px; margin-top: 2px; margin-bottom: 2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[tingkat]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIKAtasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[nik_atasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIKSupport</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[nik_support]</td></tr>";?>

Page 248: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

247

<tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-top: 2px; margin-bottom: 2px">&nbsp;</td><td width="73%"><p style="margin-top: 2px; margin-bottom:2px">&nbsp;</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:2px">&nbsp;</td><td bgcolor="#F5DDB8" width="73%"><p style="margin-left: 10px;margin-top: 2px; margin-bottom: 2px">Jumlah Cuti yang belumdiambil</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">CutiBesar</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d1[besar]?>Hari</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:2px">Tahun 2004</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d1[th2004]?>Hari</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Tahun 2005</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d1[th2005]?>Hari</td></tr><tr>

Page 249: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

248

<td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:2px">Tahun 2006</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d1[th2006]?>Hari</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:2px">&nbsp;</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom:2px">&nbsp;</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td><td bgcolor="#F5DDB8" width="73%"><p style="margin-left: 10px;margin-top: 2px; margin-bottom: 2px">Persetujuan Cuti</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Pengajuan Cuti Anda</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d2[status]?></td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Mulai Cuti Tanggal</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d2[mulai]?></td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-

Page 250: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

249

right: 10px; margin-top: 2px; margin-bottom: 2px">Selesai Cuti Tanggal</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d2[masuk]?></td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Lama Cuti</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom:2px"><?echo$d2[lama]?>hari</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Jenis Cuti Yang Diambil</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;<?echo$d2[jenis]?></td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Alamat Cuti Yang Dapat Dihubungi</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d2[alamat]?> </td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">Alasan Mengambil Cuti</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom:2px"><?echo$d2[alasan]?></td></tr><tr>

Page 251: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

250

<td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom:2px">Catatan</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px"><?echo$d2[catatan]?></td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td></tr><tr><td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td><td bgcolor="#F5DDB8" width="73%"><form method="POST"action="ubah_cuti.php"><input type="hidden" value="<?echo$id?>"name="id"><p style="margin-right: 10px; margin-top: 2px; margin-bottom: 2px"><input type="submit" value="UBAH DATA" name="ubah"style="color: #000080; font-family: arial; font-weight: bold"></p></form></td></tr></table>

Penjelasan script:Pada awal script di atas memanggil file sambung.php yang digunakanuntuk melakukan koneksi dengan database MySQL dengan fungsiinclude. Langkah berikutnya adalah menggunakan perintah queryuntuk membaca data cuti berdasarkan data id karyawan yang adadalam field id. Perintah pembacaan data cuti karyawan ini disimpanke dalam variabel $d2. Hasil pembacaan data dari database data_cutiini disimpan dengan jenis data array berdasarkan nama filed daridatabase data_cuti. Misalkan nama field yang akan diambil datanyaadalah nama maka hasil pembacaan data ini disimpan ke dalam

Page 252: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

251

variabel $d2[nama]. Berikut adalah potongan script yang berfungsiuntuk membaca database tersebut:

include"../sambung.php";$data=mysql_query("select * from data_cuti where id='$id'");$d2=mysql_fetch_array($data);$data1=mysql_query("select * from karyawan wherenik='$d2[nik]'");$d1=mysql_fetch_array($data1);if($d2[status]=="0"){$d2[status]="Baru";}elseif($d2[status]=="1"){$d2[status]="Diterima";}else{$d2[status]="Ditolak";}

Setelah data cuti dibaca kemudian dengan menggunakan data nikkaryawan dari database data_cuti dijadikan filter atau data relasiuntuk membaca data karyawan yang ada dalam database karyawan.Khusus pada data status, yaitu “diterima” atau “ditolak”, perludideklarasikan tersendiri. Data yang ada dalam database statusdinyatakan dengan nilai angka yaitu 0 atau 1. Dengan menggunakanfungsi if kemudian data status tersebut di ubah menjadi teks“Diterima” atau “Ditolak”. Untuk menampilkan data hasil pembacaanmenggunakan fungsi echo.

FORMULIR UBAH DATA CUTI KARYAWANFormulir ini akan ditampilkan apabila administrator menekan tombolUBAH DATA pada bagian bawah halaman detail cuti. Tujuanditampilkannya formulir ubah data cuti ini adalah untuk mengisikandata baru dan mengirimkan ke database data_cuti.Berikut adalah script yang digunakan untuk menampilkan formuliruntuk mengubah data cuti karyawan :

<table border="0" width="100%" cellspacing="0" cellpadding="0"id="table3"><?include"../sambung.php";

Page 253: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

252

$data=mysql_query("select * from data_cuti where id='$id'");$d2=mysql_fetch_array($data);$data1=mysql_query("select * from karyawan where nik='$d2[nik]'");$d1=mysql_fetch_array($data1);if($d2[status]=="0"){$d2[status]="Baru";}elseif($d2[status]=="1"){$d2[status]="Diterima";}else{$d2[status]="Ditolak";}echo"<tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\"style=\"margin-top: 5px; margin-bottom: 5px\">Halaman KaryawanCuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataPersonal</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"> $d1[nama]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"> $d1[nik]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[tingkat]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[jabatan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:

Page 254: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

253

2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[posisi]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIKAtasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top:2px; margin-bottom: 2px\">$d1[nik_atasan]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">NIKSupport</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top:2px; margin-bottom: 2px\">$d1[nik_support]</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">Jumlah Cuti yang belum diambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[besar]Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">$d1[th2004] Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d1[th2005]Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Tahun 2006</td><td width=\"73%\">

Page 255: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

254

<p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">$d1[th2006]Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">Persetujuan Cuti</td></tr><form method=\"POST\"action=\"proses_ubah_cuti.php\"><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Pengajuan Cuti Anda</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><fontface=\"Arial\"><font color=\"#000080\" size=\"3\"><input type=\"radio\"value=\"1\" name=\"status\" checked></font><fontcolor=\"#000080\">Diterima </font><font color=\"#000080\"size=\"3\"><input type=\"radio\" value=\"2\" name=\"status\"></font><fontcolor=\"#000080\">Ditolak</font><font color=\"#000080\" size=\"3\"><input type=\"radio\"value=\"0\" name=\"status\"></font><font color=\"#000080\">Baru</font></font></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Mulai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left:10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"mulai\" size=\"10\" value=\"$d2[mulai]\"style=\"color: #000080; font-family: arial; font-size: 12pt\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Selesai Cuti Tanggal</td><td width=\"73%\"><p style=\"margin-left:10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"masuk\" size=\"10\" value=\"$d2[masuk]\"style=\"color: #000080; font-family: arial; font-size: 12pt\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

Page 256: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

255

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Lama Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><input type=\"text\"name=\"lama\" size=\"5\" value=\"$d2[lama]\" style=\"color: #000080; font-family: arial; font-size: 12pt\">hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jenis Cuti Yang Diambil</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><fontface=\"Arial\"><font color=\"#000080\" size=\"3\"><input type=\"radio\" value=\"th2004\" name=\"jenis\"checked></font><font color=\"#000080\">Tahunan </font><fontcolor=\"#000080\" size=\"3\"><input type=\"radio\" value=\"besar\"name=\"jenis\"></font><font color=\"#000080\">Besar</font><font color=\"#000080\" size=\"3\"></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Alamat Cuti Yang Dapat Dihubungi</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><textarea rows=\"3\" name=\"alamat\" cols=\"40\" style=\"color:#000080; font-family: arial; font-size:12pt\">$d2[alamat]</textarea></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Alasan Mengambil Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><textarea rows=\"3\" name=\"alasan\" cols=\"40\" style=\"color:#000080; font-family: arial; font-size:12pt\">$d2[alasan]</textarea></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Catatan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><textarea rows=\"3\"name=\"catatan\" cols=\"40\" style=\"color: #000080; font-family: arial;font-size: 12pt\">$d2[catatan]</textarea></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr>

Page 257: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

256

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><input type=\"hidden\" value=\"$id\" name=\"id\"><input type=\"submit\"value=\"UBAH DATA\" name=\"ubah\" style=\"color: #000080; font-family:arial; font-weight: bold\"></td></tr>";?></form></table>

Penjelasan script:Pada script di atas didominasi oleh tag-tag html untuk membentuksebuah formulir. Formulir ini digunakan untuk mengisi data cuti yangbaru karena ada kesalahan pada data lama. Nilai dari setiap obyekformulir diisi oleh data yang dibaca dari database data_cuti. Scriptphp dari program di atas yang berfungsi untuk membaca data cutiadalah sebagai berikut:

include"../sambung.php";$data=mysql_query("select * from data_cuti where id='$id'");$d2=mysql_fetch_array($data);

Hasil pembacaan data cuti tersebut kemudian ditampilkan ke dalamobyek-obyek formulir. Untuk obyek formulir yang perlu diperhatikanadalah action. Nilai dari obyek action ini adalah“proses_ubah_cuti.php”, artinya data yang telah diisikan dalamformulir setelah ditekan tombol UBAH DATA akan dikirim ke fileubah_data_cuti.php sebagai script proses pengubahan data cuti.Berikut adalah tampilan formulir untuk mengganti data cutikaryawan:

Page 258: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

257

Gambar 9.8 Formulir untuk mengubah data cuti karyawan.

Page 259: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

258

SCRIPT PROSES UBAH DATA CUTIKARYAWAN

Script ini digunakan untuk melakukan pengubahan data cutikaryawan yang memiliki kesalahan tulis. Fungsi utama script iniadalah melakukan koneksi dengan database data_cuti dan mengubahdata cuti karyawan berdasarkan syarat tertentu, misalkan mengubahdata cuti tertentu berdasarkan field id tertentu. Berikut adalah scriptyang berfungsi mengubah data cuti karyawan:

<?include"../cek.php";include"../sambung.php";$dat=explode("/",$mulai);$tanggal=mktime(0,0,0,$dat[1],$dat[0],$dat[2]);$add=mysql_query("UPDATE data_cuti set status='$status' ,mulai='$mulai' , masuk='$masuk' ,lama='$lama' ,jenis='$jenis' , alamat='$alamat' , alasan='$alasan' , catatan='$catatan',tanggal='$tanggal' where id='$id'");header("location:./detail_cuti.php?id=$id");?>

Penjelasan script:Pada script di atas yang menyatakan perintah untuk mengubah datacuti karyawan yang ada dalam database data_cuti adalah query SQLUPDATE. Kemudian setelah perintah update dilaksanakan,kemudian akan dialihkan untuk membuka halaman detail_cuti.phpdengan fungsi header.

FORMULIR UNTUK MENAMBAH DATAKARYAWAN

Program database cuti online ini juga menyediakan fasilitas untukmenambah data karyawan baru. Hal ini dibuat untuk mendaftarkandata karyawan baru ke dalam database karyawan. Hak untukmenambah data karyawan baru dimiliki oleh administrator sebagaihak paling tinggi dan yang bertanggung jawab atas seluruh data.

Page 260: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

259

Proses penambahan data karyawan baru ini dimulai dari halamanadministrator dengan menekan link Tambah data karyawan setelahseorang administrator melakukan login. Halaman tambah datakaryawan ini berisikan tag-tag html yang membentuk formulirtambah data karyawan. Berikut adalah script yang digunakan untukmembentuk formulir tambah data:

<?echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\"cellpadding=\"0\" id=\"table3\"><form method=\"POST\"action=\"proses_input_data.php\"><tr><td colspan=\"2\" bgcolor=\"#6799CF\"><p align=\"center\"style=\"margin-top: 5px; margin-bottom: 5px\">Masukkan DataKaryawan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; DataKaryawan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Nama</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nama\"size=\"37\" style=\"color: #000080; font-family: arial; font-size: 12pt\"value=\"$d[nama]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nik_baru\"size=\"21\" style=\"color: #000080; font-family: arial; font-size: 12pt\"value=\"$d[nik]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tingkat</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><input type=\"text\"name=\"tingkat\" size=\"21\" style=\"color: #000080; font-family: arial;font-size: 12pt\" value=\"$d[tingkat]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Jabatan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><input type=\"text\"

Page 261: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

260

name=\"jabatan\" size=\"29\" style=\"color: #000080; font-family: arial;font-size: 12pt\" value=\"$d[jabatan]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tempat Kerja</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><select size=\"1\" name=\"posisi\" style=\"color: #000080; font-family: arial; font-size: 12pt\"><option selectedvalue=\"Madiun\">Madiun</option><option value=\"Ponorogo\">Ponorogo</option><option value=\"Magetan\">Magetan</option><option value=\"Ngawi\">Ngawi</option><option value=\"Nganjuk\">Nganjuk</option><option value=\"Kediri\">Kediri</option><option value=\"Bojonegoro\">Bojonegoro</option><option value=\"Tuban\">Tuban</option></select></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nik_atasan\" size=\"21\" style=\"color:#000080; font-family: arial; font-size: 12pt\"value=\"$d[nik_atasan]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">NIK Support</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"nik_support\" size=\"21\" style=\"color:#000080; font-family: arial; font-size: 12pt\"value=\"$d[nik_support]\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:

Page 262: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

261

2px\">Status</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"radio\" value=\"0\" name=\"status\"checked>Aktif&nbsp;&nbsp;<input type=\"radio\" value=\"1\" name=\"status\">Cuti</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Hak Akses</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><select size=\"1\" name=\"akses\" style=\"color: #000080;font-family: arial; font-size: 12pt\"><option selected value=\"0\">Karyawan biasa</option><option value=\"1\">Atasan</option><option value=\"2\">Support</option><option value=\"22\">Wakil Support</option><option value=\"11\">Wakil Atasan</option></select></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-top: 2px; margin-bottom: 2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-top: 2px; margin-bottom:2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">Jumlah Cuti yang belumdiambil</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Cuti Besar</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"besar\" size=\"6\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\"value=\"45\">Hari</td></tr>

Page 263: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

262

<tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2004</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"th2004\" size=\"6\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\"value=\"12\">Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2005</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"th2005\" size=\"6\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\"value=\"12\">Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Tahun 2006</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"><input type=\"text\" name=\"th2006\" size=\"6\" style=\"color: #000080;font-family: arial; font-size: 12pt; text-align: center\"value=\"12\">Hari</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px;margin-top: 2px; margin-bottom: 2px\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\">Password untuk login karyawan bersangkutan</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">Password</td>

Page 264: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

263

<td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">&nbsp;<!--webbot bot=\"Validation\" b-value-required=\"TRUE\" i-maximum-length=\"8\" --><input type=\"text\"name=\"pass\" size=\"17\" style=\"color: #000080; font-family: arial; font-size: 12pt\" value=\"$d[password]\" maxlength=\"8\"></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><pstyle=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom:2px\"><font color=\"#FF0000\">Maksimal 8 karakter</font></td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">&nbsp;</td><td width=\"73%\">&nbsp;</td></tr><tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom:2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 5px; margin-bottom:5px\"><input type=\"submit\" value=\" K I R I M \" name=\"kirim\"style=\"color: #000080; font-family: arial; font-weight: bold\"></td></tr></form></table>";?>

Penjelasan script:Yang perlu diperhatikan dalam membuat sebuah formulir adalah nilaidari obyek yang ada di dalamnya. Yang pertama adalah obyek action,nilai dari obyek action ini adalah “proses_input_data.php”. Arti darinilai obyek ini adalah tujuan pengiriman data yang dituliskan dalamformulir adalah ke file proses_input_data.php.Kemudian untuk memberikan nama dari setiap obyek tidak bolehdiawali dengan angka dan tidak boleh mengandung karakter-karakteryang tidak lazim seperti $, @, !, &, * dan yang lainnya. Nama obyektersebut apabila dikirim ke file proses_input_data.php akan menjadisebuah variabel dengan nama yang sama. Berikut adalah tampilanformulir untuk menambah data karyawan:

Page 265: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

264

Gambar 9.9 Formulir untuk menambah data karyawan.

Untuk mendaftarkan data karyawan baru adalah mengisi datakaryawan baru dan menekan tombol KIRIM yang ada di bagianbawah formulir tersebut.

Page 266: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

265

SCRIPT PROSES KIRIM DATA KARYAWANBARU

Script yang berfungsi untuk menerima data dari formulir tambah datadan memasukkan ke database karyawan ini disimpan ke dalamsebuah file yang namanya sama dengan nilai dari obyek action dalamformulir tambah data. Nama file itu adalah proses_input_data.php.Berikut adalah script untuk memproses tambah data tersebut:

<?include"../cek.php";include"../sambung.php";$cek=mysql_query("select nik from karyawan where nik='$nik_baru'");$total=mysql_num_rows($cek);if($total=="0"){$add=mysql_query("INSERT INTO karyawan ( nama , nik , tingkat ,jabatan , posisi , nik_atasan , nik_support , status , hak_akses , besar ,th2004 , th2005 , th2006 , password )VALUES ('$nama', '$nik_baru', '$tingkat', '$jabatan', '$posisi', '$nik_atasan','$nik_support', '0', '$akses', '45', '12', '12', '12', '$pass')");header("location:./data_karyawan.php");}?

Penjelasan script:Langkah pertama dari script di atas adalah koneksi dengan databasekaryawan. Kemudian membaca data yang ada dan memeriksa apakahdalam database dengan nik yang akan dimasukkan sudah terdaftaratau belum. Pencarian data berdasarkan nik akan dilakukan denganmenggunakan perintah query select. Hasilnya akan dihitung denganmenggunakan perintah SQL yaitu mysql_num_rows() yang berfungsiuntuk menghitung hasil pencarian. Berikut adalah potongan scripttersebut:

$cek=mysql_query("select nik from karyawan where nik='$nik_baru'");$total=mysql_num_rows($cek);

Page 267: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

266

Nilai dari variabel $total adalah angka sejumlah data yang ditemukanoleh perintah query mysql_query(select ).Apabila nilai dari variabel $total adalah 0, berarti data karyawanyang mempunyai nik baru belum pernah didaftarkan. Kemudianperintah berikutnya adalah memasukkan data karyawan baru denganmenggunakan perintah query:

$add=mysql_query("INSERT INTO karyawan ( nama , nik , tingkat , jabatan, posisi , nik_atasan , nik_support , status , hak_akses , besar , th2004 ,th2005 , th2006 , password )VALUES ('$nama', '$nik_baru', '$tingkat', '$jabatan', '$posisi', '$nik_atasan','$nik_support', '0', '$akses', '45', '12', '12', '12', '$pass')");

Pada akhir script ditambahkan sebuah fungsi header yang digunakanuntuk mengalihkan ke halaman data_karyawan.php setelahmenambahkan data karyawan baru berhasil dilaksanakan.

SCRIPT GANTI PASSWORD ADMINISTRATORUntuk mengantisipasi penyalahgunaan password administrator olehorang yang tidak berhak, maka password harus sering diganti secaraberkala. Dengan melakukan penggantian password secara berkala inidapat mengantisipasi kebocoran password oleh orang lain. Untukmengganti password administrator, Anda harus membuka halamanadministrator terlebih dahulu. Pada halaman ini akan ditampilkansebuah formulir untuk mengisikan password baru. Berikut adalahtampilan formulir ganti password pada halaman administrator:

Gambar 9.10 Formulir untuk ganti password administrator.

Untuk mengganti password dan userid baru, masukkan userid barudan password baru kemudian tekan tombol UBAH pada bagian bawahformulir. Data userid dan password baru ini akan dikirim ke scriptyang ada di dalam file ubah_password.php. Berikut adalah script yang

Page 268: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

267

berfungsi untuk mengganti data userid dan password baru dalam fileubah_password.php tersebut:

<?include"../cek.php";include"../sambung.php";$edit=mysql_query("update admin setuser='$user_baru',password='$password_baru' where id='1'");if($edit){echo"<HTML><HEAD><meta http-equiv=\"Content-Language\" content=\"en-us\"><TITLE>Website Cuti Online</TITLE><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=windows-1252\"><style><!--body { font-family: arial; color: #000080 }--></style></HEAD><BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0MARGINWIDTH=0 MARGINHEIGHT=0 background=\"../images/bg.gif\"onload=\"FP_preloadImgs(/*url*/'../images/lanjut2.gif')\"><center><br><TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR><TD>

<IMG SRC=\"../images/tkm_01.gif\" WIDTH=800HEIGHT=158 ALT=\"\"></TD>

</TR><TR>

<TD><table border=\"0\" width=\"100%\" cellspacing=\"0\"

cellpadding=\"0\" background=\"../images/tkm_02.gif\" id=\"table1\"><tr>

Page 269: PHP Dan MySQL Studi Kasus Database Karyawan

Script Halaman Administrator Bab 9

268

<td width=\"12\">&nbsp;</td><td valign=\"top\"><p align=\"center\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px;

margin-bottom: 3px\">Password Anda telah diubah menjadi<br>$password_baru<p align=\"center\"

style=\"margin-top: 3px; margin-bottom: 3px\">&nbsp;<p align=\"center\" style=\"margin-top:

3px; margin-bottom: 3px\">Untuk kembali ke halaman data karyawan<br>Klik tombol berikut ini<br><br><a href=\"administrator.php\"><img border=\"0\" id=\"img1\"

src=\"../images/lanjut1.gif\" height=\"20\" width=\"125\"alt=\"LANJUT\"></a></td>

<td width=\"15\">&nbsp;</td></tr>

</table></TD>

</TR><TR>

<TD><IMG SRC=\"../images/tkm_05.gif\" WIDTH=800 HEIGHT=45

ALT=\"\"></TD></TR>

</TABLE></BODY></HTML>";}?>

Penjelasan script:Pada bagian awal script adalah memeriksa keberadaan data sesidengan memanggil file cek.php, kemudian melakukan koneksi dengan

Page 270: PHP Dan MySQL Studi Kasus Database Karyawan

Bab 9 Script Halaman Administrator

269

database admin dengan memanfaatkan file sambung.php. Scriptberikutnya adalah menggunakan perintah query yaitu:

edit=mysql_query("update admin setuser='$user_baru',password='$password_baru' where id='1'");

Fungsinya adalah mengganti data user dan password dengan datayang baru dari formulir ganti password. Setelah data user danpassword diganti kemudian ditampilkan sebuah komentar bahwa datauser dan password telah diganti menggunakan tag-tag html di akhirscript ini. Berikut adalah tampilan halaman yang menyatakan datauser dan password telah sukses diubah:

Gambar 9.11 Konfirmasi Ganti password telah sukses diganti.