WEB
Membuat Aplikasi Perpustakaan
Muharir, M.Kom
Fakultas Teknologi Informasi UNISKA
1
Daftar Isi
Membuat Web Dengan Bahasa PHP ..................................................................................................... 4
Apa itu PHP ?....................................................................................................................................... 4
Variabel PHP........................................................................................................................................ 5
Conditional Statement ........................................................................................................................ 5
IF Statement .................................................................................................................................... 5
Switch Statement ............................................................................................................................ 6
Perulangan .......................................................................................................................................... 7
while loops ...................................................................................................................................... 7
Do ... While Loops ........................................................................................................................... 7
For Loops ......................................................................................................................................... 8
Foreach ........................................................................................................................................... 8
Function .............................................................................................................................................. 9
Cookie ............................................................................................................................................... 10
Session .............................................................................................................................................. 11
Sesi 1 : Menyiapkan Database, Login Form dan Templating .............................................................. 13
Struktur table .................................................................................................................................... 13
Membuat Koneksi Database ............................................................................................................. 14
Membuat Login Aplikasi.................................................................................................................... 15
Membuat Login Form ....................................................................................................................... 16
Memasang Template Admin LTE ...................................................................................................... 22
Sesi 2 : Membuat CRUD User ............................................................................................................... 41
Membuat Form Input User, Image Upload, dan Detail User ............................................................ 41
Menambahkan List User dan Pagination Data.................................................................................. 49
Mengedit User .................................................................................................................................. 53
Hapus User ........................................................................................................................................ 58
Sesi 3 : Membuat Validasi, Report Anggota dan CRUD. ..................................................................... 60
Membuat Tambah Anggota .............................................................................................................. 61
Membuat Detail Anggota.................................................................................................................. 66
Membuat Edit Anggota ..................................................................................................................... 68
Membuat Halaman List Anggota ...................................................................................................... 73
Membuat Hapus Anggota ................................................................................................................. 75
Membuat Laporan Anggota .............................................................................................................. 76
2
Sesi 4 : CRUD Buku dan Print Mode Lanscape..................................................................................... 77
Membuat Tambah Buku ................................................................................................................... 77
Membuat Halaman Detail Buku ........................................................................................................ 83
Membuat Edit Buku .......................................................................................................................... 86
Membuat Halaman List Buku ............................................................................................................ 91
Membuat Hapus Buku ...................................................................................................................... 94
Membuat Laporan Buku Lanscape ................................................................................................... 94
Membuat Pencarian Buku ................................................................................................................ 96
Memperbaiki tampilan profile foto pada aplikasi ................................................................................ 99
DAFTAR PUSTAKA............................................................................................................................... 101
3
Membuat Web Dengan Bahasa PHP
Pada modul ini kita akan membuat aplikasi Siperpus yang dibuat dengan menggunakan bahasa
pemrograman PHP dan Mysqli Extension. Pada awal materi saya mengingatkan anda kembali
mengenai fungsi php, pembuatan variabel, percabangan, perulangan, session dan cookie yang wajib
anda pahami. Ingat “menulis kode berbeda dengan menulis essay” saat menulis kode anda dituntut
memahami maksudnya dan juga fungsinya. Koding tidak perlu di hafal yang paling penting adalah
dipahami maksud, konsep, dan tujuannya.
File PHP berisi text, HTML, CSS, Javascript, dan Kode PHP. Kode PHP dieksekusi di bagian server dan
dikembalikan ke browser sebagai text HTML. File PHP berekstensi .php .
Belajar1.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Belajar PHP</title>
</head>
<body>
<h1>Selamat Belajar PHP Ya</h1>
<?php
echo "<p>Hello World, I'am PHP</P>";
?>
</body>
</html>
Jika dijalankan pada browser maka akan menghasilkan tampilan seperti berikut
4
Variabel PHP
Variabel adalah tempat untuk menyimpan informasi pada program. Cara penulisan variabel pada
php adalah sebagai berikut :
<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>
Conditional Statement
IF Statement
Digunakan untuk mengatur kapan sebuah kode program akan dijalankan. Contoh :
belajarkondisi.php
<?php
$hari = "Rabu";
if ($hari == "Kamis") {
echo "Ini hari kamis";
}else{
echo "Ini Hari Rabu";
}
?>
Jika dijalankan maka akan menampilkan “ini hari rabu”. Karena kondisi hari kamis tidak terpenuhi
maka baris “Ini hari kamis” tidak dijalankan. Dan akan mengeksekusi kode pada blok else.
5
<?php
$hari = "Rabu";
$cekhari = ($hari == "Kamis") ? "Ini hari Kamis" : "Ini Hari Rabu";
echo $cekhari;
?>
Hasil dari eksekusi programnya sama saja,.
Jika kondisi yang di cek lebih dari 2 maka anda bisa menggunakan elseif :
belajarkondisi2.php
<?php
$hari = "Rabu";
if ($hari == "Kamis") {
echo "Ini hari kamis";
}elseif($hari == "jumat") {
echo "Ini Hari Jumat";
}else{
echo "Ini Hari rabu";
}
?>
Switch Statement
Struktur logika switch adalah sebuah struktur percabangan yang akan memeriksa satu variabel, lalu
menjalankan perintah sesuai dengan kondisi. Bentuk umumnya adalah.
switch (variable) {
case 'value':
# code...
break;
default:
# code...
break;
}
Contoh :
Belajarswitch.php
<?php
$hari = 'rabu';
switch ($hari) {
case 'rabu':
echo "Ini hari rabu";
break;
case 'kamis':
echo "Ini hari kamis";
6
break;
default:
echo "Hari Tidak Ketemu";
break;
}
?>
Jika dijalankan maka akan menampilkan tulisan “Ini Hari Rabu”.
Perulangan
Perulangan adalah metode yang digunakan pada hampir setiap bahasa pemrograman untuk
mengulang sebuah proses atau menampilkan hasil yang sama sebanyak n pada program. Kita tidak
perlu menambahkan baris kode yang sama cukup dengan menggunakan perulangan.
while loops
Bentuk umum dari while adalah :
while (kondisi benar) {
kode yang akan dijalankan;
}
Contoh :
belajarwhile.php
<?php
$x = 1;
while($x <= 5) {
echo "Nomor sekarang adalah : $x <br>";
$x++;
}
?>
Karena nilai x benar kurang dari sama dengan 5, maka kode blok program selanjutnya akan
dijalankan.
Contoh :
7
belajardowhile.php
<?php
$x = 1;
do {
echo "Nomor Sekarang adalah : $x <br>";
$x++;
} while ($x <= 5);
?>
Jika dijalankan maka akan menghasilkan perulangan dari 1 sampai dengan 5.
Sekarang coba anda ubah nilai pada variabel x menjadi 7 apakah yang akan terjadi ?
Ya benar “Nomor Sekarang adalah : 7” inilah yang membedakan antara while dan do...while, pada do...while
penyataan di eksekusi terlebih dahulu sebelum di cek. Sehingga mengakibatkan do..while mengeksekusi paling
tidak 1 kali bahkan jika kondisinya salah saat pertama kali.
For Loops
Bentuk umum dari perulangan for adalah seperti berikut :
for (start; condition; increment) {
code to be executed;
}
Contoh pada program :
Belajarfor.php
<?php
$x = 5;
Foreach
Struktur perulangan foreach adalah perulangan khusus yang digunakan untuk menangani data array.
Contoh :
For Foreach
<?php <?php
8
$nama = array("Muharir", "Yogi", $nama = array("Muharir", "Yogi",
"Ali","Eka","Hatimi"); "Ali","Eka","Hatimi");
Function
Selain fungsi bawaan PHP, kita bisa membuat fungsi sendiri.
- Fungsi adalah blok pernyataan yang bisa digunakan berulang kali dalam sebuah program.
- Sebuah fungsi tidak akan langsung dijalankan saat sebauh halaman di load.
- Sebuah fungsi akan dieksekusi jika fungsi tersebut dipanggil.
function functionName() {
code to be executed;
}
?>
Contoh :
belajarfunction.php
<?php
function manusia($nama, $umur)
{
echo "Hallo ".$nama." umur kamu adalah ".$umur." tahun";
}
//panggil functionnya
manusia("Muharir",23);
?>
Jika dijalankan pada browser akan tampil seperti berikut :
belajarfunction2.php
9
<?php
$hitung = jumlah(5,7);
echo "hasil penjumlahannya adalah : ".$hitung;
?>
Jika dijalankan :
Cookie
Cookie dan session adalah data atau informasi yang diciptakan oleh suatu website untuk disimpan di
web browser. Ketika user sedang menjelajahi web tersebut. Yang paling umum kita jumpai adalah
cookie digunakan untuk menyimpan username dan passowrd login agar pengguna tidak selalu harus
mengisikannya pada saat membuka page (halaman web). Biasanya web menyediakan checkbox
“remember me” atau “Ingat saya selalu” yangterdapat pada bagian box login. Mari kita coba
praktikan :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>belajar Cookie</title>
</head>
<body>
<?php
if (isset($_COOKIE["nama"])) {
echo "Isi dari cookie 'nama' adalah : ".$_COOKIE['nama'];
}else{
setcookie("nama", "Muharir");
echo "Cookie berhasil dibuat, please refresh browser";
}
?>
</body>
</html>
10
Dan jika anda menggunakan browser chrome bisa ke Setting -> Advance Setting -> Privasi ->
Content Setting akan terlihat Cookie yg kita simpan dengan nama = nama.
Session
Session adalah salah saty fasilitas yang ada pada php untuk menyimpan data sementara ke dalam
variabel (session variable) sehingga data tadi dapat diakses oleh client selama variabel session tidak
dikosongkan atau dihilangkan. Yang membedakan dengan cookie adalah cookie disimpan pada web
browser sedangkan session disimpan di sisi server (web server).
Contoh :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>belajar Cookie</title>
</head>
<body>
<?php
session_start();
$_SESSION["nama"] = "Muharir";
$_SESSION["alamat"] = "Sungai tabuk";
11
}else{
echo "<h1>".$_SESSION["nama"]. "<br>".$_SESSION["alamat"];
}
?>
</body>
</html>
12
Sesi 1 : Menyiapkan Database, Login Form dan Templating
Struktur table
1. table user (tb_user)
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(70) NOT NULL,
`foto` varchar(100) DEFAULT NULL,
`level` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
13
4. Table transaksi (tb_transaksi)
DROP TABLE IF EXISTS `tbl_transaksi`;
CREATE TABLE `tbl_transaksi` (
`id` int(5) NOT NULL,
`anggota_id` int(11) DEFAULT NULL,
`buku_id` int(11) DEFAULT NULL,
`tgl_pinjam` varchar(15) NOT NULL,
`tgl_kembali` varchar(15) NOT NULL,
`status` varchar(10) NOT NULL,
`ket` varchar(250) NOT NULL,
PRIMARY KEY (`id`),
KEY `anggota_id` (`anggota_id`),
KEY `buku_id` (`buku_id`),
CONSTRAINT `tbl_transaksi_ibfk_2` FOREIGN KEY (`anggota_id`) REFERENCES
`tb_anggota` (`id`) ON UPDATE CASCADE,
CONSTRAINT `tbl_transaksi_ibfk_3` FOREIGN KEY (`buku_id`) REFERENCES
`tb_buku` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Sistem ini kita buat seminimal mungkin, kedepan anda bisa mengembangkannya sesuai
kebutuhan. Sistem ini merangkum semua pelajaran yang sudah kita pelajari di bab
sebelumnya.
Jika dilihat relasi antar table maka seperti berikut :
14
koneksi.php
<?php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "perpusku";
if (!$link) {
die("Gagal Terkoneksi".mysqli_connect_errno()." - ".
mysqli_connect_error());
exit();
}
?>
Pada coding diatas kita membuat 4 variabel $db_host, $db_user, $db_password, $db_name
yang masing-masing variabel menyimpan nilai yang kita perlukan untuk menghubungkan
aplikasi kita dengan database.
Variabel $link meyimpan hasil dari metode mysqli_connect yang digunakan untuk membuka
koneksi ke mysql server. Setelah itu variabel $link di cek menggunakan percabangan IF
Negasi. Masih ingatkan negasi atau ingkaran . Jika kondisinya tidak true (false) maka akan
menampilkan error “Gagal Terkoneksi dan menampilkan errornya dengan perintah
mysqli_connect_errorno() dan mysqli_connect_error().
mysqli_connect() mempunyai nilai kembalian boolean (true dan false) jika berhasil
konek maka akan bernilai true jika gagal akan bernilai false.
mysqli_connect_errorno() dan mysqli_connect_error adalah 2 fungsi yang
digunakan untuk menampilkan error jika koneksi gagal. Perbedaannya adalah jika
errorno menampilkan 4 digit angka kode error mysql sedangkan mysqli_
connect_error menampilkan pesan errornya. Gitu
15
$query = mysqli_query($link, "SELECT * FROM tb_user WHERE
username='$user' AND password='$pass'");
$data = mysqli_fetch_array($query);
$username = $data['username'];
$password = $data['password'];
$level = $data['level'];
16
Buka Admin LTE dan cari Pages -> Example -> login.html
Buat file baru pada folder perpusku dan simpan dengan nama login.php dan copykan semua
kode yang ada pada login.html ke login.php. Edit file login.php dan buang beberapa
komponen yang tidak penting seperti social media link dan sesuaikan css, javascript, dan icon,
sehingga akan mengasilkan kode seperti berikut.
url browser localhost/perpusku/login.php
17
login.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>PERPUS | Log in</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 3.3.6 -->
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/font-awesome.min.css">
<link rel="stylesheet" href="assets/css/AdminLTE.min.css">
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<a href="#"><b>PERPUS</b>UNISKA</a>
</div>
<!-- /.login-logo -->
<div class="login-box-body">
<p class="login-box-msg">Sign in to start your session</p>
18
<input type="password" class="form-control" name="password" placeholder="Password" required>
<span class="glyphicon fa fa-key form-control-feedback" aria-hidden="true">
</div>
<div class="row">
<div class="col-xs-8">
</div>
<!-- /.col -->
<div class="col-xs-4">
<button type="submit" name="log" class="btn btn-primary btn-block btn-flat">Login</button>
</div>
<!-- /.col -->
</div>
</form>
</div>
<!-- /.login-box-body -->
</div>
<!-- /.login-box -->
</body>
</html>
19
Perhatikan pada form tag <form action="db/cek_koneksi.php" method="POST"> terlihat bahwa properti action di isi dengan
file cek_koneksi.php yang sudah kita buat sebelumnya, intinya semua data yang kita inputkan pada username dan password akan di kirimkan
cek_koneksi.php lalu ditangkap inputannya dengan $_POST[‘nama inputan’] dan di cek seperti yang sudah saya tuliskan sebelumnya.
Sekarang anda bisa mencoba untuk login, tapi sebelumnya isikan recordnya di tb_user terlebih dahulu.
20
Saya memasukkan username : admin dan password : admin dengan enkripsi md5 pada
password.
Jika tampil alert “Anda Berhasil Login. Sebagai Admin”, bararti anda telah berhasil. Yeay
Jika anda klik oke. Maka akan muncul halaman Not Found.
Upsss kenapa bisa demikian ? Jika anda perhatikan si Mr. PHP sedang mencari file dengan
nama home.php yg berada pada folder admin/home.php wajar bukan jika Si Mr. PHP bingung
karena tidak menemukan folder dan file tersebut, karena kita memang belum membuatnya.
Hehe ...
Yuk kita buat dulu home.php dan simpan di folder admin.
home.php
<h1>Halo bro, you are so great !!!</h1>
Coba anda login kembali. Apa yang terjadi ?
Yups akan benar sudah tidak muncul Not Found dan berganti dengan :
21
Memasang Template Admin LTE
Kelihatannya desain yang kita buat kurang menarik, mari kita ambil halaman home.php dari file index.html yg ada pada Admin LTE. Dan Copy
semua isinya ke halaman home.php yg ada pada folder admin. Edit dan sesuaikan dengan CSS,JS, Icon Image dan yang lain seperti berikut :
22
home.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Perpustakaan | UNISKA</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 3.3.6 -->
<link rel="stylesheet" href="../assets/css/bootstrap.min.css">
<!-- font awesome -->
<link rel="stylesheet" href="../assets/css/font-awesome.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="../assets/css/AdminLTE.min.css">
<!-- AdminLTE Skins. Choose a skin from the css/skins
folder instead of downloading all of them to reduce the load. -->
<link rel="stylesheet" href="../assets/css/_all-skins.min.css">
<!-- Date Picker -->
<link rel="stylesheet" href="../assets/css/datepicker3.css">
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<header class="main-header">
<!-- Logo -->
<a href="#" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"><b>P</b>U</span>
23
<!-- logo for regular state and mobile devices -->
<span class="logo-lg"><b>PERPUS</b> UNISKA</span>
</a>
<!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top">
<!-- Sidebar toggle button-->
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<p>
Muharir - Web Developer
<small>Member since Nov. 2014</small>
</p>
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
24
<a href="#" class="btn btn-default btn-flat">Profile</a>
</div>
<div class="pull-right">
<a href="#" class="btn btn-default btn-flat">Sign out</a>
</div>
</li>
</ul>
</li>
<!-- Control Sidebar Toggle Button -->
<li>
<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
</li>
</ul>
</div>
</nav>
</header>
<!-- Left side column. contains the logo and sidebar -->
<aside class="main-sidebar">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
25
<ul class="treeview-menu">
<li class="active"><a href="index.html"><i class="fa fa-circle-o"></i> Data Anggota</a></li>
<li><a href="index2.html"><i class="fa fa-circle-o"></i> Data Buku</a></li>
<li><a href="index2.html"><i class="fa fa-circle-o"></i> Data Admin</a></li>
</ul>
</li>
<li>
<a href="pages/widgets.html">
<i class="fa fa-files-o"></i> <span>Transaksi</span>
<span class="pull-right-container">
<small class="label pull-right bg-green">new</small>
</span>
</a>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-pie-chart"></i>
<span>Laporan</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="pages/charts/chartjs.html"><i class="fa fa-circle-o"></i> Laporan Transaksi</a></li>
<li><a href="pages/charts/morris.html"><i class="fa fa-circle-o"></i> Laporan Anggota</a></li>
<li><a href="pages/charts/flot.html"><i class="fa fa-circle-o"></i> Laporan Data Buku</a></li>
<li><a href="pages/charts/inline.html"><i class="fa fa-circle-o"></i> Laporan Peminjaman</a></li>
<li><a href="pages/charts/inline.html"><i class="fa fa-circle-o"></i> Laporan Pengembalian</a></li>
</ul>
</li>
</ul>
</section>
26
<!-- /.sidebar -->
</aside>
<p>Buku</p>
</div>
<div class="icon">
<i class="ion ion-bag"></i>
27
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-green">
<div class="inner">
<h3>53<sup style="font-size: 20px">%</sup></h3>
<p>Transaksi</p>
</div>
<div class="icon">
<i class="ion ion-stats-bars"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-yellow">
<div class="inner">
<h3>44</h3>
<p>Anggota</p>
</div>
<div class="icon">
<i class="ion ion-person-add"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
28
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-red">
<div class="inner">
<h3>65</h3>
<p>Unique Visitors</p>
</div>
<div class="icon">
<i class="ion ion-pie-graph"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
</div>
<!-- </div>
<!-- /.row -->
</section>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b><a href="https://muharir.com">By : Muharir</a></b>
</div>
29
<strong>Copyright ©<a href="http://almsaeedstudio.com">FTI UNISKA @2017</a>.</strong> Built With <i
class="fa fa-heart" aria-hidden="true" style="color: red"></i> and <i class="fa fa-coffee" aria-hidden="true"
style="color: #7B3F00">Hot Chocolate</i>
</footer>
</div>
<!-- ./wrapper -->
30
Jika anda telah selesai mengeditnya seperti gambar diatas, maka sebenarnya kita sudah selesai. Tapi alangkah lebih praktisnya kita memisahkan halaman
menjadi beberapa bagian seperti : top_menu.php, sidebar.php, footer.php, dan dashboard.php Apakah mengharuskan untuk dipisahkan ? Tidak. Tujuan
memisahkan menjadi beberapa file adalah agar kita fokus mengedit bagian-bagian tertentu yang diperlukan. Misal anda hanya ingin mengedit pada bagian
footer, maka tidak perlu membuka kode yang banyak tadi hanya untuk mencari bagian footer sehingga kode menjadi lebih mudah di maintain. Gitu
Pada kode sebelumnya saya sudah menandai kode dengan cetak tebal dan font berukuran lebih besar daripada yang lain yaitu (14). Nah dengan adanya
tanda tandi saya harap anda tidak bingung memisahkannya.
</head>
31
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<header class="main-header">
<!-- Logo -->
<a href="#" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"><b>P</b>U</span>
<!-- logo for regular state and mobile devices -->
<span class="logo-lg"><b>PERPUS</b> UNISKA</span>
</a>
<!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top">
<!-- Sidebar toggle button-->
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
32
<p>
Muharir - Web Developer
<small>Member since Nov. 2014</small>
</p>
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="#" class="btn btn-default btn-flat">Profile</a>
</div>
<div class="pull-right">
<a href="#" class="btn btn-default btn-flat">Sign out</a>
</div>
</li>
</ul>
</li>
<!-- Control Sidebar Toggle Button -->
<li>
<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
</li>
</ul>
</div>
</nav>
</header>
33
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu">
<li class="header">MAIN NAVIGATION</li>
<li class="active treeview">
<a href="#">
<i class="fa fa-dashboard"></i> <span>Master Data</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li class="active"><a href="index.html"><i class="fa fa-circle-o"></i> Data Anggota</a></li>
<li><a href="index2.html"><i class="fa fa-circle-o"></i> Data Buku</a></li>
<li><a href="index2.html"><i class="fa fa-circle-o"></i> Data Admin</a></li>
</ul>
</li>
<li>
<a href="pages/widgets.html">
<i class="fa fa-files-o"></i> <span>Transaksi</span>
<span class="pull-right-container">
<small class="label pull-right bg-green">new</small>
</span>
</a>
</li>
<li class="treeview">
<a href="#">
<i class="fa fa-pie-chart"></i>
<span>Laporan</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
34
</a>
<ul class="treeview-menu">
<li><a href="pages/charts/chartjs.html"><i class="fa fa-circle-o"></i> Laporan Transaksi</a></li>
<li><a href="pages/charts/morris.html"><i class="fa fa-circle-o"></i> Laporan Anggota</a></li>
<li><a href="pages/charts/flot.html"><i class="fa fa-circle-o"></i> Laporan Data Buku</a></li>
<li><a href="pages/charts/inline.html"><i class="fa fa-circle-o"></i> Laporan Peminjaman</a></li>
<li><a href="pages/charts/inline.html"><i class="fa fa-circle-o"></i> Laporan Pengembalian</a></li>
</ul>
</li>
</ul>
</section>
<!-- /.sidebar -->
</aside>
Buat File baru untuk dashboard dan simpan pada folder admin.
dasboard.php
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
Dashboard
<small>Control panel</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Home</a></li>
<li class="active">Dashboard</li>
</ol>
</section>
35
<!-- Small boxes (Stat box) -->
<div class="row">
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-aqua">
<div class="inner">
<h3>150</h3>
<p>Buku</p>
</div>
<div class="icon">
<i class="ion ion-bag"></i>
</div>
<a href="?page=buku" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-green">
<div class="inner">
<h3>53<sup style="font-size: 20px">%</sup></h3>
<p>Transaksi</p>
</div>
<div class="icon">
<i class="ion ion-stats-bars"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
36
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-yellow">
<div class="inner">
<h3>44</h3>
<p>Anggota</p>
</div>
<div class="icon">
<i class="ion ion-person-add"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
<div class="col-lg-3 col-xs-6">
<!-- small box -->
<div class="small-box bg-red">
<div class="inner">
<h3>65</h3>
<p>Unique Visitors</p>
</div>
<div class="icon">
<i class="ion ion-pie-graph"></i>
</div>
<a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
</div>
</div>
<!-- ./col -->
</div>
<!-- </div>
37
<!-- /.row -->
</section>
<!-- /.content -->
</div>
38
</body>
</html>
Untuk home.php perubahan filenya menjadi seperti berikut,
home.php
<?php
include '../topmenu_template.php';
include '../sidebar_template.php';
include '../db/koneksi.php';
?>
<?php
error_reporting(0);
// membuat route
switch($_GET['page'])
{
default:
include "dashboard.php";
break;
}
?>
Baik simpan semua filenya dan jalankan lagi apakah tampilan homenya tetap sama ? Jika iya maka bisa dipastikan anda berhasil memisahkan
kesemua filenya. Sip
Buka localhost/perpusku/admin/home.php
39
Perhatikan pada home.php terlihat bahwa home.php menginclude semua file yang kita butuhkan seperti koneksi dan halaman sidebar, footer menu dan
yang lain, lalu pada bagian tengah terdapat percabangan menggunakan switch.
switch($_GET['page'])
{
default:
include "dashboard.php";
break;
}
Pada percabangan switch kita mengambil variabel page yang dikirim melalui url. Sedangkan error error_reporting(0); adalah sebuah metode
yang ada pada php untuk menyembunyikan error.
40
Sesi 2 : Membuat CRUD User
Membuat Form Input User, Image Upload, dan Detail User
Apa itu CRUD ? CRUD merupakan kependekan dari Create, Read, Update, Delete . Pada
Sistem Informasi pada umumnya tidak bisa lepas dari proses tersebut, dari melihat data,
mengedit menyimpan dan menghapus, pada form ini kita juga menggunakan validasi bawaan
dari html5. Mari kita mulai dari menyimpan data. Buat file baru dengan nama
tambah_user.php.
tambah_user.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Tambah User</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Tambah User</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Tambah Data User</h3>
</div>
41
<div class="alert alert-danger alert-dismissible">
<button class="close" type="button" data-dismiss="alert" aria-
hidden="true">×</button>
<h4><i class="icon fa fa-close">Gagal!</i></h4>
<div class="box-body">
<div class="col-md-10">
<label> Password </label>
<input type="password" class="form-control"
placeholder="password" name="password" required>
</div>
</div>
<div class="box-body">
<div class="col-md-10">
<label> Email</label>
<input type="email" class="form-control" placeholder="email"
name="email" required>
</div>
</div>
<div class="box-body">
<div class="col-md-10">
<label> Foto </label>
<input type="file" class="form-control" name="foto">
</div>
</div>
<div class="box-body">
<div class="col-md-10">
<label> Level </label>
<select name="level" class="form-control">
<option value=1>Admin</option>
42
<option value=2>User</option>
</select>
</div>
</div>
<div class="box-body">
<div class="box-footer">
<input type="submit" class="btn btn-primary" value="Simpan"
name="simpan">
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
Nah untuk mencobanya silahkan anda tambahkan script dibawah ini pada home.php tambahkan
yang dicetak tebal saja,
home.php
<?php
error_reporting(0);
// membuat route
switch($_GET['page'])
{
default:
include "dashboard.php";
break;
case "tambah_user";
include "tambah_user.php";
break;
case "simpan_user";
include "simpan_user.php";
break;
}
?>
43
Setelah ditambahkan buka url berikut untuk melihat hasilnya
http://localhost/perpusku/admin/?page=tambah_user
Form isian diatas belum berfungsi karena kita belum membuat file simpan_user.php yang berfungsi
untuk memproses inputan yang telah diisikan, buat file baru dengan nama simpan_user.php
simpan_user.php
<?php
include '../db/koneksi.php';
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$foto = $_POST['foto'];
$level = $_POST['level'];
$pass = md5($password);
if ($_POST['simpan']) {
$extensi_diperbolehkan = array('png','jpg','jpeg');
$nama = $_FILES['foto']['name'];
$x = explode('.', $nama);
$extensi = strtolower(end($x));
$ukuran = $_FILES['foto']['size'];
$file_tmp = $_FILES['foto']['tmp_name'];
44
if ($ukuran < 5000000000) {
move_uploaded_file($file_tmp, '../assets/image/'.$nama);
$query = mysqli_query($link, "INSERT INTO tb_user(username, password,
email, foto, level)
VALUES('$username','$pass','$email','$nama','$level')");
if (!$query) {
$isi = "Gagal Menambahkan Data dengan kesalahan =
".mysqli_errno($link). " - ".mysqli_error($link);
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_user.php?status=$isi'>";
}else{
$query = mysqli_query($link, "SELECT id FROM tb_user WHERE
username='$username'");
$data = mysqli_fetch_array($query);
$id = $data[0];
echo "<script> alert('Data Berhasil Ditambahkan') </script>";
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=detail_user&id=$id'>";
}
}else{
$isi = "FIle terlalu besar = ".mysqli_errno($link). " -
".mysqli_error($link);
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_user.php&status=$isi'>";
}
}else{
$isi = "Extensi File Tidak Diperbolehkan = ".mysqli_errno($link). " -
".mysqli_error($link);
die(mysqli_error($link));
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_user&status=$isi'>";
}
}
?>
Sebelum anda mencoba mengisikan data, buatlah folder image dan simpan pada folder assets, kelak
folder inilah yang akan menampung semua gambar yang akan kita upload.
45
Nah sekarang silahkan anda coba untuk menambahkan usernya. Jika berhasil maka akan muncul
notifikasi Data Berhasil Ditambahkan.
Dan lihat pada url, seharusnya diredirect ke halaman detail user dengan id user tersebut
localhost/perpusku/admin/home.php?page=detail_user&id=2 nah karena kita belum mempunyai
halaman tersebut, maka halaman home lah yang akan muncul (default) ini bisa terjadi karena kode
switch pada home.php
detail_user.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Detail User</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Detail User</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Detail User User</h3>
</div>
46
<?php
$id = isset($_GET['id']) ? $_GET['id'] : "";
$query = mysqli_query($link, "SELECT*FROM tb_user WHERE
id='$id'");
$data = mysqli_fetch_array($query);
?>
<tbody>
<tr>
<th width="30%">ID</th>
<td>: <?php echo $data[0]; ?></td>
</tr>
<tr>
<th width="30%">Username</th>
<td>: <?php echo $data[1]; ?></td>
</tr>
<tr>
<th width="30%">Password</th>
<td>: <?php echo $data['password']; ?></td>
</tr>
<tr>
<th width="30%">Email</th>
<td>: <?php echo $data['email']; ?></td>
</tr>
<tr>
<th width="30%">Foto</th>
<td>
<?php
$cek = $data['foto'];
if (isset($data['foto'])) {
echo ": <img src='../assets/image/$cek', alt=''
width='200' height='250'>";
} else {
echo ": tidak ada data";
}
?>
</td>
</tr>
<tr>
<th width="30%">Level</th>
<td>: <?php echo $data[5]; ?></td>
</tr>
<tr>
<td></td>
<?php $id = $data['id']; ?>
<td colspan="2"><a href='?page=edit_user&id=<?php echo $id;
?>' class="btn btn-info">Edit User</a></td>
47
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
home.php
switch($_GET['page'])
{
default:
include "dashboard.php";
break;
case "tambah_user";
include "tambah_user.php";
break;
case "simpan_user";
include "simpan_user.php";
break;
case "detail_user";
include "detail_user.php";
break;
Coba isikan lagi datanya dan lihat apakah sudah diredirect ke halaman detail_user ?
48
Lihat pada isian level disana terlihat levelnya 1 berarti user tersebut adalah berlevel admin, nah jika
anda merasa tampilan level kurang baik, mari kita edit sedikit pada detail user untuk kolom level
menjadi seperti berikut :
detail_user.php
<tr>
<th width="30%">Level</th>
<td>: <?php
if ($data['level'] == 1) {
echo "Admin";
}elseif ($data['level'] == 2) {
echo "Pengguna";
}else{
echo "";
}
?>
</td>
</tr>
Dan refresh pada halaman detail User, maka level akan berubah menjadi Admin atau pengguna
sesuai dengan yang kita buat pada percabangan If.
49
Mari kita perbaiki menu Data Admin terlebih dahulu, ubah Data Admin Menjadi Data User.
Sidebar_template.php
case "list_user";
include "list_user.php";
break;
Berikutnya buat file baru dan simpan pada folder admin dengan nama list_user.php
list_user.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Daftar User</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Daftar User</li>
</ol>
</section>
<section class="content">
50
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Daftar User</h3>
</div>
$total = mysqli_num_rows($result);
$pages = ceil($total/$halaman);
$query = mysqli_query($link, "SELECT*FROM tb_user LIMIT $mulai,
$halaman") or die(mysqli_error);
?>
<thead>
<tr>
<th>ID</th>
<th>Username</th>
<th>Password</th>
<th>Email</th>
<th>Foto</th>
<th>Level</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php
while ($user=mysqli_fetch_array($query)) {
?>
<tr>
<td><?php echo $user[0]; ?></td>
<td><a href="?page=detail_user&id=<?php echo $user[0];
?>"><?php echo $user[1]; ?></a></td>
<td><?php echo $user[2]; ?></td>
<td><?php echo $user[3]; ?></td>
<td><?php echo $user[4]; ?></td>
<td>
<?php
if ($user[5] == 1) {
echo "Admin";
51
}elseif ($user[5] == 2) {
echo "Pengguna";
}
?>
</td>
<td>
<a href="?page=edit_user&id=<?php echo $user[0]; ?>"><i
class="fa fa-edit"></i></a> || <a
href="?page=hapus_user&id=<?php echo $user[0]; ?>"
onclick="return confirm('Anda yakin ingin menghapus
Anggota <?php echo $user[1]; ?> ?')"><i class="fa fa-
trash"></i></a>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<div class="box-footer clearfix">
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="#">Halaman</a></li>
<?php for($i=1; $i<=$pages; $i++) { ?>
<li><a href="?page=list_user&halaman=<?php echo $i; ?>"><?php
echo $i; ?></a></li>
<?php } ?>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
Jika dijalankan akan menghasilkan halaman seperti berikut :
52
Bagaimana cantik bukan ?
Mengedit User
Untuk mengedit user pastikan anda mendapatkan id sebagai key yang akan kita gunakan untuk
menghapus data pada query sql. Buat file denga nama edit_user.php
edit_user.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
include '../db/koneksi.php';
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Edit User</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Edit User</li>
</ol>
</section>
53
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Edit Data User</h3>
</div>
<div class="box-body">
<div class="col-md-10">
<label> Password </label>
<input type="password" class="form-control"
placeholder="password" name="password" required value="">
</div>
</div>
<div class="box-body">
54
<div class="col-md-10">
<label> Email</label>
<input type="email" class="form-control" placeholder="email"
name="email" required value="<?php echo $data['email'] ?>">
</div>
</div>
<div class="box-body">
<div class="col-md-10">
<label> Foto </label><br>
<img src="../assets/image/<?php echo $data['foto'] ?>"
width="190" height="170"><br>
<input type="file" name="foto">
</div>
</div>
<div class="box-body">
<div class="col-md-10">
<label> Level </label>
<select name="level" class="form-control">
<option value="">Pilih Level</option>
<option value=1 <?php if($data['level'] == 1){echo "selected";
} ?>>Admin</option>
<option value=2 <?php if ($data['level'] == 2){echo
"selected"; }?>>Pengguna</option>
</select>
</div>
</div>
<div class="box-body">
<div class="box-footer">
<input type="submit" class="btn btn-primary" value="Update"
name="update">
<a href="javascript:history.back()" class="btn btn-
danger">Kembali</a>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
55
Sama seperti form input sebelumnya form diatas belum berfungsi karena kita belum membuat file
yang akan menangani inputan diatas. Buat file baru dengan nama update_user.php
update_user.php
<?php
include '../db/koneksi.php';
$id = $_POST['id'];
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$foto = $_FILES['foto']['name'];
$level = $_POST['level'];
$pass = md5($password);
if ($_POST['update']) {
if($foto)
{
$extensi_diperbolehkan = array('png','jpg','jpeg');
$nama = $_FILES['foto']['name'];
$x = explode('.', $nama);
$extensi = strtolower(end($x));
$ukuran = $_FILES['foto']['size'];
$file_tmp = $_FILES['foto']['tmp_name'];
if (!$query) {
$isi = "Gagal Menambahkan Data dengan kesalahan =
".mysqli_errno($link). " - ".mysqli_error($link);
56
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_user.php?status=$isi'>";
}else{
$query = mysqli_query($link, "SELECT id FROM tb_user WHERE
username='$username'");
$data = mysqli_fetch_array($query);
$id = $data[0];
echo "<script> alert('Data Berhasil Diupdate') </script>";
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=detail_user&id=$id'>";
}
}else{
$isi = "File terlalu besar = ".mysqli_errno($link). " -
".mysqli_error($link);
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=edit_user&status=$isi'>";
}
}else{
}
?>
Cobalah untuk mengedit salah satu data yang tersedia pada database. Apakah sudah berhasil ?
Pastikan jika data dihapus file yang ada juga harus ikut terhapus.
57
Hapus User
Untuk menghapus user tambahkan file baru dengan nama hapus_user.php
hapus_user.php
<?php
include '../db/koneksi.php';
$id= $_GET['id'];
$query_gmbr = mysqli_query($link, "SELECT foto FROM tb_user WHERE
id='$id'");
$gambarlama = mysqli_fetch_array($query_gmbr); //
$target = $gambarlama['foto'];
if(file_exists('../assets/image/'.$target)){ //mengecek apakah file
terdahulu ada ?
unlink('../assets/image/'.$target); // jika ada maka hapus filenya
gantikan dengan yang baru
}
$query = mysqli_query($link, "DELETE FROM tb_user WHERE id='$id'");
if ($query) {
echo "<script>alert('Data berhasil dihapus')</script>";
echo "<meta http-equiv='refresh' content='0; url=?page=list_user'>";
} else {
echo "Data anda gagal dihapus. Ulangi sekali lagi";
echo "<meta http-equiv='refresh' content='0; url=?page=list_user'>";
}
?>
home.php
case "hapus_user";
include "hapus_user.php";
break;
home.php
<?php
error_reporting(0);
// membuat route
switch($_GET['page'])
{
default:
include "dashboard.php";
58
break;
case "tambah_user";
include "tambah_user.php";
break;
case "simpan_user";
include "simpan_user.php";
break;
case "detail_user";
include "detail_user.php";
break;
case "list_user";
include "list_user.php";
break;
case "hapus_user";
include "hapus_user.php";
break;
case "edit_user";
include "edit_user.php";
break;
case "update_user";
include "update_user.php";
break;
}
?>
59
Sesi 3 : Membuat Validasi, Report Anggota dan CRUD.
Validasi yang akan kita tambahkan adalah library validasi yang di buat oleh pihak ke 3. Untuk
selanjutnya saya menyebut library ini dengan nama Validator. Validator ini dapat di akses di
https://1000hz.github.io/bootstrap-validator
Extrak hasil download tadi -> dist -> dan copy validator.min.js yang ada di folder dist ke folder js
pada project kita (perpusku -> assets -> js).
Jangan lupa tambahkan juga di footer_template.php javascriptnya dengan menambahkan baris kode
seperti ini :
home.php
// untuk anggota
case "tambah_anggota";
include "tambah_anggota.php";
break;
60
case "simpan_anggota";
include "simpan_anggota.php";
break;
case "detail_anggota";
include "detail_anggota.php";
break;
case "list_anggota";
include "list_anggota.php";
break;
case "hapus_anggota";
include "hapus_anggota.php";
break;
case "edit_anggota";
include "edit_anggota.php";
break;
case "update_anggota";
include "update_anggota.php";
break;
case "print_anggota";
include "print_anggota.php";
break;
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
include '../db/koneksi.php';
<section class="content-header">
<h1>
61
Admin <small>Tambah Anggota</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Tambah Anggota</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Tambah Data Anggota</h3>
</div>
<div class="form-group">
<div class="col-md-10">
<label> NPM </label>
<input type="text" class="form-control" data-minlength ="8"
placeholder="npm" name="npm" data-error="Tidak Boleh Kurang
dari 8" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
62
<div class="col-md-10">
<label> Nama </label>
<input type="text" class="form-control" placeholder="Nama Anda"
name="nama" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Tempat Lahir </label>
<input type="text" class="form-control" placeholder="Tempat
Lahir" name="tempat_lahir" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Tanggal Lahir </label>
<input type="date" class="form-control" placeholder="Tanggal
Lahir" name="tgl_lahir" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Jenis Kelamin </label>
<select name="jk" class="form-control">
<option>-----Pilih Gender---------</option>
<option value="L">Laki-Laki</option>
<option value="P">Perempuan</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Prodi </label>
<select name="prodi" class="form-control">
<option>-----Pilih Prodi---------</option>
<option value="Teknik Informatika">Teknik Informatika</option>
<option value="Sistem Informasi">Sistem Informasi</option>
<option value="Managemen Informasi">Managemen
Informasi</option>
<option value="Kesehatan Masyarakat">Kesehatan
Masyarakat</option>
63
<option value="Kimia">Kimia</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> User Id </label>
<select name="user_id" required name="level" class="form-
control">
<option>-----Pilih User Login---------</option>
<?php
while ($data= mysqli_fetch_array($query)) {
echo "<option value=$data[id]>
$data[username]</option>";
}
?>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<div class="box-footer">
<input type="submit" class="btn btn-primary" value="Simpan"
name="simpan">
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
Jadi untuk membuat si validator bekerja kita harus menambahkan data-toogle pada form
Dan untuk memanggilnya kita harus menambahkan data-error dan blok untuk menampung
errornya.
64
<input type="text" class="form-control" placeholder="Nama Anda" name="nama"
data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
Berikutnya kita akan membuat simpan datanya, buat file baru dengan nama simpan_anggota.php
simpan_anggota.php
<?php
include '../db/koneksi.php';
$user_id = $_POST['user_id'];
$npm = $_POST['npm'];
$nama = $_POST['nama'];
$tmp_lahir= $_POST['tempat_lahir'];
$tgl_lahir= $_POST['tgl_lahir'];
$jk = $_POST['jk'];
$prodi = $_POST['prodi'];
$tgl_dibuat = date('Y-m-d');
if ($_POST['simpan']) {
$query = mysqli_query($link, "INSERT INTO tb_anggota(user_id, npm, nama,
tempat_lahir, tgl_lahir, jk, prodi, tgl_dibuat)
VALUES('$user_id','$npm','$nama','$tmp_lahir','$tgl_lahir','$jk', '$prodi',
'$tgl_dibuat')");
if (!$query) {
$isi = "Gagal Menambahkan Data dengan kesalahan = ".mysqli_errno($link).
" - ".mysqli_error($link);
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_anggota?status=$isi'>";
}else{
$queryku = mysqli_query($link, "SELECT*FROM tb_anggota WHERE npm=$npm");
$data = mysqli_fetch_array($queryku);
$id = $data[0];
echo "<script> alert('Data berhasil ditambahkan ') </script>";
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=detail_anggota&id=$id'>";
}
65
}
?>
detail_anggota.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Detail Anggota</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Detail Anggota</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Detail Anggota</h3>
</div>
<tbody>
66
<tr>
<th width="30%">ID Login</th>
<td>: <?php echo $data['user_id']; ?></td>
</tr>
<tr>
<th width="30%">Nama</th>
<td>: <?php echo $data['nama']; ?></td>
</tr>
<tr>
<th width="30%">NPM</th>
<td>: <?php echo $data['npm']; ?></td>
</tr>
<tr>
<th width="30%">Tempat, Tanggal Lahir</th>
<td>: <?php
$tgl_lahir = $data['tgl_lahir'];
echo $data['tempat_lahir'].', '.date('d F Y',
strtotime($tgl_lahir)); ?>
</td>
</tr>
<tr>
<th width="30%">Jenis Kelamin</th>
<td>: <?php
if ($data['jk'] == 'L') {
echo "Laki-Laki";
}elseif ($data['jk'] == 'P') {
echo "Perempuan";
}else{
echo "";
}
?>
</td>
</tr>
<tr>
<th width="30%">Prodi</th>
<td>: <?php echo $data['prodi']; ?></td>
</tr>
<tr>
<th width="30%">Tanggal Dibuat</th>
<td>: <?php echo date('d F Y',
strtotime($data['tgl_dibuat'])); ?></td>
</tr>
<tr>
<th width="30%">Tanggal Diubah</th>
<td>: <?php
$tgl_diubah = $data['tgl_diubah'];
if ($tgl_diubah) {
echo date('d F Y', strtotime($tgl_diubah));
67
}else{
echo "Belum Pernah Diubah";
}
?>
</td>
</tr>
<tr>
<td></td>
<?php $id = $data['id']; ?>
<td colspan="2"><a href='?page=edit_anggota&id=<?php echo $id;
?>' class="btn btn-info">Edit User</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
include '../db/koneksi.php';
?>
68
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Edit Anggota</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Edit Anggota</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Edit Data Anggota</h3>
</div>
69
<input type="text" class="form-control" data-minlength ="8"
value="<?php echo $data['npm'] ?>" placeholder="npm"
name="npm" data-error="Tidak Boleh Kurang dari 8" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Nama </label>
<input type="text" class="form-control" value="<?php echo
$data['nama'] ?>" placeholder="Nama Anda" name="nama" data-
error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Tempat Lahir </label>
<input type="text" class="form-control" placeholder="Tempat
Lahir" value="<?php echo $data['tempat_lahir'] ?>"
name="tempat_lahir" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Tanggal Lahir </label>
<input type="date" value="<?php echo $data['tgl_lahir'] ?>"
class="form-control" placeholder="Tanggal Lahir"
name="tgl_lahir" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Jenis Kelamin </label>
<select name="jk" class="form-control">
<option>-----Pilih Gender---------</option>
<option value="L" <?php if($data['jk'] == 'L'){echo
"selected"; } ?>>Laki-Laki</option>
<option value="P" <?php if ($data['jk'] == 'P'){echo
"selected"; }?>>Perempuan</option>
</select>
</div>
70
</div>
<div class="form-group">
<div class="col-md-10">
<label> Prodi </label>
<select name="prodi" class="form-control">
<option>-----Pilih Prodi---------</option>
<option value="Teknik Informatika" <?php if($data['prodi'] ==
'Teknik Informatika'){echo "selected"; } ?>>Teknik
Informatika</option>
<option value="Sistem Informasi" <?php if($data['prodi'] ==
'Sistem Informasi'){echo "selected"; } ?>>Sistem
Informasi</option>
<option value="Managemen Informasi" <?php if($data['prodi'] ==
'Managemen Informasi'){echo "selected"; } ?>>Managemen
Informasi</option>
<option value="Kesehatan Masyarakat" <?php if($data['prodi']
== 'Kesehatan Masyarakat'){echo "selected"; } ?>>Kesehatan
Masyarakat</option>
<option value="Kimia" <?php if($data['prodi'] == 'Kimia'){echo
"selected"; } ?>>Kimia</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> User Id </label>
<select name="user_id" required class="form-control">
<option>-----Pilih User Login---------</option>
<?php
while ($dataUser= mysqli_fetch_array($queryUser)) {
echo "<option value=$dataUser[id] >
$dataUser[username]</option>";
}
?>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<div class="box-footer">
<input type="submit" class="btn btn-primary" value="Ubah"
name="ubah">
<a href="?page=list_anggota" class="btn btn-danger">Kembali</a>
</div>
</div>
71
</div>
</form>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
update_anggota.php
<?php
include '../db/koneksi.php';
$id = $_POST['id'];
$user_id = $_POST['user_id'];
$npm = $_POST['npm'];
$nama = $_POST['nama'];
$tmp_lahir= $_POST['tempat_lahir'];
$tgl_lahir= $_POST['tgl_lahir'];
$jk = $_POST['jk'];
$prodi = $_POST['prodi'];
$tgl_diubah = date('Y-m-d');
if ($_POST['ubah']) {
$query = mysqli_query($link, "UPDATE tb_anggota SET npm='$npm',
nama='$nama', tempat_lahir='$tmp_lahir', tgl_lahir='$tgl_lahir', jk='$jk',
prodi='$prodi', tgl_diubah='$tgl_diubah', user_id='$user_id' WHERE id='$id'");
if (!$query) {
$isi = "Gagal Menambahkan Data dengan kesalahan = ".mysqli_errno($link).
" - ".mysqli_error($link);
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_anggota?status=$isi'>";
}else{
$queryku = mysqli_query($link, "SELECT*FROM tb_anggota WHERE npm=$npm");
$data = mysqli_fetch_array($queryku);
$id = $data[0];
echo "<script> alert('Data berhasil ditambahkan ') </script>";
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=detail_anggota&id=$id'>";
}
}
?>
72
Membuat Halaman List Anggota
list_anggota.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Daftar Anggota</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Daftar Anggota</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Daftar Anggota</h3>
</div>
$total = mysqli_num_rows($result);
$pages = ceil($total/$halaman);
$query = mysqli_query($link, "SELECT*FROM tb_anggota LIMIT $mulai,
$halaman") or die(mysqli_error);
73
?>
<thead>
<tr>
<th>ID</th>
<th>NPM</th>
<th>Nama</th>
<th>TTL</th>
<th>Jenis Kelamin</th>
<th>Prodi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php
$i = 1;
while ($anggota=mysqli_fetch_array($query)) {
?>
<tr>
<td><?php echo $i; ?></td>
<td><a href="?page=detail_anggota&id=<?php echo
$anggota['id']; ?>"><?php echo $anggota['npm']; ?></a></td>
<td><?php echo $anggota['nama']; ?></td>
<td><?php echo $anggota['tempat_lahir'].", ". date('d F Y',
strtotime($anggota['tgl_lahir'])); ?></td>
<td>
<?php
if ($anggota['jk'] == 'L') {
echo "Laki-Laki";
}elseif ($anggota['jk'] == 'P') {
echo "Perempuan";
}
?>
</td>
<td>
<a href="?page=edit_anggota&id=<?php echo $anggota[0];
?>"><i class="fa fa-edit"></i></a> || <a
href="?page=hapus_anggota&id=<?php echo $anggota[0];
?>" onclick="return confirm('Anda yakin ingin
menghapus Anggota <?php echo $anggota['nama']; ?>
?')"><i class="fa fa-trash"></i></a>
</td>
</tr>
<?php
$i++;
74
}
?>
</tbody>
</table>
<div class="box-footer clearfix">
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="#">Halaman</a></li>
<?php for($i=1; $i<=$pages; $i++) { ?>
<li><a href="?page=list_anggota&halaman=<?php echo $i;
?>"><?php echo $i; ?></a></li>
<?php } ?>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
Kali ini ada yang berbeda dari list_anggota dari list sebelumnya yaitu penambahan tombol print.
<?php
include '../db/koneksi.php';
$id= $_GET['id'];
$query = mysqli_query($link, "DELETE FROM tb_anggota WHERE id='$id'");
if ($query) {
75
echo "<script>alert('Data berhasil dihapus')</script>";
echo "<meta http-equiv='refresh' content='0; url=?page=list_anggota'>";
} else {
echo "Data anda gagal dihapus. Ulangi sekali lagi";
echo "<meta http-equiv='refresh' content='0; url=?page=list_anggota'>";
}
?>
Buat folder baru pada project dengan nama lib. Kembali pada library fpdf.
Pilih folder font, fpdf.php, fpdf.css dan copy ke 3 nya ke project -> paste pada folder lib.
Buat file baru dengan nama print_anggota.php dan simpan pada folder admin.
print_anggota.php
<?php
// memanggil library FPDF
require '../lib/fpdf.php';
include '../db/koneksi.php';
76
// Memberikan space kebawah agar tidak terlalu rapat
$pdf->Cell(10,10,'',0,1);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(10,6, 'NO', 1,0);
$pdf->Cell(20,6,'NPM',1,0);
$pdf->Cell(55,6,'NAMA MAHASISWA',1,0);
$pdf->Cell(55,6,'TTL',1,0);
$pdf->Cell(10,6,'JK',1,0);
$pdf->Cell(40,6,'PRODI',1,1);
$pdf->SetFont('Arial','',10);
$pdf->Output();
?>
77
tambah_buku.php
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
include '../db/koneksi.php';
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Tambah Buku</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Tambah Buku</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Tambah Data Buku</h3>
</div>
78
</div>
<?php
}
?>
<div class="form-group">
<div class="col-md-10">
<label> Judul </label>
<input type="text" class="form-control" data-minlength ="8"
placeholder="Judul Buku" name="judul" data-error="Judul Tidak
Boleh Kosong" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Pengarang </label>
<input type="text" class="form-control" placeholder="Nama
Pengarang" name="pengarang" data-error="wajib di isi"
required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Penerbit </label>
<input type="text" class="form-control" placeholder="Penerbit"
name="penerbit" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Tahun Terbit </label>
<select required name="tahun" class="form-control">
<option selected="selected">Tahun</option>
<?php
for($i=date('Y'); $i>=date('Y')-32; $i-=1){
echo "<option value='$i'>$i</option>";
}
?>
</select>
<div class="help-block with-errors"></div>
</div>
</div>
79
<div class="form-group">
<div class="col-md-10">
<label> Cover </label>
<input type="file" class="form-control" placeholder="Cover Buku"
name="cover" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> ISBN </label>
<input type="text" class="form-control" name="isbn" required>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Jumlah Buku </label>
<input type="text" class="form-control" name="jumlah" required>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Lokasi </label>
<select required name="lokasi" class="form-control">
<option>-------Pilih Lokasi---------</option>
<option value="rak1">Rak 1</option>
<option value="rak2">Rak 2</option>
<option value="rak3">Rak 3</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<div class="box-footer">
<input type="submit" class="btn btn-primary" value="Simpan"
name="simpan">
</div>
</div>
</div>
</form>
</div>
</div>
80
</div>
</section>
</div>
<?php
}
?>
Tambahkan route halaman untuk buku dengan cara menambahkan sintak berikut, pada home.php
home.php
// untuk Buku
case "tambah_buku";
include "tambah_buku.php";
break;
case "simpan_buku";
include "simpan_buku.php";
break;
case "detail_buku";
include "detail_buku.php";
break;
case "list_buku";
include "list_buku.php";
break;
case "hapus_buku";
include "hapus_buku.php";
break;
case "edit_buku";
include "edit_buku.php";
break;
case "update_buku";
include "update_buku.php";
break;
case "cari_buku";
include "cari_buku.php";
break;
jangan lupa tambahkan juga file simpan_buku.php sebagai handler yang digunakan menyimpan data
ke database.
simpan_buku.php
81
<?php
include '../db/koneksi.php';
$judul = $_POST['judul'];
$pengarang = $_POST['pengarang'];
$penerbit = $_POST['penerbit'];
$tahun = $_POST['tahun'];
$isbn = $_POST['isbn'];
$jumlah = $_POST['jumlah'];
$lokasi = $_POST['lokasi'];
$tgl_input = date('Y-m-d');
$cover = $_POST['cover'];
if ($_POST['simpan']) {
$extensi_diperbolehkan = array('png','jpg','jpeg');
$nama = $_FILES['cover']['name'];
$x = explode('.', $nama);
$extensi = strtolower(end($x));
$ukuran = $_FILES['cover']['size'];
$file_tmp = $_FILES['cover']['tmp_name'];
if (!$query) {
82
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_buku&status=$isi'>";
}
}else{
$isi = "Extensi File Tidak Diperbolehkan = ".mysqli_errno($link). " -
".mysqli_error($link);
die(mysqli_error($link));
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=tambah_buku&status=$isi'>";
}
}
?>
Cobalah untuk menambahkan data pada halaman data buku.
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
83
<h1>
Admin <small>Detail Buku</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Detail Buku</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Detail Buku</h3>
</div>
<tbody>
<tr>
<th width="30%">ID</th>
<td>: <?php echo $data['judul']; ?></td>
</tr>
<tr>
<th width="30%">Pengarang</th>
<td>: <?php echo $data['pengarang']; ?></td>
</tr>
<tr>
<th width="30%">Penerbit</th>
<td>: <?php echo $data['penerbit']; ?></td>
</tr>
<tr>
<th width="30%">ISBN</th>
<td>: <?php echo $data['isbn']; ?></td>
</tr>
<tr>
<th width="30%">Cover</th>
<td>
<?php
$cek = $data['cover'];
if (isset($data['cover'])) {
84
echo ": <img src='../assets/image/cover/$cek', alt=''
width='200' height='250'>";
} else {
echo ": tidak ada data";
}
?>
</td>
</tr>
<tr>
<th width="30%">Tahun Terbit</th>
<td>: <?php echo $data['thn_terbit']?>
</td>
</tr>
<tr>
<th width="30%">Jumlah Buku</th>
<td>: <?php echo $data['jumlah_buku']?>
</td>
</tr>
<tr>
<th width="30%">Lokasi Buku</th>
<td>: <?php echo $data['lokasi']?>
</td>
</tr>
<tr>
<th width="30%">Tanggal Input</th>
<td>: <?php echo date('d-m-Y', strtotime($data['tgl_input']));
?></td>
</tr>
<tr>
<?php $id = $data['id']; ?>
<td></td>
<td colspan="2">
<a href='?page=edit_buku&id=<?php echo $id; ?>' class="btn
btn-info">Edit Buku</a>
<a href='?page=list_buku' class="btn btn-warning">Daftar
Buku</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
85
</div>
<?php
}
?>
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
include '../db/koneksi.php';
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Edit Buku</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Edit Buku</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Edit Data Buku</h3>
</div>
86
<form data-toggle="validator" action="?page=update_buku" method="POST"
enctype="multipart/form-data">
<div class="box-body">
<?php
if ($status){
?>
<div class="form-group">
<div class="col-md-10">
<label> Pengarang </label>
<input type="text" class="form-control" placeholder="Nama
Pengarang" value="<?php echo $data['pengarang'] ?>"
name="pengarang" data-error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Penerbit </label>
<input type="text" class="form-control" placeholder="Penerbit"
name="penerbit" value="<?php echo $data['penerbit'] ?>" data-
error="wajib di isi" required>
<div class="help-block with-errors"></div>
</div>
</div>
87
<div class="form-group">
<div class="col-md-10">
<label> Tahun Terbit </label>
<select required name="tahun" class="form-control">
<option>Tahun</option>
<?php
for($i=date('Y'); $i>=date('Y')-32; $i-=1){
echo "<option value='$i'>$i</option>";
}
?>
</select>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Cover </label> <br>
<img src="../assets/image/cover/<?php echo $data['cover'] ?>"
width="190" height="170">
<br>
<input type="file" name="cover">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> ISBN</label>
<input value="<?php echo $data['isbn'] ?>" type="text"
class="form-control" name="isbn" required>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Jumlah Buku </label>
<input type="text" value="<?php echo $data['jumlah_buku'] ?>"
class="form-control" name="jumlah" required>
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<label> Lokasi </label>
<select required name="lokasi" class="form-control">
<option>-----Pilih Lokasi---------</option>
88
<option value='rak1' <?php if($data['lokasi'] == 'rak1'){echo
"selected"; } ?>>Rak1</option>
<option value='rak2' <?php if($data['lokasi'] == 'rak2'){echo
"selected"; } ?>>Rak2</option>
<option value='rak3' <?php if($data['lokasi'] == 'rak3'){echo
"selected"; } ?>>Rak3</option>
</select>
</div>
</div>
</div>
<div class="box-body">
<div class="box-footer">
<input type="submit" class="btn btn-primary" value="Update"
name="update">
<a href="javascript:history.back()" class="btn btn-
danger">Kembali</a>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
update_buku.php
<?php
include '../db/koneksi.php';
$id = $_POST['id'];
$judul = $_POST['judul'];
$pengarang = $_POST['pengarang'];
$penerbit = $_POST['penerbit'];
$tahun = $_POST['tahun'];
$isbn = $_POST['isbn'];
$jumlah = $_POST['jumlah'];
$lokasi = $_POST['lokasi'];
$cover = $_POST['cover'];
89
$gambarlama = mysqli_fetch_array($query_gmbr); // query untuk mengecek gambar
lawas
if ($_POST['update']) {
if($cover)
{
$extensi_diperbolehkan = array('png','jpg','jpeg');
$nama = $_FILES['cover']['name'];
$x = explode('.', $nama);
$extensi = strtolower(end($x));
$ukuran = $_FILES['cover']['size'];
$file_tmp = $_FILES['cover']['tmp_name'];
if (!$query) {
$isi = "Gagal Menambahkan Data dengan kesalahan =
".mysqli_errno($link). " - ".mysqli_error($link);
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=edit_buku.php?status=$isi&id=$id''
>";
}else{
echo "<script> alert('Data Berhasil Diupdate') </script>";
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=detail_buku&id=$id'>";
}
}else{
$isi = "File terlalu besar = ".mysqli_errno($link). " -
".mysqli_error($link);
90
echo "<meta http-equiv='refresh' content='0;
url=home.php?page=edit_buku&status=$isi&id=$id'>";
}
}else{
}
?>
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
91
Admin <small>Daftar Buku</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Daftar Buku</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Daftar Buku</h3> <br>
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><i class="fa
fa-search"></i></button>
</div>
</div>
</form>
</div>
$total = mysqli_num_rows($result);
$pages = ceil($total/$halaman);
$query = mysqli_query($link, "SELECT*FROM tb_buku LIMIT $mulai,
$halaman") or die(mysqli_error);
?>
<thead>
<tr>
92
<th>ID</th>
<th>Judul</th>
<th>Pengarang</th>
<th>Penerbit Tahun</th>
<th>Cover</th>
<th>Jumlah</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php
$m = 1;
while ($buku=mysqli_fetch_array($query)) {
$a = $buku['cover'];
?>
<tr>
<td><?php echo $m; ?></td>
<td><a href="?page=detail_buku&id=<?php echo $buku[0];
?>"><?php echo $buku[1]; ?></a></td>
<td><?php echo $buku[2]; ?></td>
<td><?php echo $buku[3]; ?></td>
<td><?php echo '<img src="../assets/image/cover/'.$a.'"
alt="" width=40 height=40>'; ?></td>
<td><?php echo $buku['jumlah_buku']; ?></td>
<td>
<a href="?page=edit_buku&id=<?php echo $buku[0]; ?>"><i
class="fa fa-edit"></i></a> || <a
href="?page=hapus_buku&id=<?php echo $buku[0]; ?>"
onclick="return confirm('Anda yakin ingin menghapus Buku
<?php echo $buku[1]; ?> ?')"><i class="fa fa-
trash"></i></a>
</td>
</tr>
<?php
$m++;
}
?>
</tbody>
</table>
<div class="box-footer clearfix">
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="#">Halaman</a></li>
<?php for($i=1; $i<=$pages; $i++) { ?>
<li><a href="?page=list_buku&halaman=<?php echo $i; ?>"><?php
echo $i; ?></a></li>
<?php } ?>
</ul>
93
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
<?php
include '../db/koneksi.php';
$id= $_GET['id'];
$query_gmbr = mysqli_query($link, "SELECT cover FROM tb_buku WHERE
id='$id'");
$gambarlama = mysqli_fetch_array($query_gmbr); //
$target = $gambarlama['cover'];
if(file_exists('../assets/image/cover/'.$target)){ //mengecek apakah file
terdahulu ada ?
unlink('../assets/image/cover/'.$target); // jika ada maka hapus filenya
gantikan dengan yang baru
}
$query = mysqli_query($link, "DELETE FROM tb_buku WHERE id='$id'");
if ($query) {
echo "<script>alert('Data berhasil dihapus')</script>";
echo "<meta http-equiv='refresh' content='0; url=?page=list_buku'>";
} else {
echo "Data anda gagal dihapus. Ulangi sekali lagi";
echo "<meta http-equiv='refresh' content='0; url=?page=list_buku'>";
}
?>
<?php
// memanggil library FPDF
94
require '../lib/fpdf.php';
include '../db/koneksi.php';
$pdf->SetFont('Arial','B',10);
$pdf->Cell(10,6, 'NO', 1,0);
$pdf->Cell(108,6,'JUDUL',1,0,'C');
$pdf->Cell(50,6,'PENGARANG',1,0,'C');
$pdf->Cell(30,6,'ISBN',1,0, 'C');
$pdf->Cell(50,6,'PENERBIT/TAHUN',1,0, 'C');
$pdf->Cell(18,6,'LOKASI',1,0, 'C');
$pdf->Cell(10,6,'JML',1,1);
$pdf->SetFont('Arial','',10);
$pdf->Output();
?>
95
Membuat Pencarian Buku
cari_buku.php
Cari buku mirip seperti list_buku.php jadi copy paste saja kodenya dan simpan dengan nama
cari_buku.php lalu modifikasi seperti kode dibawah ini.
<?php
session_start();
if(!isset($_SESSION['nama'])){
echo "<script> alert('Silahkan login terlebih dahulu'); </script>";
echo "<meta http-equiv='refresh' content='0; url=../login.php'>";
}else{
$cari = $_POST['cari'];
?>
<!-- ini untuk konten -->
<div class="content-wrapper">
<section class="content-header">
<h1>
Admin <small>Daftar Buku</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-book"></i>Dashboard</a></li>
<li class="active">Daftar Buku</li>
</ol>
</section>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Daftar Buku</h3> <br>
96
<a target="blank" href="print_buku.php" class="btn btn-danger"><i
class="fa fa-print" aria-hidden="true"></i> Print</a>
<div class="box-tools">
<form action="?page=cari_buku" method="POST">
<div class="input-group input-group-sm" style="width: 150px;">
<input type="text" name="cari" class="form-control pull-right"
placeholder="Cari...">
<div class="input-group-btn">
<button type="submit" class="btn btn-default"><i class="fa
fa-search"></i></button>
</div>
</div>
</form>
</div>
$total = mysqli_num_rows($result);
$pages = ceil($total/$halaman);
$query = mysqli_query($link, "SELECT*FROM tb_buku WHERE judul like
'%$cari%' OR pengarang like '%$cari%' LIMIT $mulai, $halaman") or
die(mysqli_error);
?>
<thead>
<tr>
<th>ID</th>
<th>Judul</th>
<th>Pengarang</th>
<th>Penerbit Tahun</th>
<th>Cover</th>
<th>Jumlah</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php
$m = 1;
while ($buku=mysqli_fetch_array($query)) {
$a = $buku['cover'];
?>
97
<tr>
<td><?php echo $m; ?></td>
<td><a href="?page=detail_buku&id=<?php echo $buku[0];
?>"><?php echo $buku[1]; ?></a></td>
<td><?php echo $buku[2]; ?></td>
<td><?php echo $buku[3]; ?></td>
<td><?php echo '<img src="../assets/image/cover/'.$a.'"
alt="" width=40 height=40>'; ?></td>
<td><?php echo $buku['jumlah_buku']; ?></td>
<td>
<a href="?page=edit_buku&id=<?php echo $buku[0]; ?>"><i
class="fa fa-edit"></i></a> || <a
href="?page=hapus_buku&id=<?php echo $buku[0]; ?>"
onclick="return confirm('Anda yakin ingin menghapus
Buku <?php echo $buku[1]; ?> ?')"><i class="fa fa-
trash"></i></a>
</td>
</tr>
<?php
$m++;
}
?>
</tbody>
</table>
<div class="box-footer clearfix">
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="#">Halaman</a></li>
<?php for($i=1; $i<=$pages; $i++) { ?>
<li><a href="?page=list_buku&halaman=<?php echo $i; ?>"><?php
echo $i; ?></a></li>
<?php } ?>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<?php
}
?>
98
Memperbaiki tampilan profile foto pada aplikasi
Kita akan memperbaiki tampilan profile pada ujung kanan atas seperti berikut dengan memperbaiki
file topmenu_template.php
topmenu_template.php
<p>
<?php echo $data['username']?> - Web Developer
<small>Member since Nov. 2017</small>
</p>
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="#" class="btn btn-default btn-flat">Profile</a>
</div>
<div class="pull-right">
99
<a href="#" class="btn btn-default btn-flat">Sign out</a>
</div>
</li>
</ul>
</li>
<!-- Control Sidebar Toggle Button -->
10
0
DAFTAR PUSTAKA
https://www.w3schools.com/php/
https://www.tutorialspoint.com/php/
http://php.net/manual/en/getting-started.php
http://www.codingcage.com/search/label/PHP
http://www.duniailkom.com/tutorial-belajar-php-dan-index-artikel-php/
10
1