Vous êtes sur la page 1sur 270

Membuat Database Karyawan Online Berbasis Web dengan

PHP & MySQL

YENI CAHYONO

- SINOPSIS Membuat Database Karyawan Online Berbasis Web dengan PHP & MySQL
Dunia internet semakin lama semakin berkembang mengikuti kebutuhan manusia yang selalu mencari terobosan baru. Pada awalnya, internet hanya digunakan untuk menampilkan data-data statis yang disebarkan untuk pengguna internet secara umum. Namun dalam perkembangan sebuah sistem informasi jarak jauh yang memberikan hak akses khusus anggota atau member mulai mencoba untuk menggunakan media internet sebagai sarana untuk menghubungkan antar pengguna internet dalam sebuah sistem. Demikian juga dengan buku ini yang membahas tentang sistem informasi manajemen karyawan sebuah perusahaan, khususnya dalam hal pengajuan cuti karyawan secara online berbasis web. Sekarang banyak perusahaan yang mempunyai anak cabang di luar daerah dan tetap dikelola oleh induk perusahaan yang ada di kota lain. Kemudian bagi karyawan yang akan mengajukan cuti harus membuat surat dan dikirim 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 atas tidak perlu lagi dilakukan. Semua alur informasi dapat dibuat serba otomatis 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

Kata Pengantar

Puji syukur kami panjatkan kepada Tuhan YME atas rahmat dan karuniaNya buku "Membuat Database Karyawan Online Berbasis Web dengan PHP dan MySQL" ini dapat terselesaikan dengan baik. Tak lupa kami ucapkan banyak terima kasih atas kepercayaan para pembaca yang telah menggunakan buku ini sebagai panduan dan referensi dalam belajar membuat website. Buku ini sangat cocok bagi Anda yang ingin membuat aplikasi pemrograman PHP dan MySQL sebagai sebuah sarana untuk membangun database berbasis web. Bahasan dalam buku ini juga memberikan contoh aplikasi lengkap dengan listing script dan penjelasannya. Materi dalam buku ini ditujukan bagi pemula dan menengah yang ingin membuat aplikasi web yang interaktif dengan menggunakan bahasa yang singkat dan sistematis. Dengan demikian, diharapkan dapat membantu pembaca dalam memahami tiap-tiap bagian script dalam buku ini. Setiap kelompok bagian fungsi yang ada dalam proyek ini dimasukkan ke dalam bab-bab yang terpisah, sehingga Anda akan dipermudah untuk mempelajarinya.

September 2004 Penulis

iii

Daftar Isi

Kata Pengantar.................................................................................. Daftar Isi ............................................................................................

iii v

BAB 1 PENDAHULUAN

Buku ini digunakan oleh siapa ? ......................................................... Bagaimana menggunakan buku ini?.................................................. Perlengkapan apa yang diperlukan ? .................................................
BAB 2 PERENCANAAN PROYEK BAB 3 FUNGSI-FUNGSI PHP

1 1 1

Fungsi PHP untuk mengolah data......................................................


Fungsi string ...................................................................... Fungsi logika...................................................................... Fungsi pengulangan operasi.............................................. Fungsi tanggal dan waktu .................................................. Session .............................................................................. Fungsi ekspresi..................................................................

9 9 20 24 28 36 41

BAB 4 PERENCANAAN DATABASE MENGGUNAKAN MySQL

Tabel..................................................................................................... Tipe data .............................................................................................. Field kunci atau index.......................................................................... Persiapan merancang database......................................................... Contoh kasus pembuatan database .................................................. v

48 49 50 51 52

Relasi....................................................................................................
BAB 5 MEMPERSIAPKAN DATABASE

56

Membuat database..............................................................................
Database untuk username dan password administrator.... Database untuk menyimpan data hak akses karyawan..... Database karyawan............................................................ Database jumlah cuti.......................................................... Database lama cuti ............................................................

60 60 62 63 64 66

BAB 6 SCRIPT PENDUKUNG

Script untuk mengakses database ..................................................... Script untuk login.................................................................................. Script untuk otentikasi.......................................................................... Script untuk memeriksa keberadaan sesi ..........................................

69 70 72 76

BAB 7 FILE PROGRAM PENDUKUNG

Script untuk mengakses database ..................................................... Script untuk membuat database ......................................................... Script untuk membuat tabel ................................................................
Tabel karyawan .................................................................. Tabel hak akses ................................................................. Tabel data cuti.................................................................... Tabel admin .......................................................................

79 80 86 83 85 87 89 91 97 101

Script untuk autorisasi user dan password......................................... Script untuk memeriksa data sesi....................................................... Script untuk menghapus data sesi......................................................

vi

BAB 8 FILE PROGRAM UTAMA

Halaman utama ................................................................................... Halaman data karyawan ..................................................................... Halaman detail karyawan.................................................................... Halaman pengajuan cuti ..................................................................... Script proses pengajuan cuti............................................................... Proses persetujuan pengajuan cuti .................................................... Script pengolah data persetujuan cuti ................................................ Halaman konfirmasi persetujuan cuti karyawan ................................ Tampilan cetak persetujuan cuti......................................................... Aktivasi karyawan cuti ......................................................................... Script untuk mengganti password ...................................................... Arsip cuti tiap karyawan....................................................................... Halaman detail arsip cuti .....................................................................

103 108 117 125 137 143 156 161 171 176 186 190 197

BAB 9 FILE PROGRAM ADMINISTRATOR

Halaman admin ................................................................................... Halaman administrator ........................................................................ Halaman data karyawan ..................................................................... Ubah data karyawan............................................................................ Script proses ubah data karyawan ..................................................... Proses menghapus data karyawan .................................................... Ubah data cuti karyawan..................................................................... Formulir ubah data cuti karyawan....................................................... Script proses ubah data cuti karyawan............................................... Formulir untuk menambah data karyawan ........................................

218 222 226 233 240 241 243 251 258 258 vii

Script proses kirim data karyawan baru.............................................. Script ganti password administrator....................................................

265 266

viii

BUKU INI DIGUNAKAN OLEH SIAPA ?


Buku ini ditujukan bagi Anda yang telah memahami dan menguasai bahasan HTML dan menguasai bahasa pemrograman PHP yang ingin mempelajari pemrograman web PHP lebih mendalam lagi. Buku ini akan membahas tentang berbagai script PHP yang mengandung fungsi-fungsi dalam membentuk sebuah system yang sistematis.

BAGAIMANA MENGGUNAKAN BUKU INI ?


Dalam mempelajari buku ini, Anda harus membaca dari bab satu ke bab berikutnya secara berurutan dan tidak boleh melompat. Hal ini dilakukan karena pada setiap bab yang ada dalam buku ini membahas pokok bahasan yang saling berkaitan dan berurutan. Pada setiap sub pokok bahasan selalu disertai dengan contoh script lengkap dan disertai dengan penjelasan script yang ada.

PERLENGKAPAN APA YANG DIPERLUKAN ?


Untuk mempelajari buku ini, Anda harus menyiapkan beberapa software sebagai berikut: Apache Web Server PHP Versi 4.xx 1

Pendahuluan
MySQL 3.xx phpMyAdmin

Bab 1

Bagi Anda yang menggunakan system operasi Linux, Anda tidak perlu lagi dipusingkan dengan software-software tersebut, karena keempat program tersebut sudah terintegrasi dalam distro-distro Linux. Pada saat Linux di-install maka program-program tersebut sudah ikut ter-install di dalamnya sebagai komponen Linux. Bagi Anda pengguna Windows, Anda harus mencari software tersebut dan meng-install ke dalam komputer Anda, sehingga komputer yang digunakan selain sebagai komputer client sekaligus sebagai komputer server untuk mem-publish file-file PHP Anda. Salah satu cara yang termudah bagi Anda pengguna Windows untuk mendapatkan keempat software tersebut adalah dengan meng-install sebuah tools yang bernama phptriad. Program phptriad ini bersifat free atau gratis. Apabila Anda ingin mendapatkannya, dapat di-download melalui website dengan alamat URL berikut: http://sourceforge/projects/phptriad File phptriad tersebut terdiri dari satu file saja dengan extention *.exe yang mempunyai ukuran sekitar 10 Megabyte. Setelah Anda jalankan file phptriad-221.exe, maka keempat program tersebut secara bersamaan akan ter-install juga. Selain keempat program tersebut di atas, Anda harus menyiapkan software editor teks dan software yang digunakan untuk mendesain halaman dan formulir dari web yang akan dibangun. Dalam hal ini, penulis menggunakan Microsoft FrontPage yang merupakan program untuk mendesain halaman web dengan pertimbangan : program ini dapat digunakan untuk mendesain halaman web dengan mudah karena hasil desain dapat di-preview langsung ke dalam browser internet explorer. Untuk menulis dan membuat script PHP, Anda dapat menggunakan software PHPEditor atau PHPED. Kedua software editor teks ini bersifat free atau gratis. Untuk software PHPEd dapat Anda download melalui web resminya yaitu dengan alamat URL berikut:

Bab 1
http://www.soysal.com/PHPEd

Pendahuluan

Namun untuk memudahkan Anda dalam mempelajari buku ini, penulis telah menyertakan software-software tersebut dan contohcontoh script dalam CD yang disertakan pada saat Anda membeli buku ini.

Bab ini berisi penjabaran tentang perencanaan dan latar belakang dibuatnya proyek ini. Dengan demikian, diharapkan Anda dapat mempelajari dan memahami pokok bahasan yang menjelaskan alasan dan permasalahan yang akan dibahas. Selain itu, penjelasan dalam bab ini akan menjadi arah atau garis besar dibuatnya web ini. Diasumsikan pula bahwa proyek yang akan dibuat ini adalah sebuah bagian dari perusahaan yang mempunyai cabang di berbagai daerah dan proyek program ini akan dijalankan di induk perusahaan. Proyek yang akan dibuat ini adalah sebuah manajemen administrasi pengajuan cuti oleh karyawan yang ada di perusahaan induk dan perusahaan cabang, kemudian akan diajukan secara online kepada pimpinan perusahaan yang ada di perusahaan induk. Garis besar dan ketentuan yang diharapkan dari pembuatan web database karyawan ini adalah sebagai berikut : Web yang akan dibuat bersifat intern, yaitu hanya dapat dilihat dan diakses oleh karyawan, atasan dan administrator yang memiliki hak akses tertinggi. Web ini berisikan tentang database karyawan dan manajemen cuti online yang diajukan langsung oleh karyawan yang bersangkutan.

Perencanaan Proyek

Bab 2

Setiap perusahaan, baik perusahaan induk maupun perusahaan cabang yang ada di daerah lain dapat mengakses web ini dengan menggunakan jaringan internet. Hak akses akan dibagi menjadi empat tingkat, yaitu : Administrator, yaitu orang database karyawan ini yang data karyawan, mengubah kekeliruan pengisian form karyawan yang telah berhenti. atau petugas pengelola web bertugas untuk memasukkan data karyawan apabila ada dan juga menghapus data

Atasan, yaitu orang atau petugas yang memberikan keputusan disetujui atau tidak disetujui permohonan cuti oleh karyawan bawahannya. Kepala bagian atau Support, yaitu petugas atau orang yang mencatat data cuti dan data kehadiran karyawan yang menjadi bawahan di bagian yang dipimpinnya. Karyawan biasa, yaitu karyawan yang hanya mempunyai hak akses pada halaman data pribadi, pengajuan cuti dan bagian halaman yang menampilkan keterangan apakah pengajuan cuti diterima atau ditolak. Seorang karyawan dapat melihat arsip cuti yang diambil oleh masing-masing karyawan tersebut.

Pemilik web ini mengharapkan bahwa apabila ada karyawan yang akan mengajukan cuti akan secara langsung dapat membuka web, login ke halaman karyawan dan mengisi formulir cuti secara online. Pemilik web mengharapkan seorang atasan dapat melihat data karyawannya dan mengetahui status karyawan, apakah sedang aktif atau sedang cuti. Selain itu diharapkan seorang atasan akan dapat memberikan konfirmasi atau persetujuan cuti yang diajukan oleh karyawannya. Diharapkan seorang atasan dapat melihat data arsip cuti yang pernah diambil oleh karyawan bawahannya dan dapat melihat data cuti tiap pengajuan cuti secara detail.

Bab 2

Perencanaan Proyek

Seorang support atau kepala bagian diharapkan dapat melihat data keseluruahan data karyawan di bawahnya secara detail, dan dapat memasukkan data karyawan baru yang posisinya ada di bawahnya. Seorang kepala bagian dapat melihat data arsip cuti karyawan di bawahnya dan melihat data cuti tiap pengajuan kemudian dapat mencetak laporan cuti tersebut pada kertas dengan format yang telah ditentukan oleh program. Seorang karyawan dapat mengajukan cuti secara langsung dan online kepada atasan-nya. Setiap karyawan dapat mengubah password yang telah diberikan oleh administrator. Setiap ada data pengajuan cuti baru oleh karyawan akan tercatat ke dalam database pengajuan cuti dan dapat diakses menurut syarat tertentu. Misalkan hanya menampilkan data karyawan yang pengajuan cutinya baru atau yang diterima saja, atau yang ditolak saja.

Dalam membuat sebuah proyek program atau system yang sempurna pasti memerlukan persiapan yang sesuai dengan kebutuhan dalam proses pembuatannya. Salah satu persiapan yang perlu diperhatikan adalah fungsi-fungsi script PHP yang akan digunakan dalam pembuatan program. Fungsi PHP yang akan digunakan untuk membuat proyek ini akan dibagi menjadi dua bagian, yaitu fungsi PHP yang berfungsi untuk mengolah data dan fungsi-fungsi PHP yang digunakan untuk mengakses database, dalam hal ini menggunakan database MySQL.

FUNGSI PHP UNTUK MENGOLAH DATA


Fungsi untuk mengolah data ini banyak sekali jenisnya, antara lain pengolah data string, data tanggal atau waktu, data angka. Dilihat dari jenisnya, fungsi PHP ini digolongkan menjadi berbagai jenis sesuai dengan fungsinya, antara lain fungsi logika, fungsi aritmatika, fungsi pengulangan atau loop, fungsi mengambil data waktu dan lain sebagainya. FUNGSI STRING Fungsi string ini adalah berbagai fungsi PHP yang digunakan untuk mengolah jenis data string. 9

Fungsi-fungsi PHP
MENCETAK STRING

Bab 3

Fungsi ini digunakan untuk mencetak string atau nilai dari sebuah variabel. Fungsi yang digunakan adalah echo atau print. Contoh:
Echo string ditampilkan di browser;

atau
Print string ditampilkan di browser;

Pada contoh di atas dapat dilihat bahwa setelah fungsi echo atau print, diikuti dengan string yang akan ditampilkan pada browser yang diapit penulisannya dengan tanda petik ganda ("). Selain digunakan untuk menampilkan string secara langsung, kedua fungsi tersebut juga dapat menampilkan nilai dari sebuah variabel. Contoh :
// latihan_1.php // Mencetak string dari nilai variabel ke dalam browser $data= <center><b>Data yang ditampilkan di browser</b></center>; //mencetak pada browser Echo Mencetak menggunakan fungsi echo:; Echo $data; Echo<br>; Print Mencetak menggunakan fungsi print:; Print $data;

Hasilnya adalah seperti pada gambar 3.1 berikut:

10

Bab 3

Fungsi-fungsi PHP

Gambar 3.1 Hasil pencetakan dengan fungsi echo dan fungsi print

MENGHITUNG PANJANG STRING Untuk menghitung panjang atau jumlah karakter pada sebuah string dapat menggunakan fungsi strlen, bentuk sintaksnya adalah: $jumlah_karakter = Strlen(string); $jumlah karakter adalah variabel yang mempunyai nilai jumlah karakter dari data string. String pada sintaks di atas dapat berisikan karakter dan juga dapat berisikan sebuah variabel. Berikut contoh penggunaan fungsi strlen(); dalam sebuah program:
<? // strlen.php // fungsi untuk menghitung jumlah karakter pada sebuah string ?> <html>

11

Fungsi-fungsi PHP

Bab 3

<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 sebuah kata, 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.

12

Bab 3

Fungsi-fungsi PHP

Pada penggunaan fungsi strlen ini yang perlu diperhatikan adalah karakter yang akan dihitung adalah seluruh jenis karakter, baik yang berupa huruf, angka, simbol maupun spasi. MENGAMBIL POTONGAN DARI SEBUAH STRING Untuk mengambil potongan dari sebuah string dapat menggunakan fungsi substr(). Dengan menggunakan fungsi ini, Anda dapat mengambil potongan atau sebagian teks dari sebuah string pada posisi manapun, baik yang berada di awal string, di tengah string maupun di akhir string. Selain itu, Anda juga dapat menentukan jumlah potongan yang akan diambil. Bentuk sintaks dari fungsi substr() ini adalah:
$potongan = substr(string_awal, [awal_pengambilan], [posisi_pengambilan]);

String_awal adalah string sumber yang akan diambil sebagian datanya. Awal_pengambilan adalah bernilai angka baik bernilai positif maupun negatif yang menunjukkan posisi dari awal pengambilan karakter. Apabila angka bernilai positif maka pengambilan dimulai dari kanan dan diawali dengan angka 0. Apabila angka bernilai negatif, maka pengambilan karakter akan dimulai dari kiri dan dihitung mulai dari angka 1. Posisi_pengambilan adalah jumlah karakter yang akan diambil dalam string awal. Posisi_pengambilan ini bernilai angka, baik bernilai positif maupun bernilai negatif. Untuk lebih jelasnya perhatikan gambar ilustrasi di bawah ini: Misalkan Anda mengambil potongan string dari sebuah kata INDONESIA, dengan menggunakan fungsi substr(INDONESIA, 2,4);, maka dalam ilustrasi gambar dapat Anda lihat sebagai berikut:

13

Fungsi-fungsi PHP
I 0 N 1 D 2 O 3 N 4 E 5 S 6

Bab 3
I 7 A 8

Substr(INDONESIA, 2, 4); Dengan menggunakan sintaks substr(INDONESIA, 2, 4); akan menghasilkan string DONE. Kemudian bagaimana apabila nilai dari awal pengambilan tersebut bernilai negatif ? Perhatikan contoh sintaks yang menggunakan parameter awal pengambilan dan panjang pengambilan memiliki nilai positif. I -9 N -8 D -7 O -6 N -5 E -4 S -3 I -2 A -1

1
Substr(INDONESIA, -5, 4);

Apabila diperhatikan pada fungsi pengambilan potongan string di atas, awal pengambilan adalah -5 artinya penghitungan karakter adalah keenam dari belakang. Kemudian posisi / jumlah pengambilan diambil dari kanan sebanyak 4 karakter. Hasilnya adalah kata NESI; Berikut adalah beberapa contoh model pengambilan potongan string berdasarkan parameter yang berbeda-beda: Pengambilan potongan string dengan parameter awal pengambilan menggunakan nilai 0 atau nilai positif. 14

Bab 3

Fungsi-fungsi PHP

<? //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 a echo $string{3}; // hasilnya d ?>

Contoh pengambilan potongan dengan menggunakan parameter awal 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 dengan menggunakan parameter awal pengambilan potongan atau panjang / 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" ?>

15

Fungsi-fungsi PHP

Bab 3

MENGGANTI POTONGAN STRING DENGAN STRING BARU Fungsi yang digunakan untuk mengganti potongan string dengan string baru adalah menggunakan fungsi Substr_replace(). Bentuk sintaksnya adalah :
$data=substr_replace(string_awal, string_pengganti, [awal_penggantian], [panjang_pengambilan]);

String_awal pada bentuk fungsi di atas adalah string atau variabel yang berisikan data teks sebelum diubah. String_pengganti adalah string atau variabel yang mempunyai nilai string dan berfungsi sebagai pengganti. Awal_penggantian adalah angka yang menyatakan posisi awal pengambilan karakter dari string awal. Panjang_pengambilan adalah bernilai angka yang menyatakan jumlah karakter string awal yang akan diganti. Contoh script dari fungsi substr_replace di atas adalah sebagai berikut:
// 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 $ var dengan ' 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"; ?>

16

Bab 3

Fungsi-fungsi PHP

Apabila dijalankan pada browser akan tampak seperti pada Gambar 3.3 berikut:

Gambar 3.3 Tampilan fungsi substr_replace untuk mengganti potongan string.

Fungsi untuk mengganti potongan string dengan string baru yang lain adalah menggunakan fungsi str_replace(). Bedanya dengan fungsi sebelumnya adalah pada fungsi ini akan mencari kesamaan karakter atau kata yang akan diganti pada string awal, kemudian diganti 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 dengan string pengganti. Artinya fungsi ini pertama akan mencari kesamaan string yang akan diganti terlebih dahulu yang ada di string awal, kemudian apabila ditemukan akan langsung diganti dengan string pengganti. Berikut adalah contoh script dengan fungsi str_replace(): 17

Fungsi-fungsi PHP

Bab 3

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

Setelah dijalankan di browser akan tampak seperti pada Gambar 3.4 berikut:

Gambar 3.4 Tampilan fungsi str_replace untuk mengganti potongan string.

FUNGSI PEMECAH DAN PENGGABUNG STRING Fungsi string selanjutnya adalah fungsi untuk memecah dan menggabungkan sebuah string. 18

Bab 3

Fungsi-fungsi PHP

Untuk memecah string adalah menggunakan fungsi explode(), kemudian fungsi untuk menggabungkan string adalah menggunakan 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 atau karakter yang digunakan untuk memisahkan atau untuk menggabungkan string. Sedang string adalah data berupa karakter atau kata dan juga dapat berupa variabel yang mempunyai nilai berupa string atau karakter. Berikut contoh script yang menggunakan fungsi explode() dan implode() 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 pola spasi</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 pada Gambar 3.5 berikut:

19

Fungsi-fungsi PHP

Bab 3

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, namun pada semua bahasa pemrograman selalu menggunakan fungsi if (jika) sebagai pembagi atau syarat untuk meletakkan operasi program yang akan dijalankan. Fungsi if dalam program ini akan dibagi menjadi tiga tingkat atau bentuk. Bentuk yang pertama adalah :
If(kondisi){ Operasi; }

Dalam bentuk script if di atas, kondisi adalah syarat yang digunakan untuk menjalankan operasi. Contoh fungsi if dalam program adalah sebagai berikut:

20

Bab 3

Fungsi-fungsi PHP

Penjelasan script:

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

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

Alur operasi dari fungsi ini adalah apabila kondisi bernilai salah maka 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;

21

Fungsi-fungsi PHP
If($hasil== $hasil){ Echo Jumlah dari 5 + 5 adalah $hasil; }else{ EchoJumlah dari 5 + 5 adalah bukan $hasil2 ; } ?>

Bab 3

Penjelasan script : Sebagai syarat pada script di atas adalah variabel $hasil dan $hasil2. Variabel $hasil memiliki nilai penjumlahan angka 5 dan lima 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 ditandai sama dengan ganda (==) menghasilkan nilai benar, maka operasi 1 akan dijalankan. Kemudian Anda coba untuk memasukkan nilai variabel $hasil2 dengan angka 12, maka kondisi akan menghasilkan false atau salah dan program akan menjalankan operasi 2. Fungsi logika yang ketiga adalah fungsi if elseif else. Fungsi if yang ketiga ini akan menyediakan banyak pilihan yang akan dijalankan 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, namun untuk fungsi if ini mempunyai kondisi yang berbeda-beda sebagai syarat untuk menjalankan operasi yang berbeda-beda pula. 22

Bab 3

Fungsi-fungsi PHP

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=Jumat; }else{ $hari=Sabtu; } Echo Hari ini adalah hari <b>$hari</b>.; ?>

Penjelasan script: Kondisi pada script di atas adalah nilai variabel $date yang dihasilkan dengan menggunakan fungsi date(). Fungsi date() ini akan menghasilkan nilai angka dari 0 sampai dengan 6 sesuai dengan hari sekarang. Misalkan sekarang hari Senin, maka variabel $date akan memiliki nilai 1 dan seterusnya. Kemudian pada script di atas dikombinasikan dengan fungsi if sebagai syarat untuk menjalankan operasi yaitu memberikan nilai pada variabel $hari. Apabila nilai variabel $date adalah 0, maka variabel $hari akan diberikan nilai Minggu. Apabila nilai dari variabel $date

23

Fungsi-fungsi PHP

Bab 3

adalah 1 maka nilai dari variabel $hari akan diberikan nilai Senin dan seterusnya. Untuk melihat hasilnya script tersebut maka jalankan dalam browser, dan hasilnya akan tampak seperti pada Gambar 3.6 berikut:

Gambar 3.6 Tampilan fungsi if dengan multi alternatif.

FUNGSI PENGULANGAN OPERASI Banyak fungsi PHP yang digunakan untuk mengulang operasi dalam sebuah program web. Beberapa fungsi tersebut adalah fungsi for dan while. Kedua fungsi tersebut akan digunakan dalam membangun proyek database cuti karyawan online. FUNGSI FOR Fungsi for ini sering digunakan pada script-script yang melakukan pengulangan perintah. Bentuk dari fungsi for ini adalah:
For(syarat1;syarat2;syarat3){ Operasi; }

Syarat yang dimaksud di atas adalah kondisi di mana mulai pengulangan, jumlah pengulangan dan kelipatan pengulangan akan dilakukan pada operasi tersebut. Berikut contoh penggunaan fungsi for untuk memperjelas dari bentuk fungsi for tersebut : 24

Bab 3

Fungsi-fungsi PHP

<? //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 parameter pengulangan. Syarat pertama adalah variabel $i = 1 adalah pengulangan dimulai dengan angka 1, kemudian pada syarat ke dua adalah variabel $i <= 10, artinya adalah operasi pengulangan akan diakhiri dengan hitungan ke 10, syarat yang terakhir adalah variabel $i++, artinya pengulangan dilaksanakan dengan penambahan atau kelipatan 1. Berikut adalah hasil operasi fungsi for jika dijalankan menggunakan browser:

Gambar 3.7 Tampilan fungsi for dengan pengulangan sebanyak 10 kali.

25

Fungsi-fungsi PHP

Bab 3

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 ketiga yaitu $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 WHILE Fungsi while pada pengoperasiannya tidak jauh beda dengan fungsi for. Pada dasarnya fungsi ini juga digunakan untuk pengulangan perintah atau operasi. Bedanya adalah pada struktur atau bentuk dari fungsinya. Berikut bentuk dari fungsi while:
Syarat1 While(syarat2{ Operasi; Syarat3; }

26

Bab 3

Fungsi-fungsi PHP

Pada fungsi ini akan menjalankan pengulangan dimulai dengan nilai syarat 1, kemudian perintah operasi terus-menerus dilaksanakan selama syarat 2 belum terpenuhi. Syarat 3 berfungsi untuk memberikan nilai kelipatan dan penambahan jumlah pengulangan 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){ EchoDicetak diurutan ke $data<br>; $data++; } ?>

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

27

Fungsi-fungsi PHP

Bab 3

Gambar 3.9 Tampilan fungsi while dengan pengulangan 10 kali.

FUNGSI TANGGAL DAN WAKTU Fungsi yang digunakan untuk mengolah waktu dalam program PHP sangat banyak sekali. Fungsi-fungsi waktu tersebut dipakai sesuai dengan kondisi dan kebutuhan pengolahan data tertentu. FUNGSI DATE Fungsi waktu pertama yang digunakan dalam proyek ini adalah fungsi date(). Fungsi ini digunakan untuk mengambil waktu dengan menggunakan format yang dapat diubah-ubah. Sedangkan format yang digunakan juga ada bermacam-macam. Berikut adalah daftar format yang dapat digunakan untuk fungsi date() : Format a atau A Keterangan Digunakan untuk memberikan keterangan am atau pm

28

Bab 3
Format d D F h H i l (L kecil) j m M s t w y Y z Keterangan

Fungsi-fungsi PHP

Digunakan untuk format 2 angka

mengambil

hari

dengan

Nama hari dengan bentuk singkatan tiga huruf Nama bulan lengkap contoh January Menyatakan jam dengan format 12 jam bentuk dua angka Menyatakan jam dengan format 24 jam bentuk dua angka Menyatakan menit format 00 59 Nama hari lengkap Friday Tanggal dengan format 1 31 Menyatakan bulan 01 12 Menyatakan bulan dengan format tiga huruf Jan Menyatakan detik format 00 59 Memerikasa jumlah hari dalam seminggu 28 31 Menyatakan hari dalam seminggu bentuk angka contoh : 0 = minggu, 1 = Senin, dst. Menyatakan tahun dengan bentuk dua angka 04 Menyatakan tahun dengan bentuk empat angka 2004 Menyatakan hari dalam setahun 0 365

Bentuk fungsi date() adalah :


$tanggal = date(format);

Format yang ada pada fungsi date tersebut dapat dituliskan dengan format yang ada didaftar format waktu tersebut di atas. 29

Fungsi-fungsi PHP

Bab 3

Contoh script yang menggunakan fungsi date() untuk menuliskan tanggal sekarang dengan mengubah nama bulan menjadi format Indonesia 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";

30

Bab 3
}else{ $bulan="Desember"; }

Fungsi-fungsi PHP

$sekarang="$hari $bulan $tahun"; echo "<center>Sekarang tanggal ".$sekarang.</center>; ?>

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

Gambar 3.10 Tampilan fungsi date untuk menampilkan tanggal sekarang.

FUNGSI TIME Fungsi time ini digunakan untuk mendapatkan nilai detik dari jam 00:00:00 tanggal 01 januari 1970 sampai waktu file yang mengandung 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 selama tahun tersebut di atas sampai sekarang.

31

Fungsi-fungsi PHP

Bab 3

Berikut adalah contoh script yang menggunakan fungsi time untuk menampilkan data tanggal sekarang dan data tanggal lima hari 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 seperti pada Gambar 3.11 berikut:

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

FUNGSI MKTIME Fungsi waktu selanjutnya adalah mktime(). Fungsi ini digunakan untuk mengkonversikan tanggal dan jam ke dalam data detik. Artinya apabila Anda mempunyai data tanggal dan jam kemudian ingin menampilkan jumlah detik dari data waktu tersebut, maka 32

Bab 3

Fungsi-fungsi PHP

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

Jumlah detik yang dihasilkan adalah jumlah detik dihitung dari jam 00:00:00 tanggal 1 januari 1970. Untuk menampilkan data detik ke dalam format tanggal kembali dapat menggunakan fungsi date dengan sumber dari jumlah detik menggunakan fungsi microtime. Berikut adalah contoh script untuk menampilkan tanggal yang dimasukkan dari formulir dan tanggal selanjutnya ditambah dengan 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="fontsize: 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>

33

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

Bab 3

Penjelasan script: Pada script di atas mengandung formulir yang berfungsi untuk memasukkan data tanggal dan jumlah hari untuk menghasilkan tanggal setelah memasukkan formulir tanggal ditambah dengan formulir jumlah hari yang telah dimasukkan. Kode PHP yang pertama adalah <?echo $php_self?>, maksud dari kode tersebut adalah untuk mengisikan action pada formulir dengan nilai nama file itu sendiri. Artinya data yang dikirimkan dari formulir akan dikirim ke file itu sendiri. Kode PHP selanjutnya adalah if($submit){, artinya apabila tombol submit yang ada di formulir ditekan maka akan menjalankan operasi selanjutnya yang ada dalam fungsi if. Kemudian fungsi explode(/, $tanggal), adalah fungsi yang digunakan untuk memisahkan data tanggal lengkap dengan bulan dan tahun yang akan dipisah menjadi tanggal sendiri, bulan sendiri dan tahunpun sendiri, kemudian akan dimasukkan ke dalam data array yaitu $data[0] = data tanggal, $data[1] = data bulan, $data[2]= data tahun. Setelah data tanggal dipisahkan kemudian data tersebut dimasukkan ke dalam fungsi mktime untuk dikonversikan ke dalam data detik. Untuk menampilkan data tanggal tersebut harus dikonversikan kembali dengan menggunakan fungsi date. Untuk mencari data tanggal 5 hari lagi maka data hari dijadikan data detik dengan cara dikalikan dengan jumlah detik dalam sehari. Kemudian ditambahkan dengan data detik dari fungsi mktime dan konversikan ke dalam data tanggal dengan fungsi date. 34

Bab 3

Fungsi-fungsi PHP

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

Gambar 3.12 Tampilan formulir untuk menampilkan data tanggal dengan fungsi mktime.

Untuk melihat hasil dari fungsi script mktime tersebut, coba masukkan tanggal 5/4/04 kemudian untuk jumlah hari berikutnya adalah 5 dan Anda tekan tombol Proses, maka akan menghasilkan data tanggal seperti yang Anda masukkan dan data tanggal 5 hari setelah tanggal yang Anda masukkan seperti pada Gambar 3.13.

35

Fungsi-fungsi PHP

Bab 3

Gambar 3.13 Tampilan data tanggal dengan fungsi mktime.

SESSION Session atau sesi pada program PHP adalah salah satu fungsi yang banyak digunakan untuk program-program aplikasi dengan pembatasan akses oleh administrator / webmaster kepada pengunjung yang dikehendaki. Misalkan untuk mengakses halaman data karyawan hanya akan diijinkan oleh karyawan yang bersangkutan saja. Data sesi ini pada dasarnya data yang diambil dari data variabel kemudian disimpan pada webserver. Data sesi ini tidak akan terhapus selama browser belum ditutup, atau sebelum sesi dihapus dengan fungsi PHP untuk menghapus sesi. Pada penulisannya fungsi sesi ini diawali dengan fungsi pertama adalah session_start(). Ketentuan penulisan fungsi untuk memulai session ini harus diletakkan pada awal script. Kemudian untuk mendaftarkan sebuah nilai variabel ke dalam data sesi adalah dengan menggunakan fungsi session_register(); 36

Bab 3

Fungsi-fungsi PHP

Data sesi ini akan tersimpan ke dalam web server pada direktori atau path yang sudah diatur oleh webserver. Data sesi ini tidak dapat dipanggil kembali apabila pengunjung telah keluar dari halaman anggota atau telah menutup browser. Aplikasi dari fungsi sesi ini selalu digabungkan dengan tag HTML yang membentuk sebuah formulir untuk login pengunjung. Berikut adalah contoh aplikasi formulir dengan fungsi sesi untuk mengakses 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" checked name="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>

37

Fungsi-fungsi PHP
</body> </html>

Bab 3

Jalankan script HTML tersebut pada browser, pada browser akan ditampilkan formulir yang akan digunakan oleh pengunjung untuk login seperti pada Gambar 3.14 berikut:

Gambar 3.14 Tampilan formulir untuk login pengunjung.

Apabila Anda perhatikan pada script tersebut ada dua bagian yang penting dalam pengolahan data, yang pertama adalah adanya dua variabel yang akan dikirim datanya dari formulir tersebut ke file pengolah data. Yang kedua adalah action dari formulir tersebut, yaitu berisikan alamat dan nama dari file yang akan dijadikan tujuan pengiriman data apabila tombol login ditekan oleh pengunjung. Berikut adalah script yang berfungsi untuk mengolah data yang diterima dari formulir login dan dituliskan pada file dengan nama member.php:
<? session_start(); ?> <html>

38

Bab 3

Fungsi-fungsi PHP

<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 ke dua</a></font><br> &nbsp;</p> </p> </body> </html>

Penjelasan script: Setiap script yeng mengandung fungsi sesi harus diawali dengan fungsi session_start() sebagai identitas dan berfungsi untuk mengenalkan kepada webserver bahwa dalam halaman tersebut mengandung data sesi. Kemudian pada fungsi selanjutnya adalah session_register() yang berfungsi untuk mendaftarkan data variabel yaitu nama dan status menjadi data sesi. Penulisan fungsi session_register() adalah:
Session_register(nama_variabel);

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

39

Fungsi-fungsi PHP

Bab 3

maka data nama dan status tetap akan terbawa dan apabila ditampilkan di browser akan ditampilkan datanya. Untuk mencobanya, masukkan sebuah nama dan pilih status yang Anda inginkan kemudian tekan tombol Login. Berikut contoh aplikasi login dengan data sesi dengan nama yang dimasukkan adalah Nana dan status dipilih anggota kemudian tekan tombol Login, 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

40

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

Fungsi-fungsi PHP

Penjelasan script: Script yang menggunakan fungsi sesi selalu diawali dengan fungsi pembuka sesi yaitu session_start() pada awal halaman, kemudian pada badan script untuk menampilkan data nama dan status cukup menggunakan fungsi echo saja, sehingga data yang ada pada kedua variabel tersebut dapat langsung ditampilkan. Untuk mencobanya, buka link ke halaman dua pada halaman member.php tersebut, hasilnya akan tampak seperti pada Gambar 3.16 berikut:

Gambar 3.16 Tampilan Halaman 2 setelah pengunjung klik pada link ke halaman 2.

FUNGSI EKSPRESI Fungsi ekspresi disebut juga fungsi perbandingan. Artinya dengan menggunakan fungsi ekspresi ini Anda dapat memberikan nilai 41

Fungsi-fungsi PHP

Bab 3

benar atau salah apabila ada dua atau lebih data yang akan dibandingkan. FUNGSI EREG Fungsi ekspresi yang pertama adalah fungsi ereg. Fungsi ini digunakan untuk membanding dua buah string, apabila salah satu string mempunyai kesamaan dengan data string yang kedua maka nilai yang dihasilkan adalah true atau benar. Bentuk dari fungsi ereg adalah:
$hasil=ereg(string_pola, string_data);

String_pola adalah karakter (penyaring) yang dicocokkan.

yang

digunakan

untuk

filter

String_data adalah string yang dijadikan data sumber, di mana apabila data_pola sesuai dengan string yang ada dalam string data maka hasilnya akan bernilai true atau benar. Berikut contoh script yang menggunakan fungsi ereg sebagai kontrol sebuah konfirmasi pengisian data:
<? // Penggunaan fungsi ereg untuk memeriksa kebenaran data if($submit){ if(ereg(" ",$user)){ echo"<center> User ini yang anda masukkan mengandung spasi.<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>

42

Bab 3
</form> <? } ?>

Fungsi-fungsi PHP

Penjelasan script: Pada script di atas terbagi menjadi dua bagian yaitu script PHTM yang berisikan formulir untuk memasukkan user id dan script PHP yang berfungsi untuk memeriksa data yang dimasukkan mengandung spasi atau tidak menggunakan fungsi if dan ereg untuk mencari kesamaan data spasi tersebut. Untuk mencoba script tersebut, jalankan file ereg.php menggunakan browser sehingga akan tampil sebuah formulir untuk 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 maka fungsi if dan ereg akan memeriksa data yang diisikan dari formulir apakah mengandung spasi atau tidak. Apabila data yang telah Anda masukkan mengandung spasi, maka akan ditampilkan pesan kesalahan seperti pada Gambar 3.18 berikut:

43

Fungsi-fungsi PHP

Bab 3

Gambar 3.18 Tampilan pesan kesalahan dari formulir login.

Dengan menggunakan fungsi ereg ini banyak sekali manfaat yang dapat diambil, pada dasarnya fungsi ereg ini digunakan untuk fungsi penyaring atau filter data dari formulir yang diisi dari user atau pengunjung web. FUNGSI SPLIT() Fungsi regular yang kedua adalah fungsi split. Fungsi ini digunakan untuk memecah sebuah string menjadi beberapa string sesuai dengan pola yang telah ditentukan. Bentuk fungsi split adalah :
$data = split(pola, data_string);

Yang dimaksud dengan pola pada bentuk fungsi di atas adalah format yang digunakan untuk pemisah data string. Kemudian untuk data_string adalah variabel yang mempunyai nilai jenis string atau data string itu sendiri. Untuk lebih jelasnya, coba jalankan script yang menggunakan fungsi split untuk memecah string di bawah ini:
<? // memecah string menggunakan fungsi split()

44

Bab 3

Fungsi-fungsi PHP

$date = "02/06/2004"; // Dipisah dengan tanda slash, titik dan tanda hubung. 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 untuk memecah string dari dua string sumber. Yang pertama adalah string dengan data 02/06/2004. Pada fungsi yang kedua, data string dipecah dengan menggunakan fungsi split. Pola yang digunakan untuk memecah string tersebut adalah [/.-], artinya apabila ada salah satu karakter yang ada dalam tanda kurung siku [ 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, maka string tersebut dipecah menjadi tiga bagian. Data pecahan string tersebut dimasukkan ke dalam beberapa variabel menggunakan fungsi list, kemudian ditampilkan ke dalam browser dengan menggunakan fungsi echo. Pada bagian yang kedua adalah memecah string dengan data "kalimat satu. Kalimat dua. Kalimat tiga.", kemudian string tersebut dipecah dengan menggunakan pola tanda titik yang juga sesuai dengan salah satu pola pemecah string pada fungsi split. Hasil pemecahan string tersebut kemudian dimasukkan ke dalam beberapa variabel dan ditampilkan ke dalam browser menggunakan fungsi echo seperti pada Gambar 3.19 berikut: 45

Fungsi-fungsi PHP

Bab 3

Gambar 3.19 Tampilan pecahan string menggunakan fungsi split.

46

Pada dasarnya database adalah kumpulan data yang disimpan ke dalam sebuah file atau beberapa file. Dalam sistem informasi komputer, database adalah sebuah kumpulan data yang tersusun secara sistematis sehingga akan memudahkan pengguna untuk mengakses dan mengatur sehingga akan menghasilkan sebuah informasi yang efektif dan efisien. Banyak sekali macam dari database, antara lain data karyawan, data cuti, data absensi, data siswa, data penjualan, data inventori dan masih banyak lagi. Database tersebut dapat berdiri-sendiri dan juga dapat digabung menjadi satu kesatuan. Menggabung dua atau lebih jenis database sering juga disebut mengkorelasikan.

Suatu contoh kasus sebuah database karyawan dihubungkan dengan database absensi karyawan. Untuk menggabungkan beberapa database harus ada sebuah penghubung di antara dua database tersebut yang disebut index. Untuk menggabungkan kedua database tersebut dibutuhkan index dengan nama NIK (nomor induk karyawan). Syarat dari sebuah index adalah tidak boleh ada data yang sama dan pada kedua database tersebut harus memuat data index tersebut. Sistem manajemen database (Database Management System) DBMS merupakan software yang banyak digunakan untuk mengolah data, dari pendefinisian database, pengolahan data, perawatan data, 47

Perencanaan Database Menggunakan MySQL

Bab 4

sampai dengan pengaturan siapa saja yang diberi hak untuk mengakses data tersebut.

Sistem manajemen databse relasi merupakan salah satu bentuk dari suatu manajemen database. Sistem manajemen database relasi memiliki 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 dapat dimasukkan, diubah, diambil kembali (dibaca), dicari, dan dihapus recordnya. Relasi, menunjukkan bahwa data yang ada di dalamnya, data pada suatu tabel dapat berhubungan dengan data yang ada pada tabel lainnya.

Ada beberapa database yang umum digunakan sekarang ini, antara lain adalah Oracle, Sybase, MS SQL Server, Interbase, Informix, PostgreSQL,MySQL dan MS Access. Pada proyek yang akan dibuat ini akan menggunakan database MySQL.

Setiap jenis database tersebut memiliki kelebihan dan kekurangan masing-masing. Kemampuan menangani jumlah data yang banyak, kelengkapan system keamanan, kemudahan untuk melakukan backup data replikasi, dan lain-lain merupakan salah satu tawaran database sebagai kelebihan yang diberikan.

MySQL sebagai database, mempunyai banyak kelebihan, pemakai database ini adalah di lingkungan internet merupakan aspek yang paling menonjol. MySQL terkenal dengan pengolahan data yang cepat walaupun data record yang dimasukkan dalam jumlah yang banyak.

TABEL
Data yang disimpan ke dalam database dipisahkan menggunakan tabel-tabel. Setiap tabel memiliki data / informasi yang sudah dikelompokkan, disusun dalam setiap baris dan kolom. Data setiap baris dinamakan record. Setiap record memiliki beberapa macam informasi, yang dipisahkan oleh kolom yang disebut field. 48

Bab 4

Perencanaan Database Menggunakan MySQL

Untuk lebih jelasnya, perhatikan contoh struktur database dalam sebuah tabel berikut:
Nama Bani Iwan Sumadi Jaenal Nana Adin Alamat Jl. Manggis 53 Jl. Pahlawan 32 Jl. Jalak 44 Jl. Seneru 65 Jl. Mawar 98 Jl. Salak 44 Kota Madiun Malang Surabaya Ponorogo Ponorogo Jombang Umur 33 31 36 28 27 25 Jabatan Personalia Operasional Kepala Bagian Keuangan Satpam Administrasi Front office

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

TIPE DATA
Tipe data yang dapat disimpan ke dalam database secara garis besar dibedakan menjadi : Tipe data Numerik Tipe data Karakter Tipe data Tanggal Tipe data Boolean Tipe data numeric adalah semua data bilangan (angka) yang dapat diperhitungkan bukan angka yang bersifat keterangan. Contohnya adalah data angka jumlah alat tulis pada sebuah kantor, jumlah barang yang dijual pada sebuah toko dan lain sebagainya. Jumlah angka ini dapat dijumlahkan / diperhitungkan dengan data angka yang lain, sehingga akan menghasilkan data angka yang benar juga. Contoh data angka namun bukan data angka yang sebenarnya adalah 49

Perencanaan Database Menggunakan MySQL

Bab 4

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

FIELD KUNCI ATAU INDEX


Pada setiap baris data record sebaiknya ditentukan sebuah field kunci sebagai pengenal dan pembeda antar baris, sehingga dapat memudahkan dalam mencari / pembacaan data dan lebih cepat dalam mendapatkan informasi yang berada dalam satu tabel. Pengenal baris dalam sebuah baris record tersebut disebut field kunci atau key index. Field kunci ini adalah sebuah kolom khusus dan biasanya isi dari kolom 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 dengan database yang digunakan. Misalkan field kunci pada database karyawan dapat menggunakan Nomor Induk Karyawan (NIK) sebagai field kunci karena NIK ini pasti tidak ada yang sama antara karyawan yang satu dengan yang lainnya.

50

Bab 4

Perencanaan Database Menggunakan MySQL

PERSIAPAN MERANCANG DATABASE


Sebenarnya secara sederhana membangun sebuah database adalah pekerjaan mendefinisikan tabel-tabel yang akan dibuat untuk menjadi satu kesatuan database. Setiap tabel yang akan dibuat selalu didefinisikan dan digunakan untuk menyimpan sejumlah informasi berdasarkan kolom-kolom yang ada di dalam tabel. Misalkan database siswa, maka pada tabel tersebut akan dibuat beberapa kolom yang akan memisahkan data-data siswa sesuai dengan field yang akan dimasukkan. Misalkan field yang akan digunakan pada tabel database siswa adalah nama, alamat, nama orangtua, kelas, jenis kelamin dan lain sebagainya.

Hasil perancangan sebuah database tergantung pada pemikiran pembuat database. Jadi kemampuan dan keahlian pembuat database untuk menganalisa situasi dan kondisi dari obyek yang akan menggunakan database tersebut sangat dibutuhkan. Apabila seorang pembuat database tidak cukup jeli dalam menganalisa permasalahan maka database yang dihasilkanpun akan jauh dari harapan sebuah system manajemen database.

Hasil perancangan database ini juga sangat menentukan sekali system yang akan dibangun, perancangan harus diawali dengan tahap analisis system. Ketidakjelian dan kepekaan seorang analis akan menyebabkan awal dari ketidaksempurnaan database yang dibuat, demikian juga sederhananya sebuah database akan mengakibatkan banyaknya kekurangan informasi yang harus dikelola oleh aplikasi pemakai database tersebut. Dengan demikian penggunaan hasil system aplikasi ini akan banyak mengalami hambatan dan kelemahan pada data yang dibutuhkan. Untuk dapat merancang dan menyempurnakan database adalah dengan melihat contoh kasus yang dapat mencakup banyak informasi dan banyak aplikasi yang akan mengelola database tersebut. Dengan menganalisis contoh kasus tersebut, mungkin akan ditemukan kelemahan dan kekurangan dari database tersebut. Setelah system database dijalankan dan dianalisa maka akan ditemukan beberapa kendala dan kekurangan. Kekurangan dan kelemahan database yang telah ditemukan tersebut kemudian disempurnakan kembali dengan

51

Perencanaan Database Menggunakan MySQL

Bab 4

mengubah system database tersebut hingga database tersebut mencapai tingkat sempurna, artinya kelemahan-kelemahan yang ditemukan tersebut telah disempurnakan. Dengan cara tesebut seorang perancang database akan dilatih untuk jeli dan tanggap terhadap sebuah kasus dan bagaimana cara membuat database sehingga database yang telah dibuat akan menjadi jalan pemecahan sebuah kelemahan dari sebuah system informasi database.

CONTOH KASUS PEMBUATAN DATABASE


Untuk memperjelas bagaimana merancang dan membuat sebuah database yang sesuai dengan kondisi sebuah system informasi, kita akan mencoba dengan menggunakan sebuah contoh kasus. Contoh kasus yang akan diambil adalah sebuah penanganan database yang sederhana, namun diharapkan nanti akan memberikan gambaran yang cukup jelas bagaimana melakukan perancangan sebuah database. Contoh kasus yang diambil adalah sebuah database sekolah yang digunakan untuk mengelola nilai ujian siswa.

Pekerjaan pertama yang akan dilakukan adalah mendefinisikan tabel yang akan digunakan untuk menyimpan data siswa dan data nilai ujian siswa. Diasumsikan seorang siswa akan mengambil beberapa mata pelajaran sekolah, misalkan setiap siswa akan mengambil tiga mata pelajaran setiap semester. Pada contoh kasus ini, kita menggunakan dua buah tabel, yaitu tabel siswa yang mendefinisikan NAMA siswa dan NIS (nomor induk siswa). Hal ini dimaksudkan untuk menghindari data siswa yang ganda. Misalkan ada nama yang sama namun untuk memberikan nomor induk siswa pasti tidak sama. Pada tabel ini akan diberikan sebuah index sebagai kunci pembacaan data. Field kunci pada tabel siswa ini adalah field NIS (nomor induk siswa). Dengan menggunakan field kunci NIS ini nanti diharapkan tidak akan terjadi pembacaan data yang berulang.

52

Bab 4

Perencanaan Database Menggunakan MySQL

Tabel Siswa Nama Dinna Mawar Bani Bani Nana Tabel Nilai NIM * 1003 1004 1005 1006 1007

NIS * 1003 1004 1005 1006 1007

Mata Pelajaran 1 Matematika Agama Ketrampilan Matematika Agama

Nilai 8 7 6 8 7

Mata Pelajaran 1 Bhs. Inggris Bhs. Daerah Bhs. Daerah Bhs. Inggris

Nilai 6 8 6

Mata Pelajaran 1 Olah Raga Olah Raga Ketrampilan

Nilai 7 8 9

Apabila diperhatikan pada tabel siswa yang ada di atas, terdapat dua buah nama siswa yang sama, kemudian Anda perhatikan pada field yang kedua dengan nama NIS, maka pada saat pembacaan data siswa tidak dikhawatirkan akan terjadi pembacaan ganda. Pada tabel siswa tersebut masih dapat dimodifikasi lagi dengan ditambah field alamat nama orang tua, umur, tempat tanggal lahir dan data yang berhubungan dengan siswa yang lainnya. Tabel yang kedua adalah tabel yang digunakan untuk menampung data nilai siswa. Data nilai siswa tersebut dapat dibaca menggunakan field kunci NIM, karena hanya pada field ini yang tidak akan memiliki data ganda dan dapat dijadikan field kunci.

1. 2. 3.

Namun demikian rancangan tabel-tabel ini masih mempunyai kelemahan-kelemahan, khususnya pada tabel nilai, sebab: Bagaimana apabila ada siswa yang mengikuti mata pelajaran yang lebih dari tiga ? Di mana harus menyimpannya ? Masih ada kolom yang kosong, karena ada beberapa siswa yang hanya mengambil kurang dari tiga mata pelajaran.

Pada saat melakukan query akan mengalami kesulitan, karena pada saat melakukan pencarian / pembacaan akan melakukan pemeriksaan setiap record berapa mata pelajaran yang diambil, 53

Perencanaan Database Menggunakan MySQL

Bab 4

4. 5.

berapa mata pelajaran yang sudah keluar nilainya untuk setiap siswa.

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

Anda perhatikan pada perubahan perancangan database berikut untuk memperbaiki kelemahan pada database yang dibuat sebelumnya: Untuk meminimalkan kelemahan pada rancangan database tersebut, maka untuk pembuatan tabel dibuat sebanyak 3 jenis. Yang pertama adalah tabel siswa, tabel nilai dan tabel mata pelajaran.

Data yang dientrikan akan tidak konsisten, karena pada saat menuliskan data mata pelajaran ada kemungkinan kesalahan ketik dan hal ini akan mengakibatkan data tidak valid lagi.

Karena pada database nilai siswa tersebut ada tiga tabel, maka untuk menggabungkan data yang ada di dalamnya dibutuhkan relasi antar tabel. Untuk membuat relasi antar tabel dibutuhkan sebuah field yang dijadikan field index. Syarat field yang akan dijadikan index dari sebuah tabel dan akan direlasikan 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 tabel siswa dan nilai adalah field NIM, kemudian untuk field index sebagai field penghubung / relasi antara tabel nilai dan mata pelajaran adalah field kode pelajaran. Berikut adalah gambaran dari system database nilai ujian siswa dengan menggunakan tiga tabel:

54

Bab 4

Perencanaan Database Menggunakan MySQL

Tabel Siswa
Nama Dinna Mawar Bani Bani Nana

NIS * 1003 1004 1005 1006 1007

Tabel Nilai
NIM * 1003 1003 1003 1004 1004 1005 1006 1007 1007 1007

Kode pelajaran Mp1 Mp6 Mp5 Mp5 Mp3 Mp3 Mp1 Mp4 Mp1 Mp7

8 7 9 7 6 6 8 7 7 9

Nilai

Kode Pelajaran
Kode Pelajaran Mp1 Mp2 Mp3 Mp4 Mp5 Mp6 Mp7 Mata Pelajaran Matematika Agama Ketrampilan Agama Bhs. Inggris Bhs. Daerah Olah raga

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

55

Perencanaan Database Menggunakan MySQL

Bab 4

Pada saat entri data dan pencarian (query) pada salah satu data pada tabel tertentu lebih cepat, karena hanya membaca satu tabel 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 untuk menambahkan data tidak harus mengakses field nama siswa pada tabel siswa dan juga field mata pelajaran pada tabel mata pelajaran. Perhatikan pada kode siswa dengan nomor induk siswa 1003, pada daftar tabel nilai terdapat tiga buah, artinya siswa dengan nomor induk siswa 1003 telah mengambil mata pelajaran sebanyak tiga buah. Apabila siswa tersebut akan mengambil mata pelajaran lebih dari tigapun tidak mengalami permasalahan. Pada saat proses query jumlah pelajaran yang diambil oleh siswa dengan nomor induk 1003 pun lebih mudah.

RELASI
Jika diperhatikan pada contoh kasus di atas, maka ditemukan sebuah relasi antara satu tabel dengan tabel yang lain. Relasi yang ada adalah hubungan atau relasi antar entri data pada tiap-tiap tabel. Pada setiap tabel data akan diwakili dengan sebuah field yang dijadikan field index untuk merelasikan dengan tabel yang lain. Relasi yang pertama adalah antara tabel siswa dengan tabel nilai, di sini field yang digunakan untuk merelasikan adalah field NIS. Pada tabel siswa dan tabel nilai sama-sama mempunyai field dengan data entri NIS dan tidak mempunyai data yang diulang-ulang. Pada setiap siswa dapat mengambil mata pelajaran sesuai dengan jumlah yang ditentukan oleh system. Data tersebut kemudian akan disimpan pada tabel nilai. Tabel nilai ini akan menampung NIS siswa yang mengambil mata pelajaran, data kode mata pelajaran dan data nilai yang dapat dimasukkan dari system.

Dari tabel nilai ini akan dapat diperoleh satu NIS siswa dapat tercatat pada lebih dari satu baris atau entri, demikian juga dengan kode mata pelajaran dapat tercatat lebih dari satu entri data. Dengan contoh 56

Bab 4

Perencanaan Database Menggunakan MySQL

kasus di atas dapat dilihat sebuah gambaran bahwa entri siswa terelasi dengan banyak entri mata pelajaran. Relasi yang terjadi akan disimpan ke dalam tabel nilai berupa NIS dan mata pelajaran. Kemudian untuk field nilai menjadi sebuah keterangan dalam tabel nilai tersebut. Sebagai gambaran hubungan data tabel dalam database tersebut dapat dilihat seperti pada diagram berikut:
SISWA NIS NAMA NIS = NIS NILAI NIS KODE NILAI KODE = KODE MATA PELAJARAN KODE MATA PELAJARAN

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

57

Setelah kita memahami tentang database dan system dalam database tersebut pada bab 4, maka langkah berikutnya dalam membangun sebuah database karyawan yang menangani tentang cuti online dan database kehadiran / absensi karyawan adalah merancang sebuah database yang efektif dan efisien. Dengan membangun sebuah struktur database yang baik diharapkan semua kelemahan pada sebuah system dapat diminimalkan. Pada system database karyawan online ini akan dibutuhkan beberapa database, 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 dan bagaimana membuat dan mengatur relasi antar tabel sehingga akan menjadi sebuah system yang baik.

59

Mempersiapkan Database

Bab 5

MEMBUAT DATABASE
Untuk kasus database karyawan ini hanya dibutuhkan sebuah database saja, dengan nama karyawan. Untuk membuat database tersebut menggunakan sebuah script PHP seperti yang ada di bawah ini:
<? // 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 database adalah mysql_create_db (nama_database);.

Namun sebelum fungsi untuk membuat database dituliskan, terlebih dahulu program harus terhubung pada MySQL. Fungsi yang digunakan 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 password dari masing-masing user.

DATABASE

UNTUK ADMINISTRATOR

USERNAME

DAN

PASSWORD

Database ini digunakan untuk menyimpan username dan password administrator. Untuk menangani database ini cukup dibuat sebuah tabel dengan tiga field, yaitu id sebagai index, 60

Bab 5

Mempersiapkan Database

user_name dan password. Tabel yang dibuat diberi nama admin dan field-fieldnya adalah sebagai berikut : Field Id User Password Tipe Int varchar Varchar Panjang 2 10 10 Keterangan Primary key

Pada kasus di atas, untuk field id mempunyai tipe Int yaitu jenis angka dengan panjang 2 karakter dan mempunyai atribut primary key auto_increament. Kemudian untuk field user dan password menggunakan tipe varchar dengan panjang 10 karakter. Script PHP yang digunakan untuk membuat tabel tersebut adalah:
<? // membuat table admin 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:

Perintah yang digunakan untuk membuat tabel adalah dengan fungsi CREATE TABLE nama_tabel (field1, field2, .. ). Pada saat menentukan 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 artinya nilai yang akan dituliskan pada field id ini akan angka yang dimulai dengan angka 1 dan bertambah satu setiap penambahan entri baru. Kemudian untuk field user dan password mempunyai tipe varchar dengan panjang 10 karakter.

61

Mempersiapkan Database KARYAWAN

Bab 5

DATABASE UNTUK MENYIMPAN DATA HAK AKSES


Kriteria hak akses pada setiap karyawan diharapkan berbedabeda, misalkan hak akses karyawan sebagai atasan diharapkan lebih luas dibandingkan dengan hak akses karyawan biasa. Hal ini dilakukan supaya ada pembedaan fungsi dan tugas karyawan sesuai dengan kelompok hak akses masing-masing karyawan. Misalkan pada karyawan biasa hanya diberi hak untuk melihat data pribadi, halaman pengajuan cuti dan halaman persetujuan cuti untuk melihat hasil pengajuan cuti yang telah diajukan kepada atasan. Kemudian hak atasan dapat melihat data seluruh karyawan dan memberikan persetujuan cuti kepada karyawan yang mengajukan cuti. Untuk membuat database hak akses ini dibuatkan sebuah tabel dengan nama hak_akses dan menggunakan dua buah field yaitu NIK dan kode_akses. Berikut keterangan lengkap tentang database hak akses tersebut: Field NIK Kode_akses Tipe varchar enum Panjang 8 Keterangan 0,1,11,2

Field NIK menggunakan tipe varchar dengan panjang 8 karakter. Kemudian untuk field kode_akses sengaja menggunakan tipe enum, artinya value atau nilai dari field ini sudah diset atau ditentukan pada saat tabel dibuat. Nilai dari field kode akses ini sudah ditentukan yaitu 0 artinya digunakan untuk karyawan biasa, 1 adalah kode hak akses yang diberikan kepada karyawan sebagai atasan yang memberikan persetujuan cuti, 11 adalah kode akses yang diberikan kepada karyawan yang menjabat sebagai wakil atasan yang bertugas memberikan keputusan cuti apabila atasan sedang cuti atau tidak aktif, kemudian untuk 2 adalah kode akses yang diberikan kepada kepala bagian yang berfungsi untuk mengatur data karyawan yang menjadi bawahannya. Script yang digunakan untuk membuat tabel tersebut adalah sebagai berikut: 62

Bab 5

Mempersiapkan Database

<? 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 dengan nama hak_akses dengan field sebanyak 2 buah yaitu NIK dengan tipe varchar, panjang 8 karakter, value defaultnya adalah kosong, kemudian untuk field kedua adalah kode_akses dengan tipe enum nilai pilihannya adalah 0, 1, 11, 2 dan nilai defaultnya adalah 0.

DATABASE KARYAWAN
Database yang harus dibuat berikutnya adalah database karyawan. Database karyawan ini nanti digunakan untuk menampung seluruh informasi yang berhubungan dengan identitas karyawan. Misalkan : nama, NIK, alamat, jabatan, golongan, NIK atasan, NIK kepala bagian, status dan password karyawan. Berikut keterangan lengkap tentang tabel untuk database karyawan: Field Id Nama Nik Tingkat Jabatan Posisi Nik_atasan Nik_support Tipe Int Varchar Varchar Varchar Varchar Varchar Varchar Varchar Panjang 2 50 10 10 50 50 10 10 Keterangan Auto_increment, pramary key -

63

Mempersiapkan Database Field Status Password Tipe Enum Varchar Panjang 0,1 8 -

Bab 5 Keterangan

Field id mempunyai tipe int (integer) dan memiliki atribut auto_increment, primary key, maksudnya adalah value yang ada dalam field tersebut akan ditambah satu apabila terdapat data entri baru yang dimasukkan. Jadi data pada field id tidak diisikan melalui form. Pada sistem yang akan dibuat, field id akan digunakan sebagai index pembacaan data karyawan yang akan diakses oleh atasan dan support. Field NIK yang ada dalam tabel karyawan tersebut digunakan untuk menghubungkan dengan data yang ada dalam tabel hak_akses untuk memberikan hak akses terhadap karyawan dengan NIK yang sama tersebut. Field status sengaja dibuat dengan tipe field enum, maksudnya data yang diisikan nanti akan dibatasi dengan data yang sudah ditetapkan oleh sistem, ketentuan data yang akan diisikan pada field status adalah 0 dan 1. Arti dari nilai tersebut adalah sistem akan membaca apabila value atau nilai dari field status pada tiaptiap baris tersebut 0 maka karyawan tersebut mempunyai status sedang aktif, kemudian apabila nilai data dari field status tersebut 1 maka akan diberikan keterangan sedang cuti.

DATABASE JUMLAH CUTI


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

64

Bab 5

Mempersiapkan Database

Pada proyek ini diasumsikan akan digunakan oleh sistem selama tiga tahun dan dapat ditambah apabila dikehendaki oleh administrator. Setiap tahun diberikan jumlah cuti sebanyak 12 hari yang dapat diambil oleh karyawan. Selain cuti tahunan karyawan juga diberikan cuti khusus yang disebut cuti besar. Pada aplikasinya karyawan dapat mengambil cuti maksimal sebanyak 12 selama setahun dan juga dapat mengambil cuti besar dengan jumlah 45 hari yang harus diambil dalam sekali pengajuan cuti besar. Berikut adalah keterangan detail tentang tabel cuti sebagai tempat untuk menyimpan data jumlah cuti: Field Id NIK Th2004 Th2005 Th2006 Besar Tipe int varchar int int int int Panjang 3 10 12 12 12 45 Keterangan Auto_increment

Data yang dalam field NIK pada tabel cuti tersebut digunakan sebagai kunci relasi dengan tabel karyawan dan tabel lama_cuti. Kemudian untuk field th2004, th2005, th2006 dan besar menggunakan tipe int (integer) karena digunakan untuk menyimpan 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',

65

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

Bab 5

Penjelasan script :

Bila diperhatikan pada script di atas pada pembuatan tabel dengan field besar sampai dengan field th2006 menggunakan tipe int dengan panjang 2 karakter dan mempunyai nilai default, artinya pada saat tabel dibuat value atau nilai dari tabel tersebut sudah dimasukkan sesuai dengan nilai yang ada dalam nilai defaultnya.

DATABASE LAMA CUTI


Database lama cuti digunakan untuk menampung data karyawan yang mengajukan cuti. Field yang akan dibuatpun agak banyak, karena akan digunakan untuk menampung beberapa data mengenai cuti yang diambil karyawan. Berikut adalah daftar field yang ada dalam tabel cuti : Field Id Nama Nik nik_atasan nik_support Mulai Masuk Lama Jenis Alamat Alasan Catatan 66 int varchar varchar varchar varchar varchar varchar char varchar varchar varchar varchar Tipe 4 200 10 10 10 20 20 2 20 255 255 255 Panjang Keterangan auto_increment

Bab 5 Field Tanggal Status Aktivasi Tipe varchar varchar varchar

Mempersiapkan Database Panjang 20 20 20 Keterangan

Field nik digunakan untuk menghubungkan tabel cuti dengan tabel karyawan. Pada field tanggal mengapa tidak menggunakan tipe date, namun menggunakan tipe varchar ? Dengan kasus demikian Anda akan diajak untuk melihat keunikan dari script PHP, walaupun data tanggal disimpan dalam tipe teks namun masih dapat diolah oleh PHP menjadi informasi dalam bentuk tanggal.

67

Dalam membangun sebuah web dengan skala besar, umumnya akan membutuhkan banyak file script pendukung. Script pendukung tersebut akan digunakan oleh file script PHP yang lain. Script pendukung ini biasanya mempunyai kegunaan khusus dan sering dibutuhkan dalam sebuah sistem web. Contoh kegunaan khusus ini misalnya script yang digunakan untuk mengakses database, script yang berfungsi sebagai otentikasi, script yang berfungsi untuk mendeklarasikan sebuah variabel dan lain sebagainya.

SCRIPT UNTUK MENGAKSES DATABASE


Script pendukung yang pertama adalah script yang berfungsi untuk mengakses database. Script ini akan digunakan oleh file-file PHP lain yang akan mengakses data dalam database MySQL. Script ini akan disimpan pada sebuah file dengan nama sambung.php yang isinya adalah:
<?php // sambung.php // script yang digunakan untuk mengakses database.

69

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

Bab 6

Penjelasan script: Pada script tersebut terdapat banyak variabel, antara lain variabel $host mempunyai nilai localhost adalah nama server yang digunakan oleh database. Variabel $userdb adalah variabel yang memiliki nilai root yaitu user yang mempunyai hak akses terhadap database. Variabel $passdb adalah variabel yang mempunyai nilai kosong, pada variabel ini akan diberi nilai password yang digunakan untuk mengakses database apabila akses database diberikan password. Variabel $namadb adalah variabel yang digunakan untuk menyimpan nilai karyawan yaitu nama dari database yang akan diakses. Perintah yang digunakan untuk mengakses database adalah:
$sambung=mysql_connect($host,$userdb,$passdb);

Kemudian untuk memilih database yang akan diakses adalah dengan menggunakan fungsi :
mysql_select_db($namadb,$sambung);

Dengan menggunakan file tersebut, maka file PHP lain apabila akan mengakses database tidak perlu lagi menulis script tersebut berulangulang, namun dengan memanggil file tersebut database dapat diakses dengan lancar.

SCRIPT UNTUK LOGIN


Script untuk login ini berguna untuk proses otentikasi dan berhubungan dengan script otentikasi. Kegunaan dari script ini

70

Bab 6

Script Pendukung

adalah untuk menampilkan formulir login bagi anggota. Berikut script yang 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>

71

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

Bab 6

SCRIPT UNTUK OTENTIKASI


Script otentikasi ini selalu digunakan pada semua halaman administrator atau halaman anggota dengan akses terbatas anggota tersebut. Pada proyek pembuatan database cuti online ini, file tersebut 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 where nik='$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");

72

Bab 6
}else{ header("Location:./keluar.php"); } }else{ echo"<HTML> <HEAD>

Script Pendukung

<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 untuk memeriksa kebenaran username dan password yang diisikan oleh karyawan, kemudian apabila data yang diisikan sudah benar maka akan dibuat data sesi dan akses database data_karyawan dan data_cuti. Script tersebut akan diuraikan berdasarkan fungsinya dalam sebuah sistem. Fungsi yang pertama adalah:
session_start();

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

Script Pendukung

Bab 6

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

Yang perlu diperhatikan dalam memanggil file dalam file lain adalah path atau lokasi dari file yang dipanggil harus benar-benar tepat. Berikutnya adalah membaca data yang ada dalam database, pada script ini akan membaca dua kali database yang sama, yaitu database karyawan. Pada pembacaan yang pertama adalah berdasarkan dengan nik karyawan dan pembacaan yang kedua berdasarkan dengan nik atasan dari karyawan tersebut. Berikut adalah script yang digunakan 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 where nik='$user[nik_atasan]'"); $user2=mysql_fetch_array($data2);

Fungsi yang digunakan untuk membaca data adalah:


mysql_query("select * from data_karyawan where nik='$nik'");

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

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

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

74

Bab 6
session_register("nik"); session_register("password");

Script Pendukung

Fungsi di atas digunakan untuk mendaftarkan variabel nik dan password ke dalam data sesi. Dengan demikian nilai dari variabel nik dan password akan selalu terbawa ke halaman yang dibuka berikutnya selama sesi belum dihapus atau sebelum browser ditutup. Pada langkah berikutnya script akan menganalisa hak akses dari karyawan yang telah masuk dengan menggunakan fungsi if seperti pada 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 menggunakan kode angka yaitu apabila karyawan mempunyai kode akses 1, maka karyawan tersebut mempunyai hak akses sebagai atasan dan akan diarahkan untuk menuju file data_karyawan.php. File ini akan menampilkan data karyawan yang menjadi bawahannya dan karyawan yang sedang atau mengajukan cuti dari karyawan yang sedang login. Kode akses yang kedua adalah menggunakan angka 0, artinya karyawan yang mempunyai hak akses biasa dan hanya dapat melihat data personal dirinya saja. Karyawan ini hanya dapat mengajukan cuti dan melihat persetujuan cuti yang telah diajukan kepada atasannya.

75

Script Pendukung

Bab 6

Kode akses selanjutnya adalah angka 2, artinya karyawan yang memiliki hak akses sebagai support atau kepala bagian. Karyawan ini mempunyai akses pada data karyawan dibawahnya dan tidak mempunyai hak untuk memberikan keputusan diterima atau ditolaknya sebuah pengajuan cuti. Kemudian untuk hak ases dengan menggunakan kode angka 11 adalah karyawan yang mempunyai status sebagai wakil atasan. Fungsi wakil atasan dalam program ini adalah karyawan yang dapat memberikan keputusan diterima atau tidak pengajuan cuti yang diajukan oleh karyawan bawahannya apabila atasan sedang berhalangan atau sedang cuti. Kode akses 22 adalah hak akses yang diberikan kepada wakil kepala bagian. Tugas dari wakil kepala bagian adalah memberikan informasi tentang karyawan yang ada di bawahnya apabila kepala bagian sedang tidak aktif atau cuti.

SCRIPT UNTUK MEMERIKSA KEBERADAAN

SESI

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

76

Bab 6

Script Pendukung

ke dalam sebuah file yang diberi nama cek.php. Pada setiap file yang membutuhkan konfirmasi data sesi dapat memanggil file ini dengan perintah include. Berikut script yang digunakan untuk memeriksa data 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 sangat penting dan berfungsi untuk memeriksa keberadaan data sesi yaitu:
session_start(); if(!session_is_registered("password")){

Pada bagian baris pertama adalah session_start() digunakan program untuk mendefinisikan bahwa pada script tersebut memiliki data sesi dan pada baris kedua yaitu session_is_registered yang berfungsi untuk memeriksa keberadaan data sesi dengan nama password. Apabila data sesi password tidak ditemukan maka program akan mengalihkan pengunjung untuk membuka file error.php yang menyatakan informasi kesalahan dengan menggunakan fungsi header. Fungsi exit; pada script di atas berfungsi untuk menghentikan pembacaan script dibawahnya agar perintah-perintah yang tidak sesuai syarat data sesi akan diabaikan.

77

Langkah berikutnya adalah menyusun file-file yang digunakan untuk membuat program pengolah database karyawan. File-file ini dibuat sesuai dengan fungsi dalam program ini.

SCRIPT UNTUK MENGAKSES DATABASE


Untuk koneksi dengan database dalam proyek ini menggunakan database MySQL diperlukan sebuah script yang sifatnya global yang berfungsi untuk mengakses database tersebut. Script tersebut akan disimpan ke dalam sebuah file dan nantinya akan dapat dipanggil oleh file lain yang membutuhkan koneksi dengan database. Dengan menggunakan file koneksi ini maka setiap script yang membutuhkan hubungan dengan database tidak akan membuat script baru dengan fungsi untuk koneksi ke database secara berulang-ulang. Berikut ini adalah script yang digunakan untuk koneksi ke database dan disimpan ke dalam sebuah file dengan nama sambung.php.
<?php // sambung.php // script yang berfungsi untuk koneksi dengan database MySQL. $host="localhost"; $userdb="root";

79

File Pendukung dalam Program


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

Bab 7

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 ini digunakan untuk menghubungkan program dengan database MySQL dengan menggunakan parameter yaitu server host, username dan password. Server yang digunakan biasanya adalah localhost, username dan password diisi sesuai dengan username dan password pada saat daftar pada server MySQL. Script berikutnya adalah mysql_select_db($namadb, $sambung);. Script ini berfungsi untuk memilih database yang akan diakses. $namadb adalah nama dari database yang akan diakses, kemudian untuk $sambung adalah variabel yang mempunyai nilai hasil koneksi database yang menggunakan fungsi mysql_connect.

SCRIPT UNTUK MEMBUAT DATABASE


Untuk membuat media penyimpan data dalam MySQL, yang pertama harus dilakukan adalah membuat sebuah database terlebih dahulu. Setelah database dibuat, langkah berikutnya adalah membuat sebuah tabel yang berisikan field-field sesuai dengan kebutuhan penyimpanan data. Fungsi yang digunakan untuk membuat database ini adalah:

80

Bab 7 Mysql_Create_db(database);

File Pendukung dalam Program

Database adalah string yang berisikan kata yang akan menjadi nama dari database. Berikut ini adalah contoh script yang berfungsi untuk membuat database :
<? // 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 berhubungan dengan koneksi database dan membuat database.

Untuk membuat database, langkah yang pertama adalah melakukan koneksi terlebih dahulu dengan database menggunakan perintah mysql_connect(), berikut ini adalah perintah untuk melakukan koneksi dengan database yang ada dalam script di atas:

81

File Pendukung dalam Program

Bab 7

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

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

Pada script di atas karyawan adalah nama database yang akan dibuat menggunakan fungsi mysql_create_db();.

Jalankan kode program di atas pada browser, maka database dengan nama karyawan akan dibuat dan menampilkan informasi bahwa koneksi dengan mysql berhasil dan database karyawan telah sukses dibuat seperti pada gambar berikut:

Gambar 7.1 Membuat database.

SCRIPT UNTUK MEMBUAT TABEL


Tabel dalam sebuah database adalah media untuk menyimpan data. Data yang ada pada tabel ini tiap-tiap barisnya memiliki beberapa 82

Bab 7

File Pendukung dalam Program

informasi yang disimpan pada masing-masing tabel. Untuk sebuah proyek pembuatan database, setelah dibuat sebuah database kemudian harus menyediakan sebuah tabel. Tabel yang ada dalam database ini tidak ada begitu saja, namun harus dibuat dengan ketentuan sesuai dengan kondisi atau kasus sebuah program. Pada proyek administrasi Cuti karyawan online ini membutuhkan beberapa tabel yang digunakan untuk menyimpan data-data tertentu.

TABEL KARYAWAN
Yang pertama dibutuhkan tabel untuk menyimpan data karyawan dengan nama tabelnya adalah karyawan. Berikut script yang digunakan untuk membuat tabel karyawan:
<? // buat_tabel_karyawan.php // membuat tabel karyawan Includesambung.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); ?>

83

File Pendukung dalam Program Penjelasan script :

Bab 7

Baris pertama pada script di atas adalah perintah untuk memanggil file sambung.php, yang mana dalam file tersebut terdapat script yang berfungsi untuk melakukan koneksi dengan database MySQL. Perintah untuk memanggil file tersebut adalah menggunakan fungsi include.

Fungsi berikutnya adalah CREATE_TABLE();. Perintah ini digunakan untuk membuat sebuah tabel. Pada script ini akan dibuat sebuah tabel dengan nama karyawan dengan field-field antara lain: id, nama, nik, tingkat, jabatan, posisi, nik_atasan, nik_support, status, password. Pada setiap field memiliki atribut sendiri-sendiri sesuai dengan jenis data yang akan dimasukkan selanjutnya. Atribut varchar digunakan pada field yang akan digunakan untuk data tipe teks dengan panjang kurang atau sama dengan 255 karakter. Atribut int diberikan pada field yang akan digunakan untuk menampung data tipe integer atau angka. Enum adalah atribut yang diberikan kepada field yang akan digunakan untuk menampung data yang sudah ditentukan sebelumnya, pada kasus ini adalah data 1 dan 0. Kemudian pada field id juga memiliki atribut tambahan, yaitu auto_increment dan PRIMARY KEY, artinya adalah data yang akan diisikan ke dalam field ini data angka berurutan dan secara otomatis ditambahkan apabila ada masukkan baru. Selain itu data pada field ini tidak ada data yang kembar.

Untuk membuat tabel tersebut dengan cara menjalankan file buat_tabel_karyawan.php menggunakan bantuan browser. Setelah dijalankan maka tabel karyawan secara otomatis akan dibuat dalam database karyawan tersebut. Berikut apabila tabel tersebut ditampilkan dengan menggunakan SQL dalam browser:

84

Bab 7

File Pendukung dalam Program

Gambar 7.2 Tampilan struktur tabel karyawan

TABEL HAK AKSES


Tabel yang perlu disiapkan berikutnya adalah tabel hak_akses yang digunakan untuk menyimpan data hak akses pada tiap-tiap karyawan. Berikut adalah script untuk membuat tabel hak_akses:
<? // buat_tabel_hakakses.php // membuat tabel hak_akses Includesambung.php; CREATE TABLE hak_akses ( nik varchar(8) NOT NULL default '', kode_akses enum('0','1','11','2') NOT NULL default '0' ) TYPE=MyISAM; ?>

85

File Pendukung dalam Program Penjelasan Script :

Bab 7

Pada script untuk membuat tabel hak_akses di atas masih menggunakan file koneksi yang sama, yaitu memanggil file sambung.php menggunakan fungsi include. Berikutnya untuk membuat tabel juga menggunakan fungsi create_table() dengan field yang dibuat adalah nik memakai atribut varchar panjang karakter 10 dan field hak_akses menggunakan atribut enum dan diatur pilihan yang sudah ditentukan yaitu 0, 1, 11, 2. Pada pilihan yang telah ditentukan ini mempunyai arti bahwa hak akses 0 adalah hak akses biasa yang akan diberikan kepada karyawan biasa, kemudian kode akses 1 yaitu hak akses sebagai atasan akan diberikan kepada karyawan yang menjadi atasan dan hak akses 11 adalah kode akses yang diberikan kepada karyawan yang mempunyai jabatan wakil atasan. Pada karyawan yang mempunyai jabatan sebagai support atau kepala bagian akan diberikan kode hak akses 2. Berikut adalah tampilan tabel hak akses apabila diakses menggunakan SQL pada browser :

86

Bab 7

File Pendukung dalam Program

Gambar 7.3 Tampilan tabel hak_akses

TABEL DATA CUTI


Untuk menampung data-data karyawan yang sedang cuti dan data-data yang berhubungan dengan cuti karyawan, maka dibuat sebuah tabel khusus untuk menampung data tersebut. Tabel ini diberi nama data_cuti. Berikut adalah script yang digunakan untuk membuat tabel data_cuti:
<? // membuat tabel data_cuti Includesambung.php; CREATE TABLE data_cuti ( id int(4) NOT NULL auto_increment,

87

File Pendukung dalam Program


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

Bab 7

Penjelasan Script:

Untuk membuat tabel data_cuti ini tetap dibutuhkan file sambung.php sebagai media untuk koneksi dengan database. Field yang ada dalam tabel data_cuti ini lebih banyak dibandingkan dengan tabel karyawan sesuai dengan data cuti yang akan dimasukkan. Tipe data yang akan dimasukkan ke dalam tabel data_cuti ini semua adalah data teks, kecuali data yang akan dimasukkan ke dalam field id. Field id juga memiliki atribut auto_increment dan PRIMARY KEY. Berikut adalah struktur tabel data_cuti apabila dilihat menggunakan SQL seperti pada Gambar 6.4 di bawah ini:

88

Bab 7

File Pendukung dalam Program

Gambar 7.4 Tampilan struktur tabel data_cuti

TABEL ADMIN
Tabel admin dibutuhkan untuk menampung data user dan password administrator sebagai hak akses yang paling tinggi dalam program ini. Tabel ini dibuat menggunakan script php seperti di bawah ini :
<? // membuat tabel data_cuti Includesambung.php;

89

File Pendukung dalam Program


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

Bab 7

Penjelasan script:

Nama tabel ini adalah admin mempunyai tiga field yaitu user, password dan id. Field id difungsikan sebagai index dalam tabel ini dan mempunyai atribut int sebagai identitas untuk menyimpan data angka, auto_increment dan PRIMARY KEY. Berikut adalah struktur menggunakan SQL: tabel admin apabila ditampilkan

Gambar 7.5 Tampilan struktur tabel admin

90

Bab 7

File Pendukung dalam Program

SCRIPT

UNTUK AUTORISASI USER DAN PASSWORD

Pada sebuah program yang membedakan hak akses pada setiap penggunanya selalu memberikan fasilitas untuk login. Untuk login, setiap pengguna diminta untuk mengisikan nama user dan password yang benar. Benar atau salah sebuah user dan password ini akan diperiksa oleh sebuah bagian program. Pada dasarnya sistem kerja dari program yang berfungsi untuk memeriksa data masukkan (user dan password) adalah membandingkan data masukkan dengan data yang ada dalam database. Apabila data tersebut sama, maka data masukkan tersebut dianggap valid atau benar dan sebaliknya apabila data yang dimasukkan tersebut tidak sesuai dengan data yang ada dalam database maka data masukkan tersebut akan dianggap tidak valid, kemudian program akan menginformasikan bahwa data yang dimasukkan tersebut tidak benar. Berikut adalah script yang berfungsi untuk memeriksa benar atau tidaknya user dan password yang 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 where nik='$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"){

91

File Pendukung dalam Program


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>

Bab 7

<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1252\"> <style> <!-body --> </style> <script language=\"JavaScript\"> <!-function FP_preloadImgs() {//v1.0 var 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.0 var doc=document,args=arguments,elm,n; doc.\$imgSwaps=new Array(); { font-family: arial; color: #000080 }

92

Bab 7
for(n=2; n<args.length;

File Pendukung dalam Program

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.0 var 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=0 MARGINWIDTH=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\"

93

File Pendukung dalam Program

Bab 7

cellpadding=\"0\" background=\"images/tkm_02.gif\" id=\"table1\"> <tr> <td width=\"12\">&nbsp;</td> <td valign=\"top\"> <p align=\"center\">&nbsp;</p> margin-bottom: 5px\"> <p align=\"center\" style=\"margin-top: 5px;

<font color=\"#800000\">Password yang Anda masukkan salah,</font></p> margin-bottom: 5px\"> <p align=\"center\" style=\"margin-top: 5px; <font color=\"#800000\">Atau</font></p> margin-bottom: 5px\"> <p align=\"center\" style=\"margin-top: 5px;

<font color=\"#800000\">Data Anda belum terdaftar dalam database.</font></p> margin-bottom: 5px\"> lagi.</font><br> margin-bottom: 3px\"> <p align=\"center\" style=\"margin-top: 5px; <font color=\"#800000\">Silakan ulangi &nbsp;<p align=\"center\" style=\"margin-top: 3px; <br> <a href=\"javascript:history.back();\"> <img border=\"0\" id=\"img1\" src=\"images/buttonE.gif\" height=\"20\" width=\"125\" alt=\"ULANGI\" fpstyle=\"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>

94

Bab 7
</TD> </TR> <TR> <TD>

File Pendukung dalam Program

<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 sesuai dengan tugasnya. Yang pertama adalah fungsi session_start(), fungsi ini digunakan untuk mendeklarasikan bahwa pada file ini mengandung data dan fungsi session yang lain. Fungsi session_start() selalu dituliskan pada awal script. Apabila dituliskan di tengah atau di akhir script, maka akan ditolak oleh program php dan dinyatakan sebagai kesalahan. Fungsi berikutnya yang digunakan dalam program di atas adalah include yang digunakan untuk memanggil file sambung.php sebagai script koneksi database. Setelah program terhubung dengan database MySQL maka program akan membaca data yang ada dalam tabel karyawan dan tabel hak_akses menggunakan fungsi MySQL seperti di bawah ini:
$data=mysql_query("select * from data_karyawan where nik='$nik'"); $user=mysql_fetch_array($data); $data2=mysql_query("select * from hak_akses where nik='$user[nik_atasan]'");

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

File Pendukung dalam Program

Bab 7

fungsi if. Fungsi ini digunakan untuk memisahkan operasi satu dengan yang lainnya sesuai dengan kondisi tertentu. Berikut adalah script 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 adalah membandingkan data yang ada dalam variabel $password yaitu data dari formulir login dengan data yang ada dalam variabel $user[password] yaitu hasil pembacaan dari database sesuai dengan data karyawan yang telah dimasukkan oleh seorang administrator. Apabila data yang ada dalam variabel $password dan data yang ada dalam variabel $user[password] sama maka program berikutnya akan dijalankan yaitu mendaftarkan data dari variabel nik dan data yang ada pada variabel password sebagai data sesi. Dengan terdaftarnya kedua data tersebut maka seorang karyawan yang telah melakukan login tersebut dapat membuka halaman keanggotaan yang lain, karena data sesi nik dan password selalu ter-include terus selama browser tidak ditutup atau karyawan tersebut keluar dari halaman anggota. Kenapa data nik dan password harus didaftarkan menjadi data sesi? Data sesi ini sifatnya global dan tersimpan dalam server dalam jangka 96

Bab 7

File Pendukung dalam Program

waktu tertentu, selama masih dibutuhkan walau pindah dari halaman satu ke halaman berikutnya. Kemudian pada tiap halaman anggota tersebut selalu meminta nik dan password pengunjung sehingga dapat mengakses isi dari halaman tersebut. Dengan adanya data sesi tersebut maka karyawan dapat mengakses seluruh halaman yang menjadi hak aksesnya.

Di dalam fungsi if tersebut masih mengandung fungsi if lagi yang berfungsi untuk memisahkan hak akses dari masing-masing karyawan yang telah login. Data hasil pembacaan database pada tabel hak_akses berdasarkan nik karyawan akan diperiksa nilainya. Apabila dalam field hak akses mempunyai nilai 0 maka karyawan tersebut diarahkan program untuk menuju file data_karyawan2.php menggunakan fungsi header(); dan apabila data yang ada pada field hak akses 11 maka karyawan akan dialihkan membuka file detail_karyawan.php. Kemudian apabila data dari field hak akses pada tabel hak akses dari karyawan tersebut mempunyai nilai 1 atau 2 maka akan dialihkan ke file data_karyawan.php. Mengapa hal ini dilakukan? Dengan menggunakan fungsi ini maka setiap karyawan dapat dibedakan hak aksesnya dan dibatasi untuk membuka halaman-halaman yang sesuai dengan haknya. Kemudian apabila pengunjung lain tidak terdaftar dalam database maka akan dialihkan ke halaman keluar.php menggunakan fungsi header();.

SCRIPT UNTUK MEMERIKSA DATA SESI


Script ini akan digunakan pada setiap halaman keanggotaan yang akan diakses oleh karyawan. Fungsi dari script ini adalah memeriksa apakah pengunjung yang membuka halaman keanggotaan mempunyai data sesi atau tidak. Apabila seorang pengunjung membuka halaman keanggotaan melalui prosedur yang benar yaitu melalui login, maka data sesi akan diciptakan. Tetapi apabila seorang pengunjung dalam membuka sebuah halaman tidak melalui login, maka secara otomatis tidak memiliki data sesi dan berikutnya pengunjung akan ditolak dan ditampilkan sebuah pesan kesalahan oleh program. Berikut adalah script yang digunakan untuk memeriksa keberadaan data sesi:

97

File Pendukung dalam Program


<? // cek.php session_start(); if(!session_is_registered("password")){

Bab 7

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 --> </style><script language=\"JavaScript\"> <!-function FP_preloadImgs() {//v1.0 var 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.0 var 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.0 var 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) { font-family: arial; color: #000080 }

98

Bab 7

File Pendukung dalam Program

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=0 MARGINWIDTH=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\"> Anda Tidak diijinkan mengakses halaman ini,</p> <p align=\"center\" style=\"margin-top: 3px;

99

File Pendukung dalam Program


\margin-bottom: 3px\">

Bab 7

Anda harus login terlebih dahulu.</p> margin-bottom: 3px\"> margin-bottom: 3px\"> <p align=\"center\" style=\"margin-top: 3px; &nbsp;<p align=\"center\" style=\"margin-top: 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; } ?>

100

Bab 7 Penjelasan script:

File Pendukung dalam Program

Pada script untuk memeriksa data sesi ini didominasi tag php dan html. Fungsi yang digunakan untuk memeriksa data sesi dalam script di atas adalah :
session_start(); if(!session_is_registered("password")){

Penjelasan dari fungsi di atas adalah setiap sebuah file mengandung data sesi harus ditambahkan fungsi session_start(); sehingga data sesi yang ada dalam script dapat dikenali. Kemudian untuk memeriksa keberadaan data sesi maka menggunakan fungsi session_is_registered yang berada dalam kondisi fungsi if. Tanda seru (!) dalam fungsi if tersebut adalah menyatakan tidak. Jadi jika data sesi password tidak terdaftar, maka akan ditampilkan komentar kesalahan yang diciptakan menggunakan tag-tag html dan diakhiri dengan fungsi php yaitu exit; yang artinya perintah berikutnya akan diabaikan. Namun apabila data sesi password telah terdaftar maka program akan dilanjutkan dan membuka halaman tersebut. File yang mengandung script pemeriksaan data sesi ini diberi nama cek.php. Untuk memasukkan ke dalam setiap file keanggotaan yaitu menggunakan fungsi include pada setiap halaman keanggotaan.

SCRIPT UNTUK MENGHAPUS DATA SESI


Apabila seorang karyawan akan meninggalkan halaman keanggotaan diharapkan data sesi juga akan dihapus, karena apabila data sesi tidak terhapus, maka orang lain dapat membuka halaman keanggotaan sesuai hak yang dimiliki olah karyawan yang terakhir mengakses halaman keanggotaan tersebut. Untuk menghapus data sesi ini, maka dibuat sebuah file yang berisi script yang berfungsi untuk menghapus data sesi. Berikut adalah script yang berfungsi untuk menghapus data sesi dalam file keluar.php.
<? // keluar.php session_start();

101

File Pendukung dalam Program


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

Bab 7

Penjelasan script:

Script untuk menghapus data sesi sangat sederhana sekali. Pada awal script harus dituliskan fungsi sessien_start(); yang menyatakan bahwa dalam script tersebut mengandung data sesi, kemudian untuk menghapus data sesi menggunakan fungsi session_destroy();. Pada akhir script setelah data sesi dihapus maka pengunjung diarahkan ke halaman index.php menggunakan fungsi header.

102

Yang dimaksud dengan file program utama dalam proyek ini adalah semua file yang berfungsi untuk mengakses dan sekaligus menampilkan data pada browser. File tersebut secara langsung dapat dilihat oleh pengunjung atau karyawan yang sudah terdaftar dalam database. File-file tersebut dapat dibedakan menjadi dua bagian besar, antara lain halaman utama dan halaman keanggotaan.

HALAMAN UTAMA
Halaman utama dalam proyek ini adalah file yang pertama kali akan diakses oleh karyawan. Isi dari halaman utama adalah menampilkan jumlah karyawan yang aktif, jumlah karyawan yang mengajukan cuti dan jumlah karyawan yang sedang cuti. Selain itu pada halaman ini juga menampilkan formulir untuk login karyawan. Berikut adalah script 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'");

103

File Program Utama


$proses=mysql_num_rows($data3); $total=$aktif + $cuti; ?> <HTML> <HEAD> <TITLE>Website Cuti Online</TITLE> </HEAD>

Bab 8

<BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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=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 width="430" valign="top"> <table border="1" width="97%" cellspacing="1" id="table4"> <tr><td bgcolor="#80A6D2"><p align="center">DATA KARYAWAN</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">Jumlah Karyawan 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><td bgcolor="#B3CAE3" align="right"> <p style="margin-right: 40px"><?echo$cuti?></td></tr> <tr><td width="281" bgcolor="#B3CAE3">Jumlah Karyawan Mengajukan Cuti</td><td bgcolor="#B3CAE3" align="right">

104

Bab 8

File Program Utama

<p style="margin-right: 40px"><?echo$proses?></td>tr> <tr><td width="281" bgcolor="#B3CAE3">Jumlah Total Karyawan</td><td bgcolor="#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 UNTUK KARYAWAN</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><p style="margin-bottom: 15px"> <input type="submit" value=" L O G I N " name="login" style="fontfamily: 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=45 ALT=""></TD></TR>

105

File Program Utama


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

Bab 8

Penjelasan script:

Pada file index.php sebagai halaman utama dari proyek ini menampilkan data karyawan yang diakses dari database, sehingga membutuhkan file sambung.php sebagai script untuk koneksi dengan database. File sambung.php dipanggil menggunakan fungsi include seperti di bawah ini :
include"sambung.php";

Fungsi berikutnya adalah perintah query untuk membaca data yang ada dalam database karyawan dan database data_cuti. Berikut adalah potongan perintah query yang digunakan untuk membaca data karyawan tersebut :
$data=mysql_query("select * from karyawan where status='0'"); $aktif=mysql_num_rows($data);

Potongan script di atas berfungsi untuk membaca data karyawan yang memiliki status 0 (sedang aktif) sebagai syarat pembacaan data. Setelah data dibaca kemudian dihitung jumlah data sesuai dengan syarat statusnya 0 menggunakan fungsi mysql_num_rows(). Hasil dari fungsi di atas adalah data angka dengan nilai sebanyak record karyawan yang memiliki data status 0. Pembacaan data berikutnya adalah menghitung jumlah karyawan yang sedang cuti, pada database diberikan status 1, artinya karyawan tersebut sedang cuti. Berikut adalah penggalan script yang berfungsi untuk membaca dan menghitung jumlah karyawan yang memiliki status 1 atau sedang cuti :
$data2=mysql_query("select * from karyawan where status='1'"); $cuti=mysql_num_rows($data2);

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

106

Bab 8

File Program Utama

Selanjutnya adalah membaca data karyawan yang sedang mengajukan cuti. Artinya bahwa karyawan tersebut masih aktif, namun pada saat tersebut telah mengajukan cuti dan belum disetujui oleh pimpinan. Hal ini dimaksudkan untuk mempermudah atasan / pimpinan untuk mengetahui apakah hari tersebut ada karyawan yang sedang mengajukan cuti yang akan diterima atau ditolak. Apabila ada maka seorang atasan akan melakukan login ke data karyawan dan memberikan tanggapan atas pengajuan cuti yang telah diajukan oleh karyawannya. Berikut adalah fungsi yang digunakan oleh halaman utama tersebut untuk membaca dan menghitung data karyawan yang sedang 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 mengakses database dan menghitung data yang telah dibaca. Bedanya adalah database yang dibaca dan syarat pembacaan database tersebut. Setelah database telah dibaca, kemudian data tersebut disimpan ke dalam variabel. Hasil pembacaan dan penghitungan data karyawan yang sedang cuti disimpan ke dalam variabel $cuti, kemudian untuk data karyawan yang sedang mengajukan cuti disimpan ke dalam variabel $proses dan data karyawan yang sedang aktif disimpan ke dalam variabel $aktif. Setelah data hasil pembacaan disimpan dalam masing-masing variabel, kemudian script php menampilkannya ke dalam halaman utama dengan menyisipkan data tersebut disela-sela tag HTML menggunakan fungsi echo. Berikut adalah tampilan dari halaman utama menggunakan script di atas :

107

File Program Utama

Bab 8

Gambar 8.1 Tampilan halaman utama

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

HALAMAN DATA KARYAWAN


Halaman data karyawan ini digunakan untuk menampilkan daftar data karyawan yang telah dimasukkan ke dalam database. Apabila hak akses karyawan yang login melalui formulir login ini adalah seorang atasan atau pimpinan, maka halaman ini akan menampilkan nama-nama karyawan yang menjadi bawahannya. Namun apabila karyawan yang login hanya memiliki hak akses sebagai karyawan biasa maka tidak dapat mengakses halaman ini, namun akan dialihkan ke halaman detail_karyawan.php. Berikut adalah script yang digunakan untuk menampilkan halaman data karyawan : 108

Bab 8

File Program Utama

<? 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=0 MARGINWIDTH=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>

109

File Program Utama

Bab 8

<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: Metal Rectangle 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: Metal Rectangle 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: Metal Rectangle 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"

110

Bab 8

File Program Utama

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: Metal Rectangle 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: Metal Rectangle 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' order by 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>

111

File Program Utama

Bab 8

<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\">Lihat Detail</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' and status<>'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:

112

Bab 8

File Program Utama

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=\"borderbottom: 1px solid #FFFFFF\"><p align=\"center\">$d2[status]</td></tr>"; } ?> </table> <p align="right">Untuk Memberikan persetujuan pengajuan cuti oleh 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=45 ALT=""></TD> </TR> </TABLE> </BODY> </HTML>

Penjelasan script :

Script pada halaman data karyawan ini terdiri dari tag-tag html dan kode-kode php. Kode php berfungsi untuk mengolah data yang ada dalam database dan tag-tag html berfungsi untuk membuat tampilan grafik pada browser. Pada awal script dituliskan fungsi session_start() yang memberikan identitas bahwa dalam file ini terdapat data sesi yang akan dideklarasikan dalam sebuah variabel. Baris berikutnya adalah menggunakan fungsi include untuk memanggil file cek.php. File cek.php ini berfungsi untuk memeriksa apakah pengunjung tersebut melalui proses yang sah atau tidak. Artinya apabila melalui prosedur yang sah akan melalui formulir login dan dalam proses berikutnya akan mendaftarkan data dari variabel dimasukkan menjadi data sesi. 113

File Program Utama

Bab 8

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

Fungsi session_start() selau dituliskan pada awal script. Kemudian diikuti fungsi-fungsi yang lain sesuai dengan struktur operasi dalam sebuah file. Script berikutnya adalah perintah query yang berfungsi untuk membaca data yang ada dalam database karywan. Data yang dibaca kemudian diperiksa apakah karyawan yang bersangkutan mempunyai hak akses sebagai kepala bagian (support) atau mempunyai hak akses sebagai atasan. Berikut adalah potongan script yang berfungsi untuk mengakses 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 membaca database berdasarkan nik tertentu, kemudian hasilnya dimasukkan ke dalam variabel $d4 dengan menggunakan perintah query mysql_fetch_array($data4);. Berikutnya adalah fungsi if yang digunakan untuk menganalisa / memeriksa apakah hak akses karyawan tersebut sebagai atasan atau kepala bagian (support). Setelah hak akses karyawan ditentukan, kemudian halaman data karyawan ditampilkan menggunakan tag-tag html. Namun pada tampilan data karyawan digunakan fungsi php kembali untuk mengakses database dan mendeklarasikan field-field data yang ada dalam database ke tag-tag html. Berikut adalah bagian kode php yang 114

Bab 8

File Program Utama

berfungsi untuk mengakses dan menampilkan data ke dalam halaman data karyawan :
$data1=mysql_query("select * from karyawan where $akses='$nik' order by 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 yang ada dalam database karyawan dan menampilkan ke dalam halaman data karyawan, apabila mempunyai kode status 0 maka dinyatakan sedang aktif dan apabila mempunyai kode 1 maka karyawan dinyatakan sedang cuti. Namun pada script di atas belum ada fungsi untuk menampilkan data pada browser, berikut adalah bagian script yang 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\">Lihat Detail</a></td> </tr>";

115

File Program Utama

Bab 8

Sebagian besar pada script di atas adalah kode html, namun apabila Anda berhatikan ada bagian-bagian tertentu yang dideklarasikan dengan variabel-variabel dari script php, seperti $d1[nama], $d1[jabatan], $d1[posisi], $d1[status] dan $d1[id]. Kelima variabel tersebut berisikan data yang diambil dari pembacaan database karyawan. Pada bagian ke dua dalam file ini adalah membaca dan menampilkan data yang ada dalam database data_cuti. Tujuan dari pembacaan database data_cuti ini adalah untuk menginformasikan data karyawan yang sedang mengajukan cuti berdasarkan nik atasan. Berikut adalah bagian script yang berfungsi untuk membaca dan menampilkan data karyawan yang sedang cuti:
$data3=mysql_query("select * from data_cuti where $akses='$nik' and status<>'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\"><p align=\"center\">$d2[status]</td></tr>"; }

Pada prinsipnya script untuk membaca database karyawan dan data_cuti sama, yang membedakan adalah filter yang digunakan untuk membaca data yang ada dalam data_cuti, yaitu pembacaan data berdasarkan data field akses harus sesuai dengan nik atasan 116

Bab 8

File Program Utama

kemudian untuk field status tidak sama dengan 2 dengan menggunakan tanda <> dan field aktivasi tidak bernilai - dengan menggunakan parameter <> artinya tidak sama dengan. Untuk menampilkan data pada halaman data karyawan ini juga menggunakan fungsi echo, sama dengan menampilkan data karyawan dari hasil pembacaan database karyawan di atas. Berikut adalah tampilan halaman data karyawan yang diakses oleh seorang atasan:

Gambar 8.2 Tampilan halaman data karyawan.

HALAMAN DETAIL KARYAWAN


Halaman detail ini berisikan data pribadi karyawan yang sedang login. Apabila karyawan tersebut sebagai karyawan biasa, maka 117

File Program Utama

Bab 8

setelah login akan langsung diarahkan ke halaman ini. Namun apabila karyawan ini sebagai atasan atau support untuk mengakses halaman ini setelah login diarahkan ke halaman data karyawan kemudian menekan menu Lihat Data Pribadi pada halaman data karyawan yang diakses.

Tombol untuk melihat data pribadi

Gambar 8.3 Tombol menu lihat data karyawan.

Setelah tombol Lihat Data Pribadi diklik, maka akan ditampilkan sebuah halaman yang berisikan informasi tentang data diri karyawan. Berikut adalah script yang digunakan untuk menampilkan halaman detail_karyawan.php :
<? include"cek.php"; include"sambung.php"; if($act=="detail"){ $akses="id"; $val=$id;

118

Bab 8

File Program Utama

}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: Metal Rectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fptransparent: 1; fp-proportional: 0\" fp-title=\"Pengajuan Cuti\"></a><a href=\"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=0 MARGINWIDTH=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>

119

File Program Utama

Bab 8

<td valign="top"> <table border="0" width="100%" id="table2" cellspacing="0" cellpadding="0"> <tr><td><p align="right">&nbsp; <a href="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: Metal Rectangle 1; fp-font-color-hover: #FF0000; fp-img-press: 0; fptransparent: 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

120

Bab 8

File Program Utama

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; margintop: 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; marginbottom: 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; marginbottom: 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; marginbottom: 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; margintop: 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; marginbottom: 2px\">$d1[status]</td></tr>

121

File Program Utama

Bab 8

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

122

Bab 8

File Program Utama

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;<!--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\"><input type=\"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\"<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=45 ALT=""></TD></TR> </TABLE> </BODY> </HTML>

123

File Program Utama Penjelasan script:

Bab 8

Pada file detail_karyawan.php ini juga dibentuk dari tag-tag html dan kode-kode php. Kode php dalam file ini berfungsi untuk menghubungkan script dengan database dan sekaligus membaca dan menampilkan data pada halaman detail_karyawan.php. Berikut adalah potongan kode php yang berfungsi untuk membaca dan menampilkan 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 menggunakan file sambung.php dengan cara memanggil file tersebut. Pada script berikutnya adalah menyaring data yang ada dalam variabel $act dari halaman karyawan.php, apabila variabel $act mempunyai nilai detail, maka terbentuk variabel baru dengan nama $akses dan mempunyai nilai id dan variabel $val dengan nilai sama dengan nilai variabel $id dari halaman sebelumnya. Apabila nilai dari variabel $act buka detail, maka variabel $akses diberikan nilai nik dan variabel $val diberikan nilai dari variabel $nik. Kemudian nilai dari kedua variabel ini digunakan sebagai syarat atau filter untuk membaca database karyawan yang sedang login tersebut. Perintah pembacaan data dari database menggunakan perintah query dari MySQL.

Untuk menampilkan data karyawan secara detail menggunakan perintah echo pada masing-masing bagian dengan cara menyisipkan kode-kode php ke dalam tag-tag html.

124

Bab 8

File Program Utama

Berikut adalah tampilan halaman detail_karyawan apabila diakses menggunakan browser:

Gambar 8.4 Tampilan halaman detail_karyawan.

HALAMAN PENGAJUAN CUTI


Pada dasarnya sistem yang dibuat dengan platform online adalah bertujuan untuk memberikan kemudahan kepada pengguna dalam bentuk online dan realtime. Demikian juga untuk proyek database karyawan khususnya pengajuan cuti online ini, direncanakan setiap

125

File Program Utama

Bab 8

karyawan dapat mengajukan cuti secara online dan tanpa harus bertemu dengan atasannya langsung. Halaman pengajuan cuti ini ditampilkan formulir yang dapat diisi oleh karyawan yang mengajukan cuti dengan menuliskan informasi-informasi tentang cuti yang diajukan, seperti tanggal cuti, jumlah cuti, alasan cuti dan alamat cuti yang dapat dihubungi oleh pihak kantor apabila ada keperluan mendesak sehingga mengharuskan kehadiran karyawan tersebut di kantor. Berikut adalah script yang digunakan untuk membuat halaman pengajuan 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

126

Bab 8

File Program Utama

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

127

File Program Utama

Bab 8

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; Data 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><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

128

Bab 8

File Program Utama

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

129

File Program Utama

Bab 8

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

130

Bab 8

File Program Utama

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

131

File Program Utama

Bab 8

<select size=\"1\" name=\"y\" style=\"font-family: Arial; color: #000080; font-size:12pt\"><option value=\"$thn\">$thn</option><option value=\"$thn2\">$thn2</option></select> </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\">&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\"><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; marginbottom: 2px\"><input type=\"radio\" value=\"tahunan\" checked name=\"jenis\">Tahunan&nbsp; <input type=\"radio\" value=\"besar\" name=\"jenis\">Besar</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\">&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\"><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; marginbottom: 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><td width=\"73%\">&nbsp;</td> </tr> <tr>

132

Bab 8

File Program Utama

<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 cuti yang disusun dengan tag-tag html. Namun karena halaman ini bersifat personal atau akses terbatas, maka dibutuhkan kode-kode php yang berfungsi untuk membatasi akses oleh orang yang tidak diinginkan. Berikut adalah script php yang digunakan untuk fungsi tersebut:
<? 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{

133

File Program Utama


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

Bab 8

Setelah diperiksa menggunakan file validasi yaitu file cek.php, kemudian karyawan yang sedang login diperiksa apakah berstatus cuti atau sedang aktif dengan menggunakan fungsi if yang memeriksa data cuti karyawan dalam database data_cuti. Hal tersebut dilakukan dengan tujuan untuk menampilkan keterangan apakah karyawan tersebut sedang cuti atau sedang aktif dalam halaman pengajuan cuti. Script php berikutnya yang ada dalam halaman ini adalah kombinasi fungsi date dan fungsi for (pengulangan). Gabungan kedua fungsi ini digunakan untuk membentuk bagian formulir yaitu option. Bagian formulir option adalah salah satu jenis isian formulir yang menyediakan 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 seperti pada gambar berikut:

134

Bab 8

File Program Utama

Gambar 8.5 Tampilan option menggunakan php.

Fungsi tersebut selain digunakan untuk menyusun bagian formulir tanggal juga untuk membuat option pada bulan dan tahun. Berikut adalah 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>;

135

File Program Utama

Bab 8

Selain mengunakan fungsi while dan date dalam script di atas juga menggunakan fungsi array untuk mendeklarasikan nama bulan dalam bahasa Indonesia. Berikut adalah tampilan halaman pengajuan cuti oleh karyawan dengan menggunakan browser:

Gambar 8.6 Tampilan halaman pengajuan cuti.

136

Bab 8

File Program Utama

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

SCRIPT PROSES PENGAJUAN CUTI


Script untuk memproses data yang dikirimkan melalui formulir pengajuan cuti ini disimpan ke dalam file proses_pengajuan.php. Jadi sudah pasti formulir pengajuan cuti ini actionnya diarahkan ke file proses_pengajuan.php.

Fungsi dari script ini bertugas untuk mengolah data isian dari formulir pengajuan. Tugas utamanya adalah memasukkan data isian ke dalam database dan meng-update data karyawan, khususnya pada status karyawan, sebelumnya berstatus aktif menjadi berstatus sedang mengajukan cuti. Dengan demikian seorang atasan dari karyawan tersebut dapat melihat bahwa karyawan bawahannya telah mengajukan cuti dan akan diperiksa. Berikut adalah script yang berfungsi untuk mengolah data isian pengajuan 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);

137

File Program Utama


if($lama <= $data[$array]){ $add=mysql_query("INSERT INTO `data_cuti` ( `id` , `nama` ,

Bab 8

`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. Untuk melihat persetujuan Cuti Anda,<br>Silakan Login kembali beberapa jam lagi.</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px; marginbottom: 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-fontcolor-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\" ></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 ulangi lagi.</p> <p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">&nbsp;</p>

138

Bab 8

File Program Utama

<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; fptransparent: 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 --> </style> <script language="JavaScript"> <!-function FP_preloadImgs() {//v1.0 var 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]; } { font-family: arial; color: #000080 }

139

File Program Utama


} function FP_swapImg() {//v1.0 var 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.0 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);

Bab 8

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=0 MARGINWIDTH=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=158 ALT=""></TD> </TR> <TR><TD><table border="0" width="100%" cellspacing="0"

140

Bab 8

File Program Utama

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=45 ALT=""></TD></TR> </TABLE> </BODY> </HTML>

Penjelasan script:

Script di atas berfungsi untuk mengolah data yang dikirim dari formulir pengajuan cuti oleh karyawan. Inti dari script ini adalah pada awal script, yaitu kode-kode php yang menggunakan fungsifungsi untuk memasukkan data ke dalam database. Kemudian tag-tag html yang ada dalam script ini adalah digunakan untuk menampilkan keterangan apakah data pengajuan cuti berhasil dikirim atau gagal. Berikut adalah potongan script yang berfungsi untuk mengakses dan mengolah 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"; }

141

File Program Utama


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

Bab 8

Sebelum data dimasukkan ke dalam database, maka data yang dikirim akan diperiksa terlebih dahulu menggunakan fungsi if dengan jalan memeriksa apakah pengajuan cuti yang terkirim adalah cuti tahunan atau cuti besar. Kemudian dari hasil pemeriksaan ini disimpan ke dalam variabel $array dan variabel $lama. Script berikutnya digunakan untuk memasukkan data dari formulir pengajuan cuti ke dalam database sesuai dengan jenis cuti yang diambil oleh karyawan tersebut. Berikut adalah potongan script yang berfungsi 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 tersebut kemudian disimpan ke dalam database data_cuti menggunakan query database yaitu mysql_query(insert into database).

Perintah berikutnya adalah fungsi if dan fungsi echo yang digunakan untuk menampilkan tag-tag html pada browser dengan isi komentar bahwa data pengajuan cuti telah terkirim ke database atau gagal dikirim karena ada kesalahan pengisian formulir. Berikut adalah tampilan halaman proses_pengajuan cuti.php apabila seorang karyawan telah mengisi formulir pengajuan cuti online:

142

Bab 8

File Program Utama

Gambar 8.7 Tampilan halaman persetujuan pengajuan cuti.

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

PROSES PERSETUJUAN PENGAJUAN CUTI


Yang memberikan persetujuan cuti ini tentunya adalah seorang atasan dari karyawan yang mengajukan cuti. Proses pemberian persetujuan cuti pun dalam proyek ini akan dilakukan dengan sistem online, artinya persetujuan dapat diberikan melalui website dari jarak yang jauh dan tanpa harus bertemu dengan karyawan yang mengajukan cuti. Inilah yang dimaksud dengan sistem manajemen informasi online melalui internet. Keuntungan dengan adanya sistem ini adalah : 1.

Untuk mengajukan cuti, seorang karyawan tidak perlu mendatangi ruang atau kantor atasannya. Apalagi apabila lokasi kantor tidak terletak dalam satu area, misalkan ada kantor pusat 143

File Program Utama

Bab 8

2. 3. 4.

yang ada di kota A dan ada beberapa kantor cabang yang berlokasi di luar daerah. Pengajuan dan persetujuan cuti dapat dilakukan secara realtime, artinya apabila dilakukan pada saat itu maka akan ditampilkan pada saat itu juga.

Pencatatan atau administrasi pengajuan cuti dapat diarsipkan dengan aman dan rapi tanpa ada kemungkinan rusak atau tertinggal di tempat lain.

Langkah-langkah yang dilakukan oleh seorang atasan untuk melihat dan memberikan persetujuan pengajuan cuti oleh karyawannya adalah :

Kemudahan bagi seorang kepala bagian atau seorang atasan untuk melihat status karyawan bawahannya tanpa harus mencari-cari buku arsip. Untuk melihat atau mengontrol administrasi cuti cukup dengan membuka halaman website cuti online dan dapat dilihat informasi yang up to date.

1. Seorang atasan pertama adalah harus membuka halaman website cuti online dan melakukan login untuk melihat data karyawan dibawahnya.

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

144

Bab 8

File Program Utama

Klik disini untuk memberi persetujuan

Gambar 8.8 Tampilan halaman data karyawan.

Pada halaman data karyawan ini akan ditampilkan data karyawan yang hanya karyawan bawahannya. Selain itu juga ditampilkan status karyawan yang ditampilkan di tabel bawah, yaitu data karyawan cuti. Pada bagian keterangan akan ditampilkan keterangan baru, artinya karyawan tersebut sedang mengajukan cuti dan belum diputuskan disetujui atau tidak. Untuk memberi persetujuan, maka seorang atasan harus membuka link baru tersebut. Apabila karyawan tersebut disetujui, maka akan ditampilkan pada bagian keterangan sedang cuti dan apabila tidak disetujui maka data karyawan cuti tersebut akan dihapus dari tabel data karyawan cuti tersebut. Berikut tampilan halaman untuk menyetujui pengajuan karyawan cuti oleh atasan:

145

File Program Utama

Bab 8

Gambar 8.9 Tampilan halaman formulir persetujuan pengajuan cuti.

Pada halaman persetujuan ini ditampilkan data pengajuan cuti yang diambil dari pembacaan database data_cuti. Pada halaman ini juga ditampilkan sebuah formulir persetujuan yang akan diisi oleh karyawan yang mengajukan cuti tersebut. Berikut adalah script yang digunakan untuk menampilkan halaman persetujuan tersebut:

146

Bab 8
<? include"cek.php"; include"sambung.php";

File Program Utama

$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=0 MARGINWIDTH=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=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">&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);

147

File Program Utama

Bab 8

$data3=mysql_query("select * from data_karyawan where nik='$d2[nik]'"); $d1=mysql_fetch_array($data3); $data4=mysql_query("select * from 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 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; margintop: 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; margintop: 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;

148

Bab 8

File Program Utama

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"><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"> diambil</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]); Jumlah Cuti yang belum

149

File Program Utama


$dt[2]);

Bab 8
$dari=mktime(0,0,0, $dt[1], $dt[0], $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; marginbottom: 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\">

150

Bab 8

File Program Utama

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

151

File Program Utama


<td width=\"73%\">

Bab 8

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

152

Bab 8
<tr>

File Program Utama

<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; marginbottom: 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>

153

File Program Utama


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

Bab 8

<TD><IMG SRC="images/tkm_05.gif" WIDTH=800 HEIGHT=45 ALT=""></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 ada dalam database. Berikut adalah potongan kode php yang mempunyai 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 database karyawan untuk memberikan informasi tentang karyawan yang mengajukan cuti, kemudian ditampilkan menggunakan tag-tag html dalam halaman website. Script php berikutnya adalah bagian yang berfungsi untuk membaca data yang ada dalam database data_cuti sebagai syarat untuk membaca database karyawan. Berikut adalah potongan dari script 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

154

Bab 8
nik='$d1[nik_atasan]'");

File Program Utama

$d4=mysql_fetch_array($data4); $acc="Belum disetujui"; }

Tujuan dari script di atas adalah untuk membaca data yang ada dalam database data_cuti berdasarkan nik dan nik atasan yang diabmil dari database karyawan. Data tang telah dibaca dengan script di atas kemudian di tampilkan menggunakan tag-tag html berikutnya. Namun pada beberapa bagian tampilan data dibutuhkan script php untuk menyaring data yang akad ditampilkan antara lain adalah membedakan status dari pengajuan cuti tersebut, misalkan dengan status 0 maka pengajuan cuti tersebut masih baru dan belum di periksa oleh atasan dan apabila status data cuti tersebut 1 maka pengajuan cuti ditolak dan apabila status cuti tersebut 2 maka pengajuan cuti telah diterima. Berikut adalah script yang digunakan untuk memeriksa 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 untuk mengolah 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";

155

File Program Utama


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

Bab 8

Dalam potongan script di atas yang pertama adalah menggunakan fungsi explode untuk memecah data string hasil pembacaan field mulai dari database data_cuti. Hasil dari fungsi explode ini adalah data dalam bentuk data array. Kemudian data array ini dijadikan data sumber untuk menciptakan data waktu mikro menggunakan fungsi mktime(). Hasil dari fungsi ini adalah jumlah detik dari tanggal 1 januari 1970 jam 00:00:00 (ditetapkan oleh program php). Dengan menciptakan data waktu mikro ini diharapkan dapat dioperasikan dengan penjumlahan lama hari dan mulai pengajuan cuti. Variabel $hs mempunyai nilai lama hari cuti dalam bentuk hitungan detik, jadi pada script tersebut dituliskan lama cuti dalam bentuk hari dari pembacaan database data_cuti kemudian dikalikan dengan jumlah detik dalam satu hari yaitu 86400 detik. Hasilnya kemudian di tambah dengan data waktu dalam detik dari penggunaan fungsi mktime(). Sebelum ditampilkan ke dalam halaman website data tersebut harus dikonversikan dalam format data tanggal dengan menggunakan fungsi data() dan dipisah lagi sehingga menghasilkan data tanggal bulan dan tahun menggunakan fungsi explode. Proses selanjutnya adalah menampilkan data tersebut menyatu dengan tag-tag html sesuai dengan lokasi data akan ditampilkan. 3. Langkah pemberian persetujuan yang ketiga adalah seorang atasan harus mengisi formulir pesetujuan beserta catatan yang ada dalam bagian formulir dan yang terakhir adalah menekan tombol persetujuan cuti.

SCRIPT PENGOLAH DATA PERSETUJUAN

CUTI

Data yang terkirim dari formulir persetujuan cuti yang dikirim oleh seorang atasan dari formulir tanggapan persetujuan, kemudian dikirim ke file yang berisi script pengolah data persetujuan ini. File ini diberi nama proses_persetujuan.php. 156

Bab 8

File Program Utama

Berikut adalah script yang digunakan untuk mengolah data persetujuan 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. Untuk melihat persetujuan Cuti Anda,<br>Silakan Login kembali beberapa jam lagi.</p><p align=\"center\" style=\"margin-top: 3px; margin-bottom: 3px\">&nbsp;</p><p align=\"center\" style=\"margin-top: 3px; marginbottom: 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-fontcolor-hover: #FF0000; fp-img-press: 0; fp-transparent: 1; fp-proportional: 0\" fp-title=\"Halaman Member\")\"></a>a href=\"keluar.php\"><img

157

File Program Utama

Bab 8

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 yang tersisa tidak mencukupi.<br> ulangi lagi.</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\" fptitle=\"Halaman Member\")\"></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>"; } ?> <HTML> <HEAD> <TITLE>Website Cuti Online</TITLE> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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=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> <?echo$psn?>

158

Bab 8
</tr></table> </TD></TR>

File Program Utama

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

Penjelasan script:

Pada dasarnya script ini adalah berfungsi untuk mengolah data yang dikirim dari formulir persetujuan cuti. Data dari persetujuan cuti yang diisi oleh atasan ini akan dimasukkan ke dalam database data_cuti dan merubah status karyawan dari 0 (sedang aktif) menjadi 1 (sedang cuti) dalam database karyawan. Susunan script yang pertama adalah cek keberadaan data sesi dengan menggunakan file cek.php dengan memanggilnya menggunakan fungsi include. Kemudian melakukan koneksi ke database dengan cara memanggil file koneksi yaitu sambung.php menggunakan fungsi include. Berikut adalah potongan script pertama dalam file ini yang berfungsi 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 kemudian diperiksa, apakah data cuti yang diambil cuti tahuan atau cuti besar menggunakan fungsi if seperti pada potongan script di bawah ini:
$year=date("Y"); if($jenis=="besar"){ $array="$jenis"; $lama=45; }else{ $array="th$year";

159

File Program Utama


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

Bab 8

Langkah berikutnya dalam script ini adalah mengirimkan data dari formulir ke dalam database. Berikut adalah potongan script yang berfungsi 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 menggunakan query dari mysql, yaitu mysql_query(insert into data_cuti (field) values (value); Penempatan urutan field dan data yang akan dimasukkan harus sesuai, misalkan field nama berada diurutan kedua, maka untuk data yang akan dimasukkan juga harus di urutan kedua dalam bagian value. Berikut adalah tampilan halaman proses data persetujuan cuti setelah pengajuan cuti disetujui menggunakan tag-tag html:

Gambar 8.10 Tampilan halaman persetujuan pengajuan cuti.

160

Bab 8

File Program Utama

HALAMAN

KONFIRMASI CUTI KARYAWAN

PERSETUJUAN

Halaman persetujuan ini ditujukan untuk karyawan yang telah mengajukan cuti. Data karyawan yang telah mengajukan cuti dan telah ditanggapi oleh atasannya akan disimpan ke dalam halaman persetujuan ini. Halaman ini hanya dapat diakses oleh karyawan yang mengajukan cuti tersebut. Data yang ada dalam halaman ini adalah data tentang cuti yang diajukan dan persetujuan cuti yang telah diberikan oleh atasannya, baik disetujui atau ditolak. Untuk melihat hasil tanggapan pengajuan cuti ini, seorang karyawan harus login terlebih dahulu dan menekan tombol persetujuan cuti yang ada di bagian atas halaman keanggotaan. Berikut adalah tampilan dan posisi tombol persetujuan cuti dalam halaman keanggotaan:
Tombol untuk melihat persetujuan cuti

Gambar 8.11 Tombol untuk menampilkan halaman persetujuan cuti.

Berikut adalah script yang berfungsi untuk mengakses database data_cuti dan data karyawan sekaligus menampilkan pada halaman persetujuan menggunakan tag-tag html :
<? include"cek.php";

161

File Program Utama


include"sambung.php";

Bab 8

$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=0 MARGINWIDTH=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=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"><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><td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; Data Personal</td></tr>

162

Bab 8

File Program Utama

<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\"><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:

163

File Program Utama


2px\">$d1[nik_support]</td> </tr> <tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\">

Bab 8

<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%\"> <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%\">

164

Bab 8

File Program Utama

<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>"; $data2=mysql_query("select * from data_cuti where nik='$nik' and aktivasi<>'-' 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><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:

165

File Program Utama


2px\">Selesai Cuti Tanggal</td><td width=\"73%\"> <p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\">$d2[masuk]</td></tr>

Bab 8

<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\">&nbsp;$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\">$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\"><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\">$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; marginbottom: 2px\">&nbsp;</td></tr>

166

Bab 8

File Program Utama

<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\"><p style=\"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 data atau persetujuan pengajuan cuti, kemudian dicetak 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=\"Tampilan Cetak\"></a></td></tr> <tr><td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Aktivasi</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 2px\">Apabila Anda mulai aktif kembali atau mengakhiri cuti, Anda dapat mengaktifkan data cuti Anda dengan meng-klik tombol aktivasi <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\"><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>"; } ?> </table> </td>

167

File Program Utama


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

Bab 8

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

Penjelasan script: Langkah pertama dalam menyusun script ini adalah membuat kodekode php yang berfungsi untuk koneksi dan membaca data yang ada dalam database. Berikut adalah potongan kode php yang berfungsi untuk 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 karyawan untuk memberikan informasi tentang karyawan yang mengajukan cuti, kemudian ditampilkan menggunakan tag-tag html dalam halaman website.

Script php berikutnya adalah bagian yang berfungsi untuk membaca data yang ada dalam database data_cuti. Berikut adalah potongan dari script untuk membaca data_cuti:
$data2=mysql_query("select * from data_cuti where nik='$nik' and aktivasi<>'-' 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"; }

168

Bab 8

File Program Utama

Tujuan dari script di atas adalah untuk membaca data yang ada dalam database data_cuti berdasarkan nik dan aktivasi tidak sama dengan -. Hasil pembacaan data dari database data_cuti kemudian diurutkan berdasarkan id. Pada halaman tampilan data karyawan cuti ini akan dibedakan berdasarkan dengan status karyawan masingmasing, yaitu apabila mempunyai status 1 maka karyawan tersebut dinyatakan cuti diterima, kemudian untuk kode status 2 maka permohonan cuti karyawan dinyatakan ditolak. Apabila data yang ada dalam field status selain 1 dan 2 maka akan dinyatakan pengajuan cuti belum disetujui. Data yang telah dibaca akan ditampilkan ke dalam sebuah halaman website menggunakan fungsi echo dengan tagtag html. Berikut adalah tampilan halaman persetujuan cuti yang akan diakses oleh masing-masing karyawan yang mengajukan cuti:
Keterangan persetujuan cuti

Gambar 8.12 Halaman persetujuan cuti.

169

File Program Utama

Bab 8

Pada halaman ini akan diinformasikan beberapa bagian, yaitu data pribadi karyawan, jumlah cuti yang belum diambil dan persetujuan cuti yang telah diajukan kepada atasannya. Di bagian bawah dari halaman ini ditampilkan dua tombol yaitu tombol tampilan cetak dan tombol aktivasi. Tombol tampilan cetak digunakan untuk menampilkan data dari halaman persetujuan cuti ini apabila ingin dicetak ke dalam kertas. Tombol yang kedua adalah tombol aktivasi yaitu digunakan untuk menginformasikan bahwa karyawan tersebut telah aktif kembali. Proses aktivasi atau berakhirnya masa cuti karyawan tidak perlu lagi menemui atasannya, namun cukup menekan tombol aktivasi oleh karyawan itu sendiri.

Setelah karyawan aktif kembali, seorang atasan tinggal memeriksa status karyawan yang telah aktif kembali dari website online tersebut.

TAMPILAN CETAK PERSETUJUAN CUTI


Tampilan cetak ini hanya digunakan untuk menampilkan format cetak untuk halaman persetujuan cuti. Kadang seorang administrator membutuhkan arsip data dalam bentuk cetakan kertas. Dari alasan tersebut di atas maka halaman persetujuan cuti format cetak ini dibuat. Berikut adalah script yang digunakan untuk menyusun halaman 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 id desc limit 1"); $data2=mysql_fetch_array($d2); $d3=mysql_query("select * from karyawan where nik='$data[nik_atasan]'"); $data3=mysql_fetch_array($d3);

170

Bab 8

File Program Utama

$d4=mysql_query("select * from karyawan where nik='$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; marginbottom: 5px"><br><font size="4">PERMOHONAN / LAPORAN CUTI KARYAWAN</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>DATA PEGAWAI</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\">:

171

File Program Utama

Bab 8

$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] hari kerja</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>

172

Bab 8

File Program Utama

<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; marginbottom: 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>CATATAN PEJABAT 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; marginbottom: 5px\">$data2[catatan]</td><td valign=\"bottom\"><p align=\"center\" style=\"margin-top: 5px; margin-bottom: 5px\"><span style=\"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> ) hari kerja<br> &nbsp;&nbsp;&nbsp;&nbsp; Mulai tanggal&nbsp;&nbsp;&nbsp; $mulai</td> </tr>

173

File Program Utama

Bab 8

<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; marginbottom: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; marginbottom: 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 diluar Tanggungan 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 data persetujuan cuti dalam database kemudian ditampilkan ke dalam halaman html sederhana. Halaman ini hanya menampilkan data teks tanpa grafis yang rumit dan bermacam-macam warna. Tujuan dari halaman ini dibuat hanya digunakan untuk dicetak ke dalam kertas. Berikut adalah tampilan halaman cetak persetujuan cuti: 174

Bab 8

File Program Utama

Gambar 8.13 Halaman tampilan cetak persetujuan cuti.

175

File Program Utama

Bab 8

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

Gambar 8.14 Jendela Print.

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

AKTIVASI KARYAWAN CUTI


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

Bab 8

File Program Utama

dilakukan oleh karyawan yang sedang cuti dan akan aktif kembali adalah membuka halaman persetujuan cuti, kemudian menekan tombol aktivasi yang ada di bawah dari halaman tersebut. Setelah menekan tombol tersebut, maka akan diarahkan ke halaman aktivasi. Berikut adalah script yang digunakan untuk menampilkan halaman aktivasi 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=0 MARGINWIDTH=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=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">&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"

177

File Program Utama

Bab 8

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; Data 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; marginbottom: 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; marginbottom: 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; margintop: 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; margintop: 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\">

178

Bab 8

File Program Utama

NIK Atasan</td><td width=\"73%\"><p style=\"margin-left: 10px; margintop: 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; margintop: 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; margintop: 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; margintop: 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; margintop: 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; margintop: 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:

179

File Program Utama

Bab 8

2px\">&nbsp;</td><td bgcolor=\"#F5DDB8\" width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; margin-bottom: 2px\"> Aktivasi</td></tr>"; $data2=mysql_query("select * from data_cuti where nik='$nik' 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\"> 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\"> 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\"><p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\"> Jumlah Cuti</td><td width=\"73%\"><p style=\"margin-left: 10px; margintop: 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\"><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=\"hidden\" value=\"$id\" name=\"id\"><input type=\"submit\" value=\"AKTIF KEMBALI\" name=\"kirim\" style=\"color: #000080; fontfamily: arial; font-weight: bold\"></td></tr>

180

Bab 8

File Program Utama

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

Dengan script ini akan ditampilkan sebuah halaman yang menginformasikan tentang karyawan dan data cuti yang sedang berjalan. Script pertama adalah membaca database tentang karyawan tersebut 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 dengan database adalah menggunakan file sambung.php. Kemudian untuk membaca data karyawan menggunakan query mysql. Untuk menampilkan pada browser dalam script di atas adalah menggunakan tag-tag html. Yang perlu diperhatikan dalam halaman ini adalah tombol aktif kembali pada bagian bawah dari halaman ini. Tombol ini dibuat dengan tag html khususnya menggunakan form. Berikut adalah tampilan halaman aktivasi setelah mengakhiri masa cuti :

181

File Program Utama

Bab 8

Gambar 8.15 Halaman aktivasi.

Perhatikan pada bagian bawah halaman aktivasi ini, yang menampilkan tombol dari obyek formulir yang namanya adalah AKTIF KEMBALI. Tombol tersebut digunakan untuk memberikan informasi bahwa karyawan yang sedang cuti mulai aktif kembali. 182

Bab 8

File Program Utama

Setelah tombol tersebut ditekan, maka akan diarahkan ke file prosesaktivasi.php sebagai file yang memproses data karyawan untuk mengubah status cuti menjadi aktif kembali. Berikut script yang ada dalam file prosesaktivasi.php :
<? include"cek.php"; include"sambung.php"; $update=mysql_query("update data_karyawan set status='0' where nik='$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.0 var 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.0 var 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;

183

File Program Utama


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

Bab 8

function FP_getObjectByID(id,o) {//v1.0 var 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=0 MARGINWIDTH=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=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">

184

Bab 8

File Program Utama

<p align="center">&nbsp;</p> <p align="center" style="margin-top: 3px; marginbottom: 3px">&nbsp;</p> <p align="center" style="margin-top: 3px; marginbottom: 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="Halaman Member" ></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 awal script, yaitu:
include"cek.php"; include"sambung.php";

185

File Program Utama

Bab 8

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

Script ini berfungsi untuk merubah status karyawan dalam database karyawan yaitu field status menjadi 0 dan juga mengubah data cuti yang ada dalam database data_cuti pada field aktivasi dengan nilai -. Untuk script berikutnya adalah menampilkan informasi konfirmasi bahwa aktivasi telah dijalankan. Setelah tombol aktivasi ditekan maka akan ditampilkan halaman konfirmasi seperti pada gambar berikut:

Gambar 8.16 Halaman konfirmasi aktivasi.

SCRIPT UNTUK MENGGANTI PASSWORD


Dalam proyek administrasi pengajuan cuti online karyawan ini juga menyediakan fasilitas untuk mengganti password oleh tiap-tiap karyawan yang bersangkutan. Hal ini dilakukan untuk memberikan privasi karyawan yang bersangkutan atas data pribadi masingmasing. Untuk mengganti password, seorang karyawan harus melakukan login terlebih dahulu. Pada halaman data karyawan ini 186

Bab 8

File Program Utama

akan ditampilkan sebuah formulir untuk mengganti password di bawah halaman ini. Berikut adalah tampilan formulir untuk mengganti password tersebut:

Gambar 8.17 Formulir untuk mengganti password.

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

187

File Program Utama

Bab 8

style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Password</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 2px\">&nbsp;<!--webbot bot=\"Validation\" b-valuerequired=\"TRUE\" i-maximum-length=\"8\" --><input type=\"text\" name=\"pass\" size=\"17\" style=\"color: #000080; font-family: arial; fontsize: 12pt\" value=\"$d1[password]\" maxlength=\"8\"><input type=\"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 dengan kode php. Pada script formulir ini mengandung beberapa obyek, yang pertama adalah action dengan nilai ubah_password.php. Artinya apabila tombol submit ditekan maka data yang diisikan dalam formulir akan dikirim ke halaman ubah_password.php. Obyek berikutnya adalah kotak teks dengan nama pass. Kotak teks ini mempunyai nilai atau value data password yang diambil dari pembacaan database karyawan yang bersangkutan. Obyek lain yang ada dalam formulir tersebut adalah submit yang akan menjadi sebuah tombol dan sebuah obyek hidden yang mempunyai nilai nik dari karyawan tersebut. Setelah password baru diketik kemudian data password baru tersebut akan dikirim ke halaman ubah_password.php dengan script pengolah data seperti di bawah ini:
<? include"./cek.php"; include"./sambung.php"; $edit=mysql_query("update karyawan set password='$pass' where nik='$id'"); if($edit){ echo"<HTML> <HEAD>

188

Bab 8

File Program Utama

<TITLE>Website Cuti Online</TITLE> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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=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\" 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 berikut ini<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=45 ALT=\"\"></TD></TR> </TABLE> </BODY> </HTML>"; } ?>

Penjelasan script:

Inti dari script di atas adalah mengubah data password lama yang ada dalam database karyawan diganti dengan password baru yang dikirim 189

File Program Utama

Bab 8

dari formulir ubah password. Script yang berfungsi untuk mengubah data password tersebut adalah:
include"./sambung.php"; $edit=mysql_query("update karyawan set password='$pass' where nik='$id'");

Perintah yang digunakan adalah update dengan tujuan mengubah isi dari database karyawan pada field password dengan nilai baru dari formulir $pass dengan filter atau syarat field nik adalah nilai dari variabel $id.

Setelah proses mengubah data password lama dengan data password yang baru, maka pada halaman ini akan ditampilkan konfirmasi bahwa data password telah diubah dengan data password yang baru seperti pada gambar berikut :

Gambar 8.18 Konfirmasi bahwa password telah diubah..

ARSIP CUTI TIAP KARYAWAN


Data cuti yang pernah diambil oleh tiap karyawan akan disimpan di dalam database sebagai arsip dan laporan di tiap akhir periode. Data arsip cuti ini hanya dapat diakses oleh atasan, kepala bagian dan karyawan itu sendiri. Cara mengakses data arsip cuti ini adalah setiap karyawan harus login dan menekan tombol arsip cuti yang ada

190

Bab 8

File Program Utama

di menu atas pada halaman data karyawan. Halaman arsip cuti karyawan ini menampilkan data cuti yang pernah diambil berdasarkan waktu pengambilan cuti. Berikut adalah script yang digunakan untuk menampilkan halaman arsip cuti karyawan:
<? include"cek.php"; ?><HTML> <HEAD> <TITLE>Website Cuti Online</TITLE> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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=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">&nbsp; <a href="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"){

191

File Program Utama


$d1[status]="Aktif"; }else{ $d1[status]="Cuti"; } echo"<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" id=\"table3\">

Bab 8

<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%\">

192

Bab 8

File Program Utama

<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; marginbottom: 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; margintop: 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="marginright: 10px; margin-top: 2px; margin-bottom: 2px">&nbsp;</td><td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 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">Arsip cuti yang pernah diambil</td></tr> <tr><td width="100%" bgcolor="#CEE4FD" align="right" colspan="2"><p style="margin-left: 10px; margin-top: 2px; margin-bottom: 2px" align="left">Untuk melihat data cuti secara lengkap, silakan klik pada bagian keterangan (detail) pada masing masing data cuti yang pernah

193

File Program Utama


diambil</p>

Bab 8

<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"><p style="margin-top: 2px; margin-bottom: 2px"> Tanggal Cuti</td> <td bgcolor="#6799CF" width="114"><p style="margin-top: 2px; marginbottom: 2px"> Jumlah Cuti</td> <td bgcolor="#6799CF" width="256"><p style="margin-top: 2px; marginbottom: 2px">Alasan Mengambil Cuti</td> <td bgcolor="#6799CF" width="117">Keterangan</td> </tr> <? $data2=mysql_query("select * from data_cuti where nik='$id' and status='1' order by mulai"); while($d2=mysql_fetch_array($data2)){ echo"<tr> <td width=\"133\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"borderbottom: 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=\"borderbottom: 1px solid #FFFFFF\"> $d2[lama] hari</td> <td width=\"256\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"borderbottom: 1px solid #FFFFFF\"> $d2[alasan]</td> <td width=\"117\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"borderbottom: 1px solid #FFFFFF\"><p align=\"center\"> <a href=\"detail_arsip.php?id=$d2[id]\">Detail</a></td> </tr>"; } ?> </table> </td></tr> <tr>

194

Bab 8

File Program Utama

<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"><p style="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=45 ALT=""></TD> </TR> </TABLE> </BODY> </HTML>

Penjelasan script: Dalam script ini membaca data personal karyawan dan membaca data cuti yang pernah diambil selama menjadi karyawan dalam setiap periode. Yang pertama dalam script di atas adalah membaca data karyawan yaitu membaca database yang ada dalam database karyawan. Berikut adalah potongan script yang membaca data karyawan 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 aktif atau cuti dengan menggunakan fungsi if, kemudian ditampilkan menggunakan tag-tag html. 195

File Program Utama

Bab 8

Tahap berikutnya adalah membaca data cuti yang ada dalam database 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 adalah potongan script yang berfungsi membaca dan menampilkan data arsip cuti tersebut:
$data2=mysql_query("select * from data_cuti where nik='$id' and status='1' order by mulai"); while($d2=mysql_fetch_array($data2)){ echo"<tr> <td width=\"133\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"borderbottom: 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=\"borderbottom: 1px solid #FFFFFF\"> $d2[lama] hari</td> <td width=\"256\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"borderbottom: 1px solid #FFFFFF\"> $d2[alasan]</td> <td width=\"117\" valign=\"top\" bgcolor=\"#F5DDB8\" style=\"borderbottom: 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_cuti dengan menggunakan perintah query select berdasarkan field nik adalah id dan field status bernilai 1. Pembacaan data diurutkan berdasarkan field mulai. Untuk menampilkan data sera berurutan dan berulang-ulang sampai data dibaca dan ditampilkan semua menggunakan fungsi while. Data ditampilkan menggunakan tag-tag html yang ada dalam fungsi while. Berikut adalah tampilan halaman arsip cuti tiap-tiap karyawan:

196

Bab 8

File Program Utama

Gambar 8.19 Halaman arsip cuti karyawan.

Perhatikan pada tampilan halaman arsip cuti tersebut, bagian atas dari halaman ini ditampilkan data personal dari karyawan yangh bersangkutan dan bagian bawah ditampilkan daftar cuti yang pernah diambil. Tiap-tiap arsip cuti pada bagian keterangan adalah sebuah link yang digunakan untuk membuka keterangan detail ditiap-tiap data cuti.

HALAMAN DETAIL ARSIP CUTI


Yang disebut dengan halaman detail cuti dalam proyek ini adalah sebuah halaman yang menampilkan data secara detail pada tiap-tiap cuti yang pernah diambil oleh seorang karyawan. Halaman ini dapat dibuka apabila seorang karyawan yang sudah membuka halaman arsip cuti. Setelah ditampilkan halaman data arsip cuti kemudian dalam tiap data cuti dapat dilihat sebuah link yang ada di bagian keterangan. Dengan menekan link ini maka akan ditampilkan halaman detail cuti dari arsip cuti.

197

File Program Utama

Bab 8

Berikut adalah script yang digunakan untuk membuat halaman detail cuti 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.0 var 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.0 var 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]; } } }

198

Bab 8

File Program Utama

function FP_getObjectByID(id,o) {//v1.0 var 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=0 MARGINWIDTH=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=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>

199

File Program Utama

Bab 8

<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); $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=\"margintop: 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

200

Bab 8

File Program Utama


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

bgcolor=\"#F5DDB8\" align=\"right\">

<td width=\"27%\"

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\"> Nama</td> <td width=\"73%\"> <p style=\"margin-left: 10px; margintop: 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; margintop: 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; margintop: 2px; margin-bottom: 2px\"> $d1[tingkat]</td> </tr> <tr>

201

File Program Utama


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

Bab 8

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\"> Jabatan</td> <td width=\"73%\"> <p style=\"margin-left: 10px; margintop: 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; margintop: 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; margintop: 2px; margin-bottom: 2px\"> $d1[nik_atasan]</td> </tr> <tr> <td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"> <p style=\"margin-right: 10px;

202

Bab 8

File Program Utama

margin-top: 2px; margin-bottom: 2px\"> NIK Support</td> <td width=\"73%\"> <p style=\"margin-left: 10px; margintop: 2px; margin-bottom: 2px\"> $d1[nik_support]</td> </tr>"; ?> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"> <p style="margin-top: 2px; marginbottom: 2px">&nbsp;</td> <td width="73%"> <p style="margin-top: 2px; marginbottom: 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; margintop: 2px; margin-bottom: 2px"> Jumlah Cuti yang belum diambil</td> </tr> <? if($d2[status]=="0"){ $d2[status]="Baru"; }elseif($d2[status]=="1"){ $d2[status]="Sedang Cuti"; }else{

203

File Program Utama

Bab 8

$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; fontfamily: arial; font-size: 12pt; text-align: center\" value=\"$dt[0]\"> / <input type=\"text\" name=\"bln\" size=\"3\" style=\"color: #000080; fontfamily: arial; font-size: 12pt; text-align: center\" value=\"$dt[1]\"> / <input type=\"text\" name=\"thn\" size=\"5\" style=\"color: #000080; fontfamily: 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;

204

Bab 8

File Program Utama

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; margintop: 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; margintop: 2px; margin-bottom: 2px\"> $d1[th2004] Hari</td> </tr> <tr>

205

File Program Utama


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

Bab 8

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\"> Tahun 2005</td> <td width=\"73%\"> <p style=\"margin-left: 10px; margintop: 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; margintop: 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; margintop: 2px; margin-bottom: 2px\">&nbsp;</td> </tr> <tr> <td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"> <p style=\"margin-right: 10px;

206

Bab 8

File Program Utama

margin-top: 2px; margin-bottom: 2px\">&nbsp;</td> <td bgcolor=\"#F5DDB8\" width=\"73%\"> <p style=\"margin-left: 10px; margintop: 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; margintop: 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; margintop: 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-

207

File Program Utama


top: 2px; margin-bottom: 2px\"> $d2[lama] hari</td> </tr> <tr> bgcolor=\"#F5DDB8\" align=\"right\"> <td width=\"27%\"

Bab 8

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\"> Jenis Cuti Yang Diambil</td> <td width=\"73%\"> <p style=\"margin-left: 10px; margintop: 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 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; margintop: 2px; margin-bottom: 2px\"> $d2[alasan]</td>

208

Bab 8

File Program Utama


</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; margintop: 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; margintop: 5px; margin-bottom: 5px"> <?echo$submit?></form></td> </tr> </table> </td>

209

File Program Utama

Bab 8

<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 karyawan berdasarkan nik karyawan yang sedang membuka halaman ini. Kemudian data yang telah dibaca dari database karyawan ini ditampilkan kedalam awal halaman sebagai data personal karyawan. Berikut adalah potongan script yang membaca data karyawan tersebut:
$data4=mysql_query("select * from karyawan where nik='$nik'"); $d3=mysql_fetch_array($data4);

Script yang perlu diperhatikan lagi adalah bagian yang mendeklarasikan apakah karyawan tersebut berstatus sedang cuti atau sedang aktif. Sumber data yang digunakan untuk menentukan status ini adalah dari database karyawan dan dideklarasikan menggunakan fungsi if. Berikut adalah script yang berfungsi untuk menyaring data status dan mendeklarasikan ke dalam halaman detail_cuti.php:
if($d2[status]=="0"){ $d2[status]="Baru"; }elseif($d2[status]=="1"){ $d2[status]="Sedang Cuti"; }else{ $d2[status]="Ditolak"; }

210

Bab 8

File Program Utama

Untuk menampilkan data yang telah dibaca dari database karyawan kemudian ditampilkan dalam browser dengan tag-tag html. Berikut adalah tampilan detail dari halaman detail_cuti karyawan yang bersangkutan:

Gambar 8.20 Halaman detail arsip cuti karyawan.

211

Setiap program dan website membutuhkan fasilitas administrator yang dapat mengelola isi atau data yang ada di dalam program tersebut. Administrator adalah user atau pengguna yang mempunyai hak akses paling tinggi dalam sebuah program. Administrator bertanggungjawab atas data yang ada dalam program tersebut. Fungsi dari administrator ini adalah sebuah solusi pemecahan permasalahan dalam lingkup pengolahan data pada program ini. Misalkan dalam pengisian data karyawan dalam program ini ada kesalahan dan perlu diperbaiki, maka seorang administrator sangat dibutuhkan untuk memperbaiki kesalahan yang terjadi. Script-script administrator disimpan dalam file-file yang disimpan dalam sebuah folder tersendiri diberi nama admin. File utama dalam folder admin ini adalah index.php. Apabila file index.php ini dipanggil menggunakan browser, maka akan ditampilkan sebuah halaman yang berisikan formulir untuk login. Berikut adalah tampilan halaman index.php sebagai file utama untuk mengakses halaman administrator: 213

Script Halaman Administrator

Bab 9

Gambar 9.1. Tampilan halaman utama administrator.

Setiap user sebagai administrator yang akan masuk ke halaman administrator harus memasukkan user id dan password. User yang membuka halaman ini harus memiliki hak akses penuh sebagai administrator. Berikut adalah script yang digunakan untuk membentuk 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

214

Bab 9

Script Halaman Administrator

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; fontfamily: arial; font-size: 12pt"></td> </tr> <tr> <td width="37%" align="right">

215

Script Halaman Administrator

Bab 9

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

216

Bab 9 Penjelasan script:

Script Halaman Administrator

Yang perlu diperhatikan dalam menyusun script ini adalah menyusun bagian tag-tag formulir. Pada formulir ini memiliki beberapa obyek yang harus dibuat dengan benar. Yang pertama adalah obyek action, obyek action dalam sebuah formulir adalah parameter yang mempunyai nilai lokasi dan nama file tujuan apabila tombol submit ditekan. Secara otomatis data yang ada dalam obyek-obyek yang lain akan terkirim ke file tujuan tersebut.
<form method="POST" action="admin.php">

Nilai dari obyek action dalam formulir login tersebut adalah admin.php. Artinya apabila userid dan password telah diisi dan tombol Login ditekan, maka data yang ada dalam formulir login tersebut akan dikirim ke file admin.php. Obyek yang ke dua adalah kotak teks dengan tipe text dan diberi nama user. Obyek ini digunakan untuk menuliskan data user id oleh administrator.
<input type="text" name="user" size="20" style="color: #000080; fontfamily: arial; font-size: 12pt">

Script ini apabila dijalankan pada browser akan membentuk sebuah kotak teks dengan nama user. Obyek yang ke tiga adalah kotak teks juga dengan nama password. Tipe dari kotak teks ini adalah password. Dengan membuat kotak teks dengan tipe password ini, maka data yang dituliskan ke dalam kotak teks ini akan ditampilkan dengan karakter tertentu sehingga data 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 akan ditampilkan sebagai kotak teks yang akan digunakan untuk menulis password administrator. Obyek yang terakhir adalah sebuah tombol dengan tipe submit. Tombol ini digunakan untuk menjalankan formulir sehingga data akan terkirim ke file admin.php. Tombol submit ini diberi nama login

217

Script Halaman Administrator

Bab 9

dan memiliki nilai atau value LOGIN. Nilai dari tombol ini nantinya akan 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> sebagai batas akhir dari sebuah formulir.

HALAMAN ADMIN
Halaman admin disusun dengan script php dan tag-tag html. Script php dalam halaman ini berfungsi untuk mengakses database dan memanipulasi data yang telah dibaca dari database. Tag-tag html berfungsi untuk menampilkan halaman dan data yang telah diakses dalam bentuk grafis. Pada awal script dalam halaman admin ini disusun oleh script php yang fungsinya mengakses data dari database admin. Database admin digunakan untuk menampung data user dan password administrator. Berikut adalah script yang ada dalam file admin.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>

218

Bab 9

Script Halaman Administrator

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252"> <style> <!-body --> </style> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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();"> { font-family: arial; color: #000080 }

219

Script Halaman Administrator


<img border="0" id="img1" src="../images/buttonE.gif" height="20" width="125" alt="ULANGI" fp-style="fp-btn:

Bab 9

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 fungsi session() yang berfungsi untuk mendeklarasikan bahwa dalam halaman ini mengandung data sesi yang akan diciptakan. Kemudian dibawahnya adalah fungsi include untuk memanggil file sambung.php yang di dalamnya terdapat script untuk koneksi dengan database MySQL. Script berikutnya adalah query SQL yang berfungsi untuk membaca database admin yaitu data user dan password untuk administrator. Potongan script tersebut adalah :
session_start(); include"../sambung.php"; $admin=mysql_query("select * from admin where id='1'"); $user2=mysql_fetch_array($admin);

220

Bab 9

Script Halaman Administrator

Data user dan password hasil pembacaan dari database admin kemudian disimpan ke dalam beberapa variabel. Jenis data yang dihasilkan adalah data array. Berikut adalah data user dan data password yang telah dihasilkan :
$user2[user]=administrator; $user2[password]=passwordku;

Maksud dari script di atas adalah data user yang telah dibaca dari database 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 akan menyaring atau membandingkan data hasil pembacaan dari database admin dengan data yang telah dikirim dari formulir login dalam halaman index.php (halaman utama administrator). Fungsi yang digunakan untuk membandingkan kedua data ini adalah fungsi logika if else. Berikut adalah script yang digunakan untuk membandingkan kedua 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 pada variabel $user dari formulir login sama dengan data dalam variabel $user2[user], dan data yang ada dalam variabel $password sama dengan data yang ada dalam variabel $user2[password], maka data yang ada dalam variabel $password akan didaftarkan sebagai data sesi dengan fungsi:
session_register("password");

Kemudian administrator dialihkan membuka file administrator.php menggunakan fungsi :


header("location:./administrator.php");

Apabila data user dan password yang dikirim dari formulir login tidak sama dengan data hasil pembacaan dari database admin, maka akan 221

Script Halaman Administrator

Bab 9

ditampilkan pesan kesalahan yang disusun dengan tag-tag html dari script dibawahnya, seperti yang tampak pada Gambar 9.2 berikut :

Gambar 9.2 Komentar kesalahan memasukkan password pada administrator

HALAMAN ADMINISTRATOR
Pada halaman ini ditampilkan beberapa link yang digunakan untuk membuka halaman-halaman administrator yang lain, seperti halaman untuk menambah data karyawan dan halaman untuk mengubah data karyawan. Namun sebelum menampilkan isi dari halaman administrator ini keberadaan data sesi akan diperiksa terlebih dahulu. Hal ini dilakukan untuk menolak user lain selain administrator yang akan membuka halaman ini. Script yang digunakan untuk memeriksa keberadaan data sesi ini ada dalam file cek.php. Jadi urutan kerja script dalam halaman administrator ini adalah memanggil file cek.php, berikutnya mengakses database dan menampilkan halaman administrator pada browser. Berikut adalah script 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);

222

Bab 9

Script Halaman Administrator

?> <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 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="10">&nbsp;</td> <td valign="top"> <p align="center"><a href="data_karyawan.php">Lihat Data Karyawan</a></p> <p align="center"><a href="input_data.php">Tambah Data Karyawan</a></p>

223

Script Halaman Administrator

Bab 9

<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 dan Password</p> </td> </tr> <tr> <td align="right">UserID Baru</td> <td align="left"> <!--webbot bot="Validation" BValue-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">Password BAru</td> <td align="left"> <!--webbot bot="Validation" BValue-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"

224

Bab 9

Script Halaman Administrator

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 kodekode 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 ditampilkan halaman administrator yang berisikan beberapa link dan formulir

225

Script Halaman Administrator

Bab 9

untuk mengganti user baru dan password baru. Berikut adalah tampilan halaman administrator.php:

Gambar 9.3 Halaman administrator.php

HALAMAN DATA KARYAWAN


Halaman data karyawan diakses dari link lihat data karyawan yang ada dalam halaman administrator. Halaman data karyawan ini menampilkan data karyawan dan data cuti yang pernah diambil oleh karyawan secara keseluruhan. Berikut adalah script yang digunakan untuk 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;

226

Bab 9

Script Halaman Administrator

charset=windows-1252"> <style> <!-body { font-family: arial; color: #000080 } --> </style> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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=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 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>

227

Script Halaman Administrator

Bab 9

</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\">

228

Bab 9

Script Halaman Administrator

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

229

Script Halaman Administrator

Bab 9

#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 kodekode php dan tag-tag html. Script php digunakan untuk mengakses data yang ada dalam database karyawan dan data_cuti, kemudian data tersebut diolah dan ditampilkan di halaman data karyawan menggunakan tag-tag html. Yang perlu diperhatikan dalam script di atas adalah kode-kode php yang berfungsi mengakses dan membaca database 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{

230

Bab 9
$d1[status]="Cuti"; }

Script Halaman Administrator

Script bagian ini berfungsi untuk melakukan koneksi dengan database karyawan dan membaca data karyawan. Hasil pembacaan data karyawan ini disimpan ke dalam variabel $d1 dengan tipe data array. Khusus data yang dibaca dari field status akan dijadikan filter untuk menampilkan status karyawan, yaitu sedang aktif atau sedang cuti. Tahap berikutnya adalah menampilkan data hasil pembacaan dari database karyawan ini ke dalam halaman data karyawan dengan cara menyisipkan pada bagian-bagian tag-tag html. Kode php berikutnya adalah digunakan untuk melakukan koneksi dengan database data cuti. Hal ini dilakukan untuk menampilkan seluruh arsip cuti dari seluruh karyawan yang tercatat dalam database.

Berikut adalah kode-kode php yang berfungsi untuk membaca data cuti 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>"; }

231

Script Halaman Administrator

Bab 9

Fungsi yang pertama untuk membaca database menggunakan perintah query dari MySQL. Kemudian data ditampilkan menggunakan fungsi echo yang ada di dalam fungsi while sebagai perintah pengulangan menampilkan data cuti karyawan sebanyak record 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 setiap bagian keterangan data karyawan ditampilkan link UBAH dan HAPUS. Kedua link tersebut digunakan untuk mengubah data dan menghapus data karyawan yang bersangkutan. Kemudian di bagian data karyawan cuti pada bagian keterangan di masing-masing data karyawan cuti juga ditampilkan sebuah link dengan nama Lihat

232

Bab 9

Script Halaman Administrator

Detail dengan tujuan untuk melihat data cuti secara detail dan apabila ada kesalahan, maka dapat diperbaiki oleh administrator.

UBAH DATA KARYAWAN


Halaman ubah data karyawan ini digunakan untuk menampilkan data karyawan tertentu ke dalam formulir dengan tujuan untuk mengubah data yang salah menjadi data yang benar atau baru. Cara membuka halaman ini yaitu dengan membuka link UBAH di sebelah kanan data karyawan pada halaman data karyawan administrator. Berikut adalah script untuk menampilkan halaman ubah data karyawan tersebut:
<? include"../cek.php"; ?> <HTML> <HEAD> <TITLE>Website Cuti Online</TITLE> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=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=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="data_karyawan.php">

233

Script Halaman Administrator

Bab 9

<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 Data Karyawan</td></tr> <tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td> <td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; Data Karyawan</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; margintop: 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; marginbottom: 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>

234

Bab 9

Script Halaman Administrator

<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; fontfamily: arial; font-size: 12pt\"><option selected value=\"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; marginbottom: 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\">

235

Script Halaman Administrator

Bab 9

<p style=\"margin-right: 10px; margin-top: 2px; margin-bottom: 2px\">Status</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 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 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; marginbottom: 2px\"><input type=\"text\" name=\"besar\" size=\"6\" style=\"color: #000080; font-family: arial; font-size: 12pt; text-align: center\" value=\"$d[besar]\">

236

Bab 9

Script Halaman Administrator

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; marginbottom: 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; marginbottom: 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\"><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=\"marginright: 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\" imaximum-length=\"8\" --><input type=\"text\" name=\"pass\" size=\"17\" style=\"color: #000080; font-family: arial; font-size: 12pt\"

237

Script Halaman Administrator

Bab 9

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\">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><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=45 ALT=""></TD></TR> </TABLE> </BODY> </HTML>

Penjelasan Script: Pada script tersebut banyak didominasi tag-tag html pembentuk formulir. Dalam formulir ini terdapat beberapa obyek, antara lain kotak teks, option dan drop down. Nilai yang ada di dalam masingmasing obyek ini adalah data karyawan yang akan diubah datanya. Data yang ditampilkan tersebut diambil dari database karyawan yang dibaca menggunakan kode-kode php. Berikut adalah potongan script php yang berfungsi untuk mengakses dan membaca data karyawan dalam script di atas:

238

Bab 9

Script Halaman Administrator

include"../sambung.php"; $dat=mysql_query("select * from data_karyawan where id='$id'"); $d=mysql_fetch_array($dat);

Pembacaan data karyawan dalam database karyawan tersebut berdasarkan field id dengan nilai sama dengan nilai yang ada dalam variabel $id.Field id dalam database karyawan menjadi index, sehingga setiap pembacaan berdasarkan field id akan menghasilkan data record tunggal. Hasil pembacaan tersebut kemudian ditampilkan menggunakan perintah echo ke dalam nilai tiap-tiap obyek dalam formulir ubah data karyawan sesuai dengan namanya. Berikut adalah tampilan halaman ubah data karyawan:

Gambar 9.5 Halaman ubah data karyawan administrator.

239

Script Halaman Administrator

Bab 9

Pada halaman ini apabila Anda perhatikan adalah sebuah formulir yang berisikan data karyawan tertentu. Untuk mengubah data karyawan cukup mengganti data yang akan diubah dan menekan tombol KIRIM pada bagian bawah formulir. Setelah tombol KIRIM, data baru yang ada di formulir tersebut akan dikirim ke file yang berisikan script untuk mengolah data karyawan yang telah diubah tersebut.

SCRIPT PROSES UBAH DATA KARYAWAN


Script ini disimpan ke dalam sebuah file dengan nama proses_ubah_data.php. File ini dijadikan nilai action dari formulir ubah data pada halaman ubah_data.php yang telah dibahas sebelumnya. Fungsi utama dari script ini adalah melakukan koneksi dengan database karyawan dan mengubah atau meng-update data karyawan tertentu dari data lama diganti dengan data baru yang telah diubah dari formulir ubah data karyawan sebelumnya. Berikut adalah 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 sebagai otorisasi keberadaan data sesi. Apabila data sesi tidak ditemukan

240

Bab 9

Script Halaman Administrator

maka proses ubah data akan dibatalkan dan dialihkan ke halaman index.php yang berisikan formulir untuk login. Perintah berikutnya adalah memanggil file sambung.php untuk melakukan koneksi dengan database. Karena script ini juga sebagai referensi untuk menghapus data karyawan, maka digunakan juga fungsi if sebagai pemisah operasi menghapus data dan mengubah data. Jika dari halaman sebelumnya mengandung variabel $act dengan nilai del, maka perintah penghapusan data akan dilakukan. Jika dari halaman sebelumnya tidak mempunyai variabel $act dengan nilai del, maka perintah mengubah data akan dilaksanakan. Berikut adalah potongan script 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 perintah query UPDATE. Kemudian diikuti nama database dan nama fieldfield dengan nilai baru.

Pada akhir script ini, tuliskan fungsi header dengan nilai location:./admin.php, artinya apabila proses perubahan data selesai maka akan langsung diarahkan untuk membuka halaman admin.php.

PROSES MENGHAPUS DATA KARYAWAN


Menghapus data karyawan dari database kadang perlu dilakukan apabila seorang karyawan telah meninggalkan perusahaan. Pekerjaan ini akan dilakukan oleh seorang administrator. Proses menghapus data karyawan ini diawali dari membuka data karyawan. Setiap daftar data karyawan yang ditampilkan akan diberikan sebuah link HAPUS untuk menghapus data karyawan yang bersangkutan. Berikut adalah tampilan link HAPUS dari data karyawan dalam halaman data karyawan:

241

Script Halaman Administrator

Bab 9

Link untuk menghapus data

Gambar 9.6 Link untuk menghapus data karyawan.

Nilai link HAPUS tersebut adalah: http://localhost/karyawan/admin/proses_ubah_data.php?id=5&act=del Maksud dari link di atas adalah file yang dituju dari link hapus adalah proses_ubah_data.php yang mempunyai dua atribut yaitu id dengan nilai 5 dan atribut act dengan nilai del. Kedua atribut tersebut pada script yang ada dalam file proses_ubah_data.php adalah sebagai filter untuk proses penghapusan data karyawan. Berikut script yang berfungsi untuk menghapus 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"); ?>

242

Bab 9

Script Halaman Administrator

Penjelasan script: Yang perlu diperhatikan dalam script di atas adalah fungsi if yang mempunyai filter variabel $act dengan nilai del. Variabel ini diambil dari atribut link HAPUS, artinya Jika variabel $act tersebut ada maka perintah yang akan dijalankan dalam script ini adalah query SQL delete. Kemudian atribut id dengan nilai 5 digunakan untuk filter penghapusan record di database karyawan yaitu data yang akan dihapus adalah data karyawan yang berada dalam database karyawan pada field id dengan nilai 5. Untuk lebih jelasnya perhatikan potongan script untuk menghapus data tersebut:
$del=mysql_query("delete from karyawan where id='$id'");

UBAH DATA CUTI KARYAWAN


Fasilitas untuk mengubah data cuti karyawan ini digunakan untuk mengubah data cuti yang diisi oleh karyawan yang mengajukan cuti dan pengisian persetujuan cuti yang diisi oleh atasan. Pengubahan data cuti ini hanya dapat dilakukan oleh administraor. Hal ini dilakukan untuk mengantisipasi kecurangan yang dilakukan oleh pemakai program. Pengubahan data cuti karyawan ini diawali dari membuka halaman detail cuti karyawan dari link yang ada di halaman admin. Setelah link dibuka maka akan ditampilkan data cuti karyawan seperti pada Gambar 9.6 berikut :

243

Script Halaman Administrator

Bab 9

Gambar 9.7 Data detail karyawan untuk diubah.

Script yang digunakan untuk menampilkan data cuti karyawan tersebut 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'");

244

Bab 9

Script Halaman Administrator

$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; Data 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; marginbottom: 2px\">$d1[nama]</td> </tr> <tr> <td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"marginright: 10px; margin-top: 2px; margin-bottom: 2px\">NIK</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 2px\">$d1[nik]</td> </tr> <tr> <td width=\"27%\" bgcolor=\"#F5DDB8\" align=\"right\"><p style=\"margin-

245

Script Halaman Administrator

Bab 9

right: 10px; margin-top: 2px; margin-bottom: 2px\">Tingkat</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 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; marginbottom: 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>"; ?>

246

Bab 9

Script Halaman Administrator

<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; marginbottom: 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; marginbottom: 2px"><?echo$d1[th2004]?>Hari</td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 10px; margin-top: 2px; margin-bottom: 2px"> Tahun 2005</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px"><?echo$d1[th2005]?>Hari</td> </tr> <tr>

247

Script Halaman Administrator

Bab 9

<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; marginbottom: 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="marginright: 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="marginright: 10px; margin-top: 2px; margin-bottom: 2px"> Pengajuan Cuti Anda</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px"><?echo$d2[status]?></td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 10px; margin-top: 2px; margin-bottom: 2px"> Mulai Cuti Tanggal</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px"><?echo$d2[mulai]?></td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="margin-

248

Bab 9

Script Halaman Administrator

right: 10px; margin-top: 2px; margin-bottom: 2px"> Selesai Cuti Tanggal</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px"><?echo$d2[masuk]?></td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 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="marginright: 10px; margin-top: 2px; margin-bottom: 2px"> Jenis Cuti Yang Diambil</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px">&nbsp;<?echo$d2[jenis]?></td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 10px; margin-top: 2px; margin-bottom: 2px"> Alamat Cuti Yang Dapat Dihubungi</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px"><?echo$d2[alamat]?> </td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 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>

249

Script Halaman Administrator

Bab 9

<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; marginbottom: 2px"><?echo$d2[catatan]?></td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 10px; margin-top: 2px; margin-bottom: 2px"> &nbsp;</td> <td width="73%"><p style="margin-left: 10px; margin-top: 2px; marginbottom: 2px">&nbsp;</td> </tr> <tr> <td width="27%" bgcolor="#F5DDB8" align="right"><p style="marginright: 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; marginbottom: 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 digunakan untuk melakukan koneksi dengan database MySQL dengan fungsi include. Langkah berikutnya adalah menggunakan perintah query untuk membaca data cuti berdasarkan data id karyawan yang ada dalam field id. Perintah pembacaan data cuti karyawan ini disimpan ke dalam variabel $d2. Hasil pembacaan data dari database data_cuti ini disimpan dengan jenis data array berdasarkan nama filed dari database data_cuti. Misalkan nama field yang akan diambil datanya adalah nama maka hasil pembacaan data ini disimpan ke dalam

250

Bab 9

Script Halaman Administrator

variabel $d2[nama]. Berikut adalah potongan script yang berfungsi untuk 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 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"; }

Setelah data cuti dibaca kemudian dengan menggunakan data nik karyawan dari database data_cuti dijadikan filter atau data relasi untuk membaca data karyawan yang ada dalam database karyawan. Khusus pada data status, yaitu diterima atau ditolak, perlu dideklarasikan tersendiri. Data yang ada dalam database status dinyatakan dengan nilai angka yaitu 0 atau 1. Dengan menggunakan fungsi if kemudian data status tersebut di ubah menjadi teks Diterima atau Ditolak. Untuk menampilkan data hasil pembacaan menggunakan fungsi echo.

FORMULIR UBAH DATA CUTI KARYAWAN


Formulir ini akan ditampilkan apabila administrator menekan tombol UBAH DATA pada bagian bawah halaman detail cuti. Tujuan ditampilkannya formulir ubah data cuti ini adalah untuk mengisikan data baru dan mengirimkan ke database data_cuti. Berikut adalah script yang digunakan untuk menampilkan formulir untuk mengubah data cuti karyawan :
<table border="0" width="100%" cellspacing="0" cellpadding="0" id="table3"> <? include"../sambung.php";

251

Script Halaman Administrator

Bab 9

$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 Karyawan Cuti</td></tr> <tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td> <td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; Data 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; margintop: 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; margintop: 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:

252

Bab 9

Script Halaman Administrator

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\"> <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; margintop: 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%\">

253

Script Halaman Administrator

Bab 9

<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\"><font face=\"Arial\"><font color=\"#000080\" size=\"3\"><input type=\"radio\" value=\"1\" name=\"status\" checked></font><font color=\"#000080\">Diterima </font><font color=\"#000080\" size=\"3\"><input type=\"radio\" value=\"2\" name=\"status\"></font><font color=\"#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\">

254

Bab 9

Script Halaman Administrator

<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; fontfamily: 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\"><font face=\"Arial\"><font color=\"#000080\" size=\"3\"> <input type=\"radio\" value=\"th2004\" name=\"jenis\" checked></font><font color=\"#000080\">Tahunan </font><font color=\"#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>

255

Script Halaman Administrator

Bab 9

<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 membentuk sebuah formulir. Formulir ini digunakan untuk mengisi data cuti yang baru karena ada kesalahan pada data lama. Nilai dari setiap obyek formulir diisi oleh data yang dibaca dari database data_cuti. Script php dari program di atas yang berfungsi untuk membaca data cuti adalah 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 dalam obyek-obyek formulir. Untuk obyek formulir yang perlu diperhatikan adalah action. Nilai dari obyek action ini adalah proses_ubah_cuti.php, artinya data yang telah diisikan dalam formulir setelah ditekan tombol UBAH DATA akan dikirim ke file ubah_data_cuti.php sebagai script proses pengubahan data cuti. Berikut adalah tampilan formulir untuk mengganti data cuti karyawan:

256

Bab 9

Script Halaman Administrator

Gambar 9.8 Formulir untuk mengubah data cuti karyawan.

257

Script Halaman Administrator

Bab 9

SCRIPT

PROSES KARYAWAN

UBAH

DATA

CUTI

Script ini digunakan untuk melakukan pengubahan data cuti karyawan yang memiliki kesalahan tulis. Fungsi utama script ini adalah melakukan koneksi dengan database data_cuti dan mengubah data cuti karyawan berdasarkan syarat tertentu, misalkan mengubah data cuti tertentu berdasarkan field id tertentu. Berikut adalah script yang 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 data cuti karyawan yang ada dalam database data_cuti adalah query SQL UPDATE. Kemudian setelah perintah update dilaksanakan, kemudian akan dialihkan untuk membuka halaman detail_cuti.php dengan fungsi header.

FORMULIR

KARYAWAN

UNTUK

MENAMBAH

DATA

Program database cuti online ini juga menyediakan fasilitas untuk menambah data karyawan baru. Hal ini dibuat untuk mendaftarkan data karyawan baru ke dalam database karyawan. Hak untuk menambah data karyawan baru dimiliki oleh administrator sebagai hak paling tinggi dan yang bertanggung jawab atas seluruh data. 258

Bab 9

Script Halaman Administrator

Proses penambahan data karyawan baru ini dimulai dari halaman administrator dengan menekan link Tambah data karyawan setelah seorang administrator melakukan login. Halaman tambah data karyawan ini berisikan tag-tag html yang membentuk formulir tambah data karyawan. Berikut adalah script yang digunakan untuk membentuk 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 Data Karyawan</td></tr> <tr><td width=\"27%\" bgcolor=\"#F5DDB8\">&nbsp;</td> <td bgcolor=\"#F5DDB8\" width=\"73%\">&nbsp;&nbsp; Data Karyawan</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; margintop: 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; margintop: 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\"

259

Script Halaman Administrator

Bab 9

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; fontfamily: arial; font-size: 12pt\"><option selected value=\"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; marginbottom: 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:

260

Bab 9

Script Halaman Administrator

2px\">Status</td> <td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 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; marginbottom: 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 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=\"45\">Hari</td></tr>

261

Script Halaman Administrator

Bab 9

<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; marginbottom: 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>

262

Bab 9

Script Halaman Administrator

<td width=\"73%\"><p style=\"margin-left: 10px; margin-top: 2px; marginbottom: 2px\">&nbsp;<!--webbot bot=\"Validation\" b-valuerequired=\"TRUE\" i-maximum-length=\"8\" --><input type=\"text\" name=\"pass\" size=\"17\" style=\"color: #000080; font-family: arial; fontsize: 12pt\" 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\">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 nilai dari obyek yang ada di dalamnya. Yang pertama adalah obyek action, nilai dari obyek action ini adalah proses_input_data.php. Arti dari nilai obyek ini adalah tujuan pengiriman data yang dituliskan dalam formulir adalah ke file proses_input_data.php. Kemudian untuk memberikan nama dari setiap obyek tidak boleh diawali dengan angka dan tidak boleh mengandung karakter-karakter yang tidak lazim seperti $, @, !, &, * dan yang lainnya. Nama obyek tersebut apabila dikirim ke file proses_input_data.php akan menjadi sebuah variabel dengan nama yang sama. Berikut adalah tampilan formulir untuk menambah data karyawan: 263

Script Halaman Administrator

Bab 9

Gambar 9.9 Formulir untuk menambah data karyawan.

Untuk mendaftarkan data karyawan baru adalah mengisi data karyawan baru dan menekan tombol KIRIM yang ada di bagian bawah formulir tersebut.

264

Bab 9

Script Halaman Administrator

SCRIPT PROSES KIRIM DATA KARYAWAN

BARU

Script yang berfungsi untuk menerima data dari formulir tambah data dan memasukkan ke database karyawan ini disimpan ke dalam sebuah file yang namanya sama dengan nilai dari obyek action dalam formulir 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 database karyawan. Kemudian membaca data yang ada dan memeriksa apakah dalam database dengan nik yang akan dimasukkan sudah terdaftar atau belum. Pencarian data berdasarkan nik akan dilakukan dengan menggunakan perintah query select. Hasilnya akan dihitung dengan menggunakan perintah SQL yaitu mysql_num_rows() yang berfungsi untuk menghitung hasil pencarian. Berikut adalah potongan script tersebut:
$cek=mysql_query("select nik from karyawan where nik='$nik_baru'"); $total=mysql_num_rows($cek);

265

Script Halaman Administrator

Bab 9

Nilai dari variabel $total adalah angka sejumlah data yang ditemukan oleh perintah query mysql_query(select ).

Apabila nilai dari variabel $total adalah 0, berarti data karyawan yang mempunyai nik baru belum pernah didaftarkan. Kemudian perintah berikutnya adalah memasukkan data karyawan baru dengan menggunakan 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 digunakan untuk mengalihkan ke halaman data_karyawan.php setelah menambahkan data karyawan baru berhasil dilaksanakan.

SCRIPT GANTI PASSWORD ADMINISTRATOR


Untuk mengantisipasi penyalahgunaan password administrator oleh orang yang tidak berhak, maka password harus sering diganti secara berkala. Dengan melakukan penggantian password secara berkala ini dapat mengantisipasi kebocoran password oleh orang lain. Untuk mengganti password administrator, Anda harus membuka halaman administrator terlebih dahulu. Pada halaman ini akan ditampilkan sebuah formulir untuk mengisikan password baru. Berikut adalah tampilan formulir ganti password pada halaman administrator:

Gambar 9.10 Formulir untuk ganti password administrator.

Untuk mengganti password dan userid baru, masukkan userid baru dan password baru kemudian tekan tombol UBAH pada bagian bawah formulir. Data userid dan password baru ini akan dikirim ke script yang ada di dalam file ubah_password.php. Berikut adalah script yang 266

Bab 9

Script Halaman Administrator

berfungsi untuk mengganti data userid dan password baru dalam file ubah_password.php tersebut:
<? include"../cek.php"; include"../sambung.php"; $edit=mysql_query("update admin set user='$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=0 MARGINWIDTH=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=158 ALT=\"\"></TD> </TR> <TR> <TD> <table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" background=\"../images/tkm_02.gif\" id=\"table1\"> <tr>

267

Script Halaman Administrator

Bab 9

margin-bottom: 3px\">

<td width=\"12\">&nbsp;</td> <td valign=\"top\"> <p align=\"center\">&nbsp;</p> <p align=\"center\" style=\"margin-top: 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 sesi dengan memanggil file cek.php, kemudian melakukan koneksi dengan 268

Bab 9

Script Halaman Administrator

database admin dengan memanfaatkan file sambung.php. Script berikutnya adalah menggunakan perintah query yaitu:
edit=mysql_query("update admin set user='$user_baru',password='$password_baru' where id='1'");

Fungsinya adalah mengganti data user dan password dengan data yang baru dari formulir ganti password. Setelah data user dan password diganti kemudian ditampilkan sebuah komentar bahwa data user dan password telah diganti menggunakan tag-tag html di akhir script ini. Berikut adalah tampilan halaman yang menyatakan data user dan password telah sukses diubah:

Gambar 9.11 Konfirmasi Ganti password telah sukses diganti.

269

Vous aimerez peut-être aussi