Membuat database karyawan dengan php dan mysql

Baru-baru ini saya telah menyelesaikan sebuah aplikasi database pegawai sederhana dengan menggunakan beberapa bahasa pemrograman seperti PHP, MySQL, CSS, dan JavaScript. Aplikasi ini menitikberatkan kepada implementasi PHP dan MySQL dalam pengembangan aplikasi dinamis dan interaktif yang dalam hal ini adalah pengolahan data pegawai yang meliputi aktivitas penambahan data pegawai, ubah data, menghapus data serta menampilkan data pegawai.

Untuk menunjang proses pengembangan telah dikembangkan beberapa fungsi-fungsi buatan yang bertujuan untuk mempermudah dan mempercepat proses penulisan kode program.

Berikut adalah beberapa tampilan screenshotnya:


Dan beberapa fitur lainnya yang sengaja tidak ditampilkan di halaman ini.

Sedangkan untuk struktur tablenya, dapat dilihat sebagai berikut:

CREATE TABLE IF NOT EXISTS `pegawai` (
  `pegawai_id` int(11) NOT NULL AUTO_INCREMENT,
  `kode` varchar(10) NOT NULL,
  `nama` varchar(50) NOT NULL,
  `alamat` varchar(100) NOT NULL,
  `gaji` double NOT NULL,
  `sex` varchar(30) NOT NULL,
  `status` varchar(30) NOT NULL,
  `jabatan` varchar(40) NOT NULL,
  `photo` varchar(50) NOT NULL,
  `tanggal_gabung` int(11) NOT NULL,
  PRIMARY KEY (`pegawai_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

Kemudian buat sebuah file bernama config.php yang berfungsi untuk mengatur konfigurasi awal website sebagai berikut:

Dan file utama yaitu index.php yang berfungsi sebagai tempat untuk melakukan interaksi antara user dengan program kita yaitu sebagai berikut:








<?php echo NAME; ?>






Menu Utama

\n"; echo "

APLIKASI DATABASE PEGAWAI SEDERHANA

"; echo "

Selamat datang di Aplikasi Database Pegawai Sederhana.

"; echo "

Aplikasi ini sengaja dikembangkan dengan harapan dapat memberikan gambaran dan inspirasi bagi mereka yang ingin membuat aplikasi dinamis dengan menggunakan PHP dan MySQL. Aplikasi ini murni menggunakan pemrograman dasar HTML, CSS, PHP dan MySQL serta sedikit bumbu bahasa JavaScript agar interaksi pengguna dengan aplikasi terasa lebih mantap.

"; echo "

Dalam aplikasi telah dikembangkan beberapa fungsi-fungsi buatan yang bertujuan untuk membantu proses pengolahan data dan juga untuk mempercepat proses penulisan kode program.

"; echo "

Secara umum, applikasi ini masih tergolong sangat sederhana dan tidak membutuhkan tenaga ekstra untuk mempelajarinya. Anda hanya perlu memahami sedikit tentang HTML dan CSS untuk mengatur layout maupun tata letak dari setiap komponen website serta pemahaman mendasar tentang PHP dan MySQL.

"; echo "

Akhirnya, segala kritik dan saran yang membangun sangat dibutuhkan agar ke depannya dapat lebih bermamfaat dan semakin antusias dalam mengembangkan aplikasi berbasis PHP dan MySQL.

"; echo "

All Rights Reserved | Copyrights ™ - ".date("Y")." | View more on: Blizze@Wordpress

"; echo "
\n"; } ?>

Berikut ini adalah jantung dari program kita kali ini yang bernama function.php yang berfungsi untuk mengontrol seluruh aktivitas di dalam aplikasi pegawai tersebut:

', $salah );
	}
	
	# jika terjadi kesalahan kirimkan ke halaman semula sebaliknya kirimkan ke daftar pegawai
	if( count( $salah ) ) {
		header( "Location: ".URL."/?option=tambah-pegawai" );
	} else {
		header( "Location: ".URL."/?option=data-pegawai" );
	}
	exit;
} /* Akhir dari fungsi menyimpan data pegawai baru */

# Fungsi untuk mengubah data pegawai
function update_data_pegawai() {
	# tampung data kesalahan
	$salah = array();	
	$dir = "photo";	
	# tangkap data-data yang dimasukkan dari form
	$nama = bersihkan( $_POST['nama'] );
	$alamat = bersihkan( $_POST['alamat'] );
	$gaji = bersihkan( $_POST['gaji'] );
	$kode = bersihkan( $_POST['kode'] );
	$sex = $_POST['sex'];
	$status = $_POST['status'];
	$jabatan = $_POST['jabatan'];
	$filename = $_FILES['photo']['name'];
	$tmp_name = $_FILES['photo']['tmp_name'];
	$filesize = $_FILES['photo']['size'];
	$filetype = $_FILES['photo']['type'];	
	$image_name = strtolower(str_replace(' ', '-', $filename));
	$image_ext = substr($image_name, strrpos($image_name, '.'));
	$image_ext = str_replace('.', '', $image_ext);
	$image_name = preg_replace("/\.[^.\s]{3,4}$/", "", $image_name);
	$new_image_name = $kode.'.'.$image_ext;
	# validasi data lalu simpan data kesalahan dlm bentuk array, jika ada
	if( empty( $nama ) ) {
		$salah[] = '- Pasti Anda manusia dan punya nama, yang benar aja...';
	}
	if( empty( $alamat ) ) {
		$salah[] = '- Masa ga punya tempat tinggal, isi dulu donk...';
	}
	if( empty( $gaji ) ) {
		$salah[] = '- Emang lu kerja ga mau dibayar, isi besar gajilah...';
	}
	if( empty( $kode ) ) {
		$salah[] = '- Isi kode biar Anda nampak unik dan antik coy...';
	}
	# jika tidak ada kesalahan
	if( !count( $salah ) ) {		
		$sql = uraikan(hajar_coy("SELECT * FROM pegawai WHERE kode='{$kode}'"));
		$sex = ($sex != '') ? $sex : $sql['sex'];
		$jabatan = ($jabatan != '') ? $jabatan : $sql['jabatan'];
		$status = ($status != '') ? $status : $sql['status'];
		$new_image_name = ($filename != '') ? $new_image_name : $sql['photo'];
		hajar_coy( "UPDATE pegawai SET kode='$kode', nama='$nama', alamat='$alamat', gaji='$gaji', sex='$sex', status='$status', jabatan='$jabatan', photo='$new_image_name' WHERE kode='$kode'" );
		move_uploaded_file($_FILES['photo']['tmp_name'], $dir . "/" . $new_image_name);
	}
	# jika ada kesalahan simpan aja di dalam session
	if( count( $salah ) ) {
		$_SESSION['pesan']['kesalahan-ubah-data'] = implode( '
', $salah ); } # jika terjadi kesalahan kirimkan ke halaman semula sebaliknya kirimkan ke daftar pegawai if( count( $salah ) ) { header( "Location: ".URL."/?option=edit-pegawai&kode=$kopeg" ); } else { header( "Location: ".URL."/?option=data-pegawai" ); } exit; } /* Akhir dari fungsi menyimpan data pegawai baru */ # FUngsi untuk menghapus data pegawai function hapus_data_pegawai() { $dir = "photo"; $kode = isset( $_GET['kode'] ) ? $_GET['kode'] : ''; $sql = uraikan(hajar_coy("SELECT * FROM pegawai WHERE kode='{$kode}'")); $ext = substr($sql['photo'], strrpos($sql['photo'], '.')); $ext = str_replace('.', '', $ext); if(file_exists("{$dir}/{$kode}.{$ext}")){ unlink("{$dir}/{$kode}.{$ext}"); } hajar_coy( "DELETE FROM pegawai WHERE kode='$kode'" ); header( "Location: ".URL."/?option=data-pegawai" ); exit; } # Fungsi untuk mencari kode pegawia terbesar dari table pegawai function cari_terbesar( $kode ) { $query = uraikan( hajar_coy( "SELECT MAX(kode) AS terbesar FROM pegawai" ) ); $kode = $query['terbesar']; if( $kode ) { $terbesar = substr( $query['terbesar'], 0, 7 ); $terbesar++; } else { $terbesar = 'PEG0001'; } return $terbesar; } # Fungsi untuk memformat nilai angka ke dalam rupiah function ubah_ke_rupiah( $id ) { return number_format( $id, 0, ", ", "." ); } # Fungsi untuk membuat form tambah pegawai dengan fungsi-fungsi buatan function tambah_data_pegawai() { echo "
\n"; echo "

TAMBAH DATA PEGAWAI

"; # cek jika ada terjadi kesalahan selama penambahan data if( isset( $_SESSION['pesan']['kesalahan-tambah-data'] ) ) { echo "

Pesan Kesalahan :
".$_SESSION['pesan']['kesalahan-tambah-data']."

"; unset( $_SESSION['pesan']['kesalahan-tambah-data'] ); } $kode = cari_terbesar('kode'); echo "
\n"; echo " Kode Pegawai:

\n"; echo " Nama Pegawai:

\n"; echo " Alamat Pegawai:

\n"; echo " Gaji Utama Pegawai:

\n"; echo " Jenis Kelamin:

\n"; echo " Status Menikah:

\n"; echo " Jabatan:

\n"; echo " Photo Karyawan:  

\n"; echo "
\n"; echo "
\n"; echo "
\n"; } # Fungsi untuk mengubah data pegawai function ubah_data_pegawai() { $kode = isset( $_GET['kode'] ) ? $_GET['kode'] : ''; $sql = uraikan( hajar_coy( "SELECT * FROM pegawai WHERE kode='$kode'" ) ); echo "
\n"; echo "

Ubah Data Pegawai

"; if( isset( $_SESSION['pesan']['kesalahan-ubah-data'] ) ) { echo "

Pesan Kesalahan :
".$_SESSION['pesan']['kesalahan-ubah-data']."

"; unset( $_SESSION['pesan']['kesalahan-ubah-data'] ); } echo "
\n"; echo " Kode Pegawai:

\n"; echo " Nama Pegawai:

\n"; echo " Alamat Pegawai:

\n"; echo " Gaji Utama Pegawai:

\n"; echo " Jenis Kelamin:

\n"; echo " Status Menikah:

\n"; echo " Jabatan:

\n"; echo "
\n"; echo "
\n"; if(file_exists("photo/{$sql['photo']}")){ $photo = "\"{$sql['photo']}\""; } else { $photo = ""; } echo " {$photo}\n"; echo "
\n"; echo "
Photo Karyawan:
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; } # Fungsi untuk menampilkan daftar pegawai function tampilkan_pegawai() { $jumlah_data_per_halaman = 7; if(isset($_GET['page'])){ $nomor_halaman = $_GET['page'];} else { $nomor_halaman = 1; } $offset = ($nomor_halaman - 1) * $jumlah_data_per_halaman; $sql = hajar_coy( "SELECT * FROM pegawai ORDER BY kode ASC LIMIT $offset,$jumlah_data_per_halaman" ); $jumlah_data_pegawai = itung_jumlahnya(hajar_coy("SELECT * FROM pegawai")); echo "
\n"; echo "

Daftar Pegawai

"; echo ""; echo ""; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo ""; if( itung_jumlahnya( $sql ) == 0 ) { echo ""; echo " "; echo ""; } else { $a = 0; while( $row = uraikan( $sql ) ) { if( $a == 0 ) { $bg = "#FCFADE"; $a = 1; } else{ $bg = "#FCF7AB"; $a = 0; } if(file_exists("photo/{$row['photo']}")){ $photo = "\"{$row['photo']}\""; } else { $photo = ""; } echo ""; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo ""; } } echo "
PhotoNamaAlamatGaji UtamaStatusJabatanSexAksi
Belum ada data pegawai saat ini. Silahkan segera update database ppegawai ini.
Klik disini untuk menambah data pegawai
{$photo}Kode: {$row['kode']}
{$row['nama']}
{$row['alamat']}Rp ".ubah_ke_rupiah( $row['gaji'] )."{$row['status']}{$row['jabatan']}{$row['sex']}\"\"  
"; $jumlah_data = uraikan( hajar_coy("SELECT COUNT(*) AS jumlah FROM pegawai") ); $total_halaman = ceil($jumlah_data['jumlah'] / $jumlah_data_per_halaman); echo "

\n"; echo "Halaman:   "; $showpage = 0; if($nomor_halaman > 1){ echo "← Prev\n"; } for($page = 1; $page <= $total_halaman; $page++){ if((($page >= $nomor_halaman - 3) && ($page <= $nomor_halaman + 3)) || ($page == 1) || ($page == $total_halaman)){ if(($showpage == 1) && ($page != 2)) echo "..."; if(($showpage != ($total_halaman-1)) && ($page == $total_halaman)) echo "..."; if($page == $nomor_halaman) echo "{$page}"; else echo "{$page}"; $showpage = $page; } } if($nomor_halaman < $total_halaman){ echo "→ Next\n"; } echo "

\n"; echo "
\n"; } function detail_pegawai($kode){ $sql = uraikan(hajar_coy("SELECT * FROM pegawai WHERE kode='{$kode}'")); echo "
\n"; echo "

Pegawai: {$sql['nama']} - {$sql['kode']}

\n"; echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
Nama Lengkap :   {$sql['nama']}
Kode Pegawai :   {$sql['kode']}
Alamat Lengkap :   {$sql['alamat']}
Gaji Utama :   Rp ".ubah_ke_rupiah( $sql['gaji'] )."
Jenis Kelamin :   {$sql['sex']}
Jabatan :   {$sql['jabatan']}
Status Pernikahan :   {$sql['status']}
\n"; echo "
\n"; echo "
\n"; if(file_exists("photo/{$sql['photo']}")){ $photo = "\"{$sql['photo']}\""; } else { $photo = ""; } echo "{$photo}"; echo "
\n"; echo "
\n"; echo "
\n"; } ?>

Dan yang terakhir adalah file gaya.css untuk mengatur bentuk serta sususan dan tata letak aplikasi:

@font-face {
font-family: 'Droid Sans';
font-style: normal;
font-weight: normal;
src: local('myfont/Droid Sans'), url('myfont/DroidSans.woff') format('woff');
}


/* GAYA PEGAWAI */
*{ margin: 0; padding: 0; }
body{ font-family:'Droid Sans', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.5em; background: #FFFFFF; color: #222;}
a{ color: #2ABFFF; text-decoration: none; transition: .3s ease-in-out; }
a:hover{ color: #D40000; text-decoration: none; }
img{ margin: 0; padding: 0; border: none; }
form{ margin: 10px 0; padding:10px 40px;  }
input[type=text],select{ margin: 2px 0 10px 0; padding: 8px 0 8px 40px; width:50%; font-size: 14px; font-family:'Droid Sans', Arial, Helvetica, sans-serif; border: 1px solid #E6E6E6; border-radius:3px; transition:all 0.4s ease-out; background:url('icon.png') no-repeat 2% 8px; }
input[type=text]:focus{ border:1px solid #989898; box-shadow:0px 0px 3px 0px #8BCFED; border:1px solid #55A4C6; }
input[type="submit"] {
	background-color:#3bb3e0;
	padding:7px 20px;
	margin:10px 0 0 0;
	position:relative;
	font-weight:bold; font-family:'Droid Sans';
	color:#fff;
	border: solid 1px #186f8f;
	text-shadow:0px 1px 0px #000;
	background-image: linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
	background-image: -o-linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
	background-image: -moz-linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
	background-image: -webkit-linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
	background-image: -ms-linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229) 100%);
	background-image: -webkit-gradient(
	linear,
	left bottom,
	left top,
	color-stop(0, rgb(44,160,202)),
	color-stop(1, rgb(62,184,229))
	);
	-webkit-box-shadow: inset 0px 1px 0px #7fd2f1, 0px 1px 0px #fff;
	-moz-box-shadow: inset 0px 1px 0px #7fd2f1, 0px 1px 0px #fff;
	box-shadow: inset 0px 1px 0px #7fd2f1, 0px 1px 0px #fff;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	-o-border-radius: 5px;
	border-radius: 5px;
	cursor:pointer;
}
ol,ul{ margin: 0; padding: 0; list-style-type: none; }
table{ margin: 10px 0; padding: 0; border-collapse: collapse; width: 100%; border:none;}
tr{ text-align: left; height: 55px; }
tr.top_tr{ height: 40px; font-weight: bold; background: #0677A8; color:#FFFFFF; }
td{ margin: 0; padding-left: 5px; text-align:left; }
p{ margin: 0; padding: 10px 0; text-align: justify; }
p.err{ margin: 10px 0; padding: 10px; color: #FF0000; border: 1px solid #FF3F00; background: #FFFFFF; border-radius:5px;}
p.footer{ margin: 10px 0; padding: 3px 7px; font-size: 11px; border: 1px solid #D2D2D2; box-shadow: 0px 1px 0px #fff; }
img.img{ margin: 0; padding: 5px 15px 5px 0; }

.atas{ width:100%; background:#0A61AD; height:50px; position:fixed; top:0; left:0; box-shadow:0px 0px 5px #72777B; }
.logo{ line-height:50px; font-size:25px; text-transform:uppercase; color:#FFFFFF; padding-left:70px; }

.bungkus{ margin: 50px auto; padding: 0; width: 90%; }
.clear{ clear:both; }
.kiri{ float:left; width:15%; position:fixed; height:101%; background:#DD9906; }
.kanan{ float:right; width:81%; }

.box{ margin:0 0 20px 0; }
.box h1{ padding:10px 0 10px 30px; border-bottom:1px dotted #B5B5B5; font-size:20px; font-weight:normal; color:#666600; background:url('b_comment.png') no-repeat 0% 14px; }
.box #urut{ margin:10px 0; }
.box #urut li{ line-height:40px; }
.box #urut li a{ display:block; border-left:5px solid #CCFFCC; padding:0 0 0 20px; position:relative; background:#0C96C9; color:#FFFFFF; }
.box #urut li a:hover, .box #urut li a.active{ border-left:5px solid #BC1479; padding:0 0 0 35px; color:#FFFFFF; background:#06739B; }
.box #urut li a.active::before{ content:''; position:absolute; height:0; width:0; top:27%; right:0; border-bottom: 10px solid transparent; border-top: 10px solid transparent;	border-right: 10px solid #FFFFFF; font-size: 0; line-height: 0; }

.photo{ margin:0; padding:0; border:none; width:35px; height:35px; border-radius:3px; }

.paging{ margin:10px 0; }
.current{ padding:5px 10px; background:#000000; color:#FFFFFF; border-radius:3px; margin:0 5px 0 0; }
.paging a{ padding:5px 10px; background:#4176D8; color:#FFFFFF; border-radius:3px; margin:0 5px; }
.paging a:hover{ background:#2E5CB2; }

.edit_photo_box{ margin:10px 0; }
.photo_box{ float:left; width:60px; }
.photo_box img{ width:50px; height:50px; border:none; }
.photo_input{ float:left; width:500px; }

.box_info{ float:left; width:50%; margin:20px 0; }
table.tinfo{ width:100%; margin:0; }
table.tinfo tr{ height:40px; }
table.tinfo tr.t{ background:#F7F6EF; }
table.tinfo tr.b{ background:#E0F3FC; }

.box_photo{ float:right; width:40%; margin:20px 0; }
.box_photo img{ border:none; width:300px; height:280px; border-radius:10px; }

Jika Anda merasa malas dan kesulitan untuk mempelajari script di atas silahkan download filenya dib awah ini:

Download file latihan program pegawai dengan PHP dan MySQL

Akhirnya, program ini tentunya masih jauh dari kata sempurna namun tentu tidak akan mengurangi niat baik saya untuk saling berbagai pengalaman sehingga yang belum pernah mencobanya dapat memiliki pengalaman tersendiri dengan adanya tutorial ini. Semoga membantu.