• Tidak ada hasil yang ditemukan

Membuat database dengan phpMyAdmin

BAB 3 Studi Kasus Perpustakaan

3.3 Membuat database dengan phpMyAdmin

Perpustakaan Digital merupakan suatu organisasi yang menyediakan sumber-sumber, termasuk staf-staf ahli, untuk memilih, menyusun, menawarkan akses intelektual, menterjemahkan, mendistribusikan, memelihara integritas koleksi-koleksi dari pekerjaan-pekerjaan digital sehingga mereka tersedia secara cepat dan ekonomis untuk digunakan/dimanfaat-kan olehkomunitas tertentu atau kumpulan komunitas.(Intan Komala Dewi P, Kusrini, 2014)

Buka browser dan ketik url http://localhost/phpmyadmin, setelah itu buatlah database untuk system booking perpustakaan dengan nama db_ciperpust.

Selanjutnya kita akan membuat table admin, anggota, buku, detail_pinjam, kategori, peminjaman dan transaksi.

10 3.4 Membuat table

Adapun nama dan struktur masing-masing table dapat dilihat pada gambar dibawah ini :

Gambar 5. Struktur table dari database db_ciperpust

3.5 Koneksi Database CodeIgniter dengan MySQL

Pengaturan koneksi database pada Codeigniter, terdapat pada file folder config/database.php yang di konfigurasi agar dapat terkoneksi.

$db['default'] = array(

'dsn' => '',

'hostname' => 'localhost', 'username' => 'root', 'password' => '',

'database' => 'perpust', 'dbdriver' => 'mysqli',

Perhatikan script diatas, sesuaikan dengan username, password dan database kita masing-masing.

11

Setelah itu kita juga harus mengkonfigurasi file autoload.php, pada folder yang sama, untuk ditambahkan database dansession disana.

$autoload['libraries'] = array('database', 'session');

3.6 Membuat Model untuk Table

Model merupakan class atau kode yang berhubungan dengan data.Di dalam model, kita akan membuat pemodelan data dari database. Sehingga kita akan lebih mudah mengaksesnya. Biasanya satu tabel, dibuatkan satu modelnya.

Kita akan membuat model dengan nama M_perpus.php, yang harus diperhatikan adalah pemberian nama harus diawali dengan huruf besar, agar tidak akan menyalahi aturan penggunaan codeigniter yang benar dan akan terjadi trouble saat diupload dihosting.

M_perpust.php

<?php

defined('BASEPATH') or exit('No direct Script access allowed');

class M_perpus extends CI_Model {

function edit_data($where,$table){

return $this->db->get_where($table,$where);

}

function get_data($table){

return $this->db->get($table);

}

function insert_data($data,$table){

$this->db->insert($table,$data);

}

function update_data($table,$data,$where){

$this->db->update($table,$data,$where);

}

function delete_data($where,$table){

$this->db->where($where);

$this->db->delete($table);

} } ?>

Dengan model seperti diatas kita dapat dapat menggunakan untuk berbagai keperluan, yakni input yang diwakili oleh insert_data(), read menggunakan fuction get_data(), delete untuk menghapus data dari database kita bisa menggunakan

12

function delete_data() dan dan untuk mengupdate data pada database kita bisa menggunakan function update_data(). Selanjutnya kita akan mengatur autoload model di application/config/autoload.php. agar model m_rental di load secara otomatis. Jadi tidak perlu lagi kita load dari controller. Pada kode baris ke 135 yang semula $autoload['model'] = array();

Menjadi $autoload['model'] = array('M_perpus');

3.7 Mengintegrasikan Codeigniter dengan Bootstrap SB Admin

Aplikasi perpustakaan yang akan dibuat kali ini menggunakan Bootstrap template SB Admin yang mudah diimplementasikan pada Codeigniter. SB Admin dapat didownload pada laman https://startbootstrap.com/templates/sb-admin/

Gambar 6. Tampilan SB Admin

Setelah berhasil mengunduh SB Admin, kita tinggal extract file tersebut, kemudian

Kita tinggal copy/paste file dan folder yang dibutuhkan. Berikut ini folder yang harus kita copy:

1. Folder css

2. Folder js

3. Folder vendor–rename menjadi–> assets

13

Untuk folder vendor, kita akan ubah namanya menjadi assetsagar tidak bercampur dengan folder vendordari composer.

3.7.1 Modifikasi Template perpustakaan

Mari kita buat direktori baru kedalam direktori views dengan nama admin, yang didalamnya ada kode php dengan nama overview.php.

File overview.php ini akan dijadikan sebagai home admin, sedangkan isi kode overview.php diambil dari overview.php.

Berikut isi dari overview.php

<!DOCTYPE html>

<html lang="en">

<head>

<?php $this->load->view("admin/_partials/head.php") ?>

</head>

<body id="page-top">

<?php $this->load->view("admin/_partials/navbar.php") ?>

<div id="wrapper">

<?php $this->load->view("admin/_partials/sidebar.php") ?>

<div id="content-wrapper">

<div class="container-fluid">

<!--

karena ini halaman overview (home), kita matikan partial breadcrumb.

Jika anda ingin mengampilkan breadcrumb di halaman overview, silahkan hilangkan komentar (//) di tag PHP di bawah.

-->

<?php //$this->load->view("admin/_partials/breadcrumb.php") ?>

<!-- Icon Cards-->

<div class="row">

<div class="col-xl-3 col-sm-6 mb-3">

<div class="card text-white bg-primary o-hidden h-100">

<div class="card-body">

<div class="card-body-icon">

<i class="fas fa-fw fa-comments"></i>

</div>

<div class="mr-5">26 New Messages!</div>

</div>

<a class="card-footer text-white clearfix small z-1" href="#">

<span class="float-left">View Details</span>

<span class="float-right">

<i class="fas fa-angle-right"></i>

</span>

</a>

</div>

</div>

14

<div class="col-xl-3 col-sm-6 mb-3">

<div class="card text-white bg-warning o-hidden h-100">

<div class="card-body">

<a class="card-footer text-white clearfix small z-1" href="#">

<div class="card text-white bg-success o-hidden h-100">

<div class="card-body">

<a class="card-footer text-white clearfix small z-1" href="#">

<div class="card text-white bg-danger o-hidden h-100">

<div class="card-body">

<a class="card-footer text-white clearfix small z-1" href="#">

15

</div>

<div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div>

</div>

</div>

<!-- /.container-fluid -->

<!-- Sticky Footer -->

<?php $this->load->view("admin/_partials/footer.php") ?>

</div>

<!-- /.content-wrapper -->

</div>

<!-- /#wrapper -->

<?php $this->load->view("admin/_partials/scrolltop.php") ?>

<?php $this->load->view("admin/_partials/modal.php") ?>

<?php $this->load->view("admin/_partials/js.php") ?>

</body>

</html>

BAB 4 MEMBUAT FORM LOGIN

4.1 Mempersiapkan halaman login

Pada studi kasus kali ini, halaman utama perpustakaan adalah halaman login, sehingga pengguna harus login terlebih dahulu dengan mengisikan username dan password. Agar password sulit ditebak, maka dibutuhkan enkripsi yang sering digunakan yakni MD5. Untuk itu kita buka http://localhost/phpmyadmin yang dilanjtukan dengan memilih database perpust, kemudian pilih table admin.

Gambar 7. Contoh input data administrator dengan MD5

16

Skenario dari formlogin yang akan dibuat kali ini adalah, ketika web pertama diakses maka user dalam hal ini admin langsung diarahkan ke form login. Pada pembahasan diatas sudah dijelaskan bahwa secara default pada Codeigniter yang pertama diakses adalah Welcome.php. untuk itu kita perlu merubah defaultnya di application/config/routes.php. atau bisa dirubah langsung menggunakan controller Welcome.php sebagai controller defaultnya. Berikut merrupakan kode atau syntax dari controller Welcome.php.

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller { function __construct(){

parent::__construct();

}

public function index() {

$this->load->view('login');

}

public function login(){

$username = $this->input->post('admin_username');

$password = $this->input->post('admin_password');

$this->form_validation->set_rules('admin_username','Username','required');

$this->form_validation->set_rules('admin_password','Password','required');

if($this->form_validation->run() != false){

$where = array('username'=>$username, 'password'=>md5($password));

$data = $this->M_perpus->edit_data($where,'admin');

$d = $this->M_perpus->edit_data($where,'admin')->row();

$cek = $data->num_rows();

if($cek > 0) {

$session = array('id' => >id_admin,'nama' =>

$d->nama_admin,'status' =>'login', 'posisi'=>'admin');

$this->session->set_userdata($session);

redirect(base_url().'admin');

} else{

$dt = $this->M_perpus->edit_data($where, 'anggota');

$hasil = $this->M_perpus->edit_data($where, 'anggota')->row();

$proses = $dt->num_rows();

if($proses > 0){

17

$session = array('id_agt' =>

$hasil->id_anggota, 'nama_agt' => $hasil->nama_anggota, 'status' => 'login');

$this->session->set_userdata($session);

redirect(base_url().'member');

} else {

$this->session->set_flashdata('alert','Login Gagal!

Username atau Password Salah');

redirect(base_url());

} }

}

else{

$this->session->set_flashdata('alert','Anda Belum mengisi username atau password');

$this->load->view('login');

} }

}

Pada syntax Welcome.php function construct yang perrtama kali dijalankan yang dilanjutnkan dengan index(). Selanjutnta pada

public function index() {

$this->load->view('login');

}

dibuat perintah untuk membuka view login. Syntax $this->load->view() adalah perintah untuk menampilkan view (tampilan). Di sini kita memerintahkan untuk menampilkan view login (login.php). ekstensi .php nya tidak perlu lagi kita tuliskan saat memanggil view.

Pada saat controller welcome dijalankan, otomatis function index juga dijalankan, dan akan menampilkan halaman login (view login.php). Karena pada function index kita ingin menampilkan view login.php, maka sekarang kita buat dulu view login.php nya.

Application/view/login.php

<!DOCTYPE html>

<html lang="en" dir="ltr">

<head>

<meta charset="utf-8">

<title>LOGIN - Aplikasi E-Library</title>

<link rel="stylesheet" type="text/css" href="<?php echo base_url().'assets/css/bootstrap.css' ?>">

18

<script type="text/javascript" src="<?php echo base_url().'assets/js/jquery.js'; ?>"></script>

<script type="text/javascript" src="<?php echo base_url().'assets/js/bootstrap.js'; ?>"></script>

</head>

<body>

<div class="col-md-4 col-md-offset-4" style="margin-top:50px">

<center>

echo "<div class='alert alert-danger alert-danger'>";

echo $this->session->flashdata('alaert');

echo "</div>";

19

</div>

</form>

<br><br>

</div>

</div>

</div>

<script type="text/javascript">

$('.alert-message').alert().delay(3000).slideUp('slow');

</script>

</body>

</html>

Pertama kita menangkap data yang dikirim dari form. Dan kita tetapkan validasinya, bahwa username dan password harus wajib di isi (required), kemudian kita cek validasinya. Jika tidak ada masalah, kita cek username dan password yang diinput sesuai atau tidak dengan username dan password pada tabel admin. Jika sesuai maka kita buat session id, dan nama. Yang mana session id kita simpan id admin yang melakukan login, session nama kita menyimpan nama admin yang login.

Setelah dibuat sessionnya, maka selanjutnya mengalihkan halamannya ke controller admin. Karena controller admin ini yang akan dijadikan sebagai halaman admin.

Jika login gagal maka dialihkan ke controller welcome kembali. Yang mana halaman login ada di controller welcome. Sambil mengirimkan pesan melalui url untuk membuat pesan notifikasi bahwa login gagal.

Jika pesannya adalah logout, maka akan di tampilkan “anda telah logout“. Jika pesannya adalah “belumlogin”. Maka akan di tampilkan notifikasi “silahkan login dulu”. Sampai di sini, sistem login belum rampung 100%, karena belum menyiapkan halaman admin. Oleh sebab itu kita akan membuat dan menyiapkan halaman admin dulu. Baru setelah itu kita coba apakah login sudah berjalan sebagai mana yang kita perintahkan atau belum.

4.2 Membuat halaman Admin dan Logout

Setelah berhasil membuat login, selanjutnya kita akan membuat logout. Atau link keluar dari sistem. Perhatikan pada menu logout pada view header.php. kita telah membuat link menu logout.

<li><a href="<?php echo base_url().'admin/logout'; ?>"><span class="glyphicon glyphicon-log-out"></span>Logout</a></li>

20

Link logout di atas, mengarahkan ke function/method logout di controller admin.

Oleh karena itu kita akan membuat function logout pada controller admin.

function logout(){

$this->session->sess_destroy();

redirect(base_url().'welcome?pesan=logout');

}

Syntax $this->session->sess_destroy(); merupakan fungsi codeigniter untuk menghapus semua session. Setelah menghapus session, kita alihkan halaman ke halaman login. Sekarang coba klik pada menu logtout. Maka halaman akan dialihkan kembali ke halaman login.

4.2.1 Membuat halaman ganti password

Selanjutnya akan dibuat sebuah fitur untuk admin, yaitu fitur untuk mengganti password. Perhatikan pada menu ganti password di header admin. Kita telah membuatkan link menu untuk mengganti password. Dimana link tersebut sudah kita arahkan ke function ganti_password di controller admin.

<li><a href="<?php echo base_url().'admin/ganti_password' ?>"><i class="glyphicon glyphicon-lock"></i>Ganti Password</a></li>

Disini kita akan membuat sebuah function baru di controller admin, yaitu function ganti_password(). Tambahkan function/syntax berikut pada controller admin.php.

Application/controller/Admin.php

function ganti_password(){

$this->load->view('admin/header');

$this->load->view('admin/ganti_password');

$this->load->view('admin/footer');

}

Seperti yang terlihat pada function di atas, kita menampilkan view header.php, view ganti_password.php dan view footer.php. pada view ganti_password.php akan kita buat form untuk mengganti password. Selanjutnya kita buat file view baru dengan nama ganti_password.php. dalam folder admin dalam view.

Application/view/admin/ganti_password.php

<div class="page-header">

<h3>Ganti Password</h3>

</div>

<div class="row">

<div class="col-md-6 col-md-offset-3">

<?php

if(isset($_GET['pesan'])){

if($_GET['pesan']=="berhasil"){

21

echo "<div class='alert alert-success'>Password Berhasil diganti.</div>";

} } ?>

<form action="<?php echo base_url().'admin/ganti_password_act' ?>"

method="post">

<div class="form-group">

<label>Password Baru</label>

<input type="password" class="form-control" name="pass_baru">

<?php echo form_error('pass_baru'); ?>

</div>

<div class="form-group">

<label>Ulangi Password Baru</label>

<input type="password" class="form-control" name="ulang_pass">

<?php echo form_error('ulang_pass'); ?>

</div>

<div class="form-group">

<input class="btn btn-primary btn-sm" type="submit" value="Simpan">

</div>

</form>

</div>

</div>

Aksi dari form ini akan di jalankan pada function ganti_password_act pada controller admin.

<form action="<?php echo base_url().'admin/ganti_password_act' ?>"

method="post">

Selanjutnya buat function ganti_password_act() pada controller admin.

Application/controllers/Admin.php

<?php

defined('BASEPATH') or exit('No direct script access allowed');

class Admin extends CI_Controller {

function __construct() {

parent::__construct();

//cek Login

if($this->session->userdata('status') != "login"){

redirect(base_url().'welcome?pesan=belumlogin');

} }

function index(){

$data['transaksi'] = $this->db->query("select * from peminjaman order by id_pinjam desc limit 10")->result();

$data['anggota'] = $this->db->query("select * from anggota order by id_anggota desc limit 10")->result();

22

$data['buku'] = $this->db->query("select * from buku order by id_buku desc limit 10")->result();

if($this->session->userdata('posisi')!='admin'){

redirect(base_url('member'));

}else{

$this->load->view('admin/header');

$this->load->view('admin/index',$data);

$this->load->view('admin/footer');

} }

function logout(){

$this->session->sess_destroy();

redirect(base_url().'welcome?pesan=logout');

}

function ganti_password(){

$this->load->view('admin/header');

$this->load->view('admin/ganti_password');

$this->load->view('admin/footer');

}

function ganti_password_act(){

$pass_baru = $this->input->post('pass_baru');

$ulang_pass = $this->input->post('ulang_pass');

$this->form_validation->set_rules('pass_baru','Password Baru','required|matches[ulang_pass]');

$this->form_validation->set_rules('ulang_pass','Ulangi Password Baru','required');

if($this->form_validation->run() != false){

$data = array('password' =>md5($pass_baru));

$w = array('id_admin' => $this->session->userdata('id'));

$this->M_perpus->update_data($w,$data,'admin');

redirect(base_url().'admin/ganti_password?pesan=berhasil');

}else{

$this->load->view('admin/header');

$this->load->view('admin/ganti_password');

$this->load->view('admin/footer');

} }

function buku(){

$data

['anggota'] = $this->m_perpus->get_data('anggota')->result();

$this->load->view('admin/header');

$this->load->view('admin/buku',$data);

$this->load->view('admin/footer');

}

function tambah_buku(){

$data['kategori'] = $this->M_perpus->get_data('kategori')->result();

$this->load->view('admin/header');

$this->load->view('admin/tambahbuku',$data);

$this->load->view('admin/footer');

}

function tambah_buku_act(){

$tgl_input = date('Y-m-d');

$id_kategori = $this->input->post('id_kategori');

$judul = $this->input->post('judul_buku');

23

$pengarang = $this->input->post('pengarang');

$penerbit = $this->input->post('penerbit');

$thn_terbit = $this->input->post('thn_terbit');

$isbn = $this->input->post('isbn');

$jumlah_buku = $this->input->post('jumlah_buku');

$lokasi = $this->input->post('lokasi');

$status = $this->input->post('status');

$this->form_validation->set_rules('id_kategori','Kategori','required');

$this->form_validation->set_rules('judul_buku','Judul Buku','required');

$this->form_validation->set_rules('status','Status Buku','required');

if($this->form_validation->run() != false){

//configurasi upload Gambar

$config['upload_path'] = './assets/upload/';

$config['allowed_types'] = 'jpg|png|jpeg';

$config['max_size'] = '2048';

$config['file_name'] = 'gambar'.time();

$this->load->library('upload',$config);

if($this->upload->do_upload('foto')){

$this->M_perpus->delete_data($where,'buku');

redirect(base_url().'admin/buku');

}

function edit_buku($id){

$where = array('id_buku' =>$id);

$data['buku'] = $this->db->query("select * from buku B, kategori K where B.id_kategori=K.id_kategori and B.id_buku='$id'")->result();

$data['kategori'] =$this->M_perpus->get_data('kategori')->result();

$this->load->view('admin/header');

$this->load->view('admin/editbuku',$data);

24

$this->load->view('admin/footer');

}

function update_buku(){

$id = $this->input->post('id');

$id_kategori = $this->input->post('id_kategori');

$judul = $this->input->post('judul_buku');

$pengarang = $this->input->post('pengarang');

$penerbit = $this->input->post('penerbit');

$thn_terbit = $this->input->post('thn_terbit');

$isbn = $this->input->post('isbn');

$jumlah_buku = $this->input->post('jumlah_buku');

$lokasi = $this->input->post('lokasi');

$status = $this->input->post('status');

$this->form_validation->set_rules('id_kategori','ID Kategori','required');

$this->form_validation->set_rules('judul_buku','Judul Buku','required|min_length[4]');

$this->form_validation->set_rules('pengarang','Pengarang','required|min_length[4]');

$this->form_validation->set_rules('penerbit','Penerbit','required|min_length[4]');

$this->form_validation->set_rules('thn_terbit','Tahun Terbit','required|min_length[4]');

$this->form_validation->set_rules('isbn','Nomor ISBN','required|numeric');

$this->form_validation->set_rules('jumlah_buku','Jumlah Buku','required|numeric');

$this->form_validation->set_rules('lokasi','Lokasi Buku','required|min_length[4]');

$this->form_validation->set_rules('status','Status Buku','required');

if($this->form_validation->run() != false){

$config['upload_path'] = './assets/upload/';

25

$this->M_perpus->update_data('buku',$data,$where);

} else{

$this->M_perpus->update_data('buku',$data,$where);

}

$this->M_perpus->update_data('buku',$data,$where);

redirect(base_url().'admin/buku');

} else{

$where = array('id_buku' =>$id);

$data['buku'] = $this->db->query("select * from buku B, kategori K where B.id_kategori=K.id_kategori and

B.id_buku='$id'")->result();

$data['anggota'] = $this->M_perpus->get_data('anggota')->result();

$this->load->view('admin/header');

$this->load->view('admin/anggota',$data);

$this->load->view('admin/footer');

}

function tambah_anggota(){

$this->load->view('admin/header');

$this->load->view('admin/tambahanggota');

$this->load->view('admin/footer');

}

function tambah_anggota_act(){

$nama_anggota = $this->input->post('nama_anggota');

$gender = $this->input->post('gender');

$no_telp = $this->input->post('no_telp');

$alamat = $this->input->post('alamat');

$email = $this->input->post('email');

$password = $this->input->post('password');

$this->form_validation->set_rules('nama_anggota','Nama Anggota','required');

$this->form_validation->set_rules('no_telp','No.Telpon','required');

$this->form_validation->set_rules('alamat','Alamat','required');

$this->form_validation->set_rules('email','Email','required');

$this->form_validation->set_rules('password','Password','required');

if($this->form_validation->run() != false){

$data = array(

$this->M_perpus->insert_data($data,'anggota');

redirect(base_url().'admin/anggota');

}else{

$this->load->view('admin/header');

$this->load->view('admin/tambahanggota');

$this->load->view('admin/footer');

26

} }

function edit_anggota($id){

$where = array('id_anggota' =>$id);

$data['anggota'] = $this->db->query("select * from anggota where id_anggota='$id'")->result();

$this->load->view('admin/header');

$this->load->view('admin/editanggota',$data);

$this->load->view('admin/footer');

}

function update_anggota(){

$id = $this->input->post('id');

$nama_anggota = $this->input->post('nama_anggota');

$gender = $this->input->post('gender');

$this->form_validation->set_rules('nama_anggota','Nama Anggota','required');

Dokumen terkait