if (!$this->session->userdata('level')=='Admin') { redirect('login');
}else{
$data['admin'] = $this->m_user->selectAdmin()->row();
$data['dataPetugas'] = $this->m_user->getPetugas()->result();
$this->load->view('admin/header',$data);
$this->load->view('admin/dataPetugas');
$this->load->view('admin/footer');
} }
8.8 Mengubah Data Petugas
Mengubah data petugas digunakan ketika petugas melakukan ubah passwordnya.
8.8.1 Model
Dalam pembuatan tampilan mengubah petugas menggunakan Model M_user.php sehingga, hanya menambah script pada model M_user.php untuk melakukan ubah data petugas ke database, script untuk mengubah user petugas sebgai berikut:
function selectPetugas(){
$email = $this->session->userdata('email');
$this->db->select('*');
$this->db->from('user');
$this->db->where('email', $email);
$query = $this->db->get();
return $query;
40 }
function ubahPetugas(){
$email = $this->input->post('email');
$password = $this->input->post('password');
$this->db->set('password', md5($password));
$this->db->where('email', $email);
$this->db->update('user');
}
Penjelasan : $this->db->update('user'); untuk mengubah data ke database
8.8.2 View
Dalam tampilan ini membutuhkan file header.php, footer.php pada folder view petugas yang sudah dibuat sebelumnya dan membutuhkan file isi yaitu file profil.php. Buatlah file profil.php pada direktori application/views/profil/. Berikut isi script pada profil.php :
<div class="container">
<div class="row">
<div class="col s12">
<div class="card-panel">
<!-- alert -->
<?php if($this->session->flashdata('info')){?>
<div class="row" id="alert_box">
<div class="col s12 m12">
<div class="card green darken-1">
<div class="row">
<div class="col s12 m10">
<div class="card-content white-text center">
<p><?php echo $this->session->flashdata('info')?></p>
</div>
</div>
<div class="col s12 m2">
<i class="mdi-navigation-close icon_style" id="alert_close" aria-hidden="true"></i>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
<!-- End Alert -->
<h4 class="header2">Ubah Profil</h4>
<div class="row ">
<form class="col s12" method="post" enctype="multipart/form-data"
action="<?php echo base_url();?>petugas/profil">
<div class="row">
41 <div class="input-field col s12 ">
<input type="text" value="<?= $petugas->nama?>" name="nama"
readonly>
<label class="active">Nama</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input type="email" value="<?= $petugas->email?>" name="email"
readonly>
<label class="active">Email</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input type="password" name="password" required>
<label>Password</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<button class="btn blue waves-effect waves-light right" type="submit"
name="action">Ubah
<i class="mdi-content-send right"></i>
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
Penejelasan Hasil
42 8.8.3 Controller
public function profil() {
$data['petugas'] = $this->m_user->selectPetugas()->row();
if($this->session->userdata('level')!='Petugas') { redirect('login');
}else{
if($this->input->method()=='post'){
$this->m_user->ubahPetugas();
$this->session->set_flashdata('info', 'Data berhasil diubah');
redirect('petugas/profil');
}else{
$this->load->view('petugas/header');
$this->load->view('petugas/profil',$data);
$this->load->view('petugas/footer');
} } }
43 8.9 Menambah Data Barang
Menambah data barang dilakukan oleh petugas. Untuk penambahan data barang berupa idBarang, Foto, Nama, Harga, dan Stok.
8.9.1 Model
Model yang digunakan adalah M_barang.php yang sudah dibuat ketika membuat dashbord Admin. Sehingga ada penambahan script pada model M_barang.php sebagai berikut:
function getkodeunik() {
$q = $this->db->query("SELECT MAX(RIGHT(idBarang,2)) AS idmax FROM barang");
$kd = ""; //kode awal
if($q->num_rows()>0){ //jika data ada foreach($q->result() as $k){
$tmp = ((int)$k->idmax)+1; //string kode diset ke integer dan ditambahkan 1 dari kode terakhir
$kd = sprintf("%02s",$tmp); //kode ambil 4 karakter terakhir }
}else{ //jika data kosong diset ke kode awal $kd = "01";
}
$kar = "B"; //karakter depan kodenya
//gabungkan string dengan kode yang telah dibuat tadi return $kar.$kd;
}
function tambah() {
$id = $this->input->post('id');
$nama = $this->input->post('namaBarang');
$harga = $this->input->post('harga');
$stok = $this->input->post('stok');
$foto = $_FILES['foto']['name'];
$this->load->library('upload');
$config['upload_path'] = './assets/gambar'; //path folder
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
$config['file_name'] = $nama; //nama yang terupload nantinya $this->upload->initialize($config);
if($_FILES['foto']['name']) {
if ($this->upload->do_upload('foto')) {
$gbr = $this->upload->data();
define( 'WP_MEMORY_LIMIT', '256M' );
$source_url=$config['upload_path'].'/'.$gbr['file_name'];
$image = imagecreatefromjpeg($source_url);
imagejpeg($image, $config['upload_path'].'/'.$gbr['file_name'], 50);
$data = array(
'idBarang' =>$id,
44 'namaBarang' =>$nama,
'harga' =>$harga, 'stok' =>$stok,
'foto' =>$gbr['file_name']
);
} }
$this->db->insert('barang',$data);
}
Penejelasan sebagai beriukut
- $this->load->library('upload'); untuk memanggil library upload file, yang merupakan library bawaan dari CI
- $config['upload_path'] = './assets/gambar'; untuk penyimpanan Foto pada folder
- $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; hanya file gambar yang dapat di upload
- $config['file_name'] = $nama; nama yang terupload nantinya
- $this->upload->initialize($config); melakukan konfigurasi ke libraray upload - $this->upload->do_upload('foto'); melakukan upload foto yang name pada
form tambah barang berupa foto. (<input type=”file” name=”foto”>)
- $this->upload->data(); sudah terupload
- define( 'WP_MEMORY_LIMIT', '256M' ); File yang besar pun dapat melakukan upload
- $image = imagecreatefromjpeg($source_url); konvert file ke jpg
- imagejpeg($image, $config['upload_path'].'/'.$gbr['file_name'], 50);
untuk mengurangi kulitas gambar sebesar 50 %
8.9.2 View
Dalam tampilan ini membutuhkan file header.php, footer.php pada folder view petugas yang sudah dibuat sebelumnya dan membutuhkan file isi yaitu file tambahBarang.php. Buatlah file tambahBarang.php pada direktori application/views/petugas/.
<div class="container">
<div class="row">
<div class="col s12 ">
<div class="card-panel">
<!-- alert -->
<?php if($this->session->flashdata('info')){?>
<div class="row" id="alert_box">
<div class="col s12 m12">
<div class="card green darken-1">
<div class="row">
<div class="col s12 m10">
<div class="card-content white-text center">
<p><?php echo $this->session->flashdata('info')?></p>
</div>
</div>
45
46 <div class="input-field col s12">
<button class="btn blue waves-effect waves-light right" type="submit"
name="action">Ubah
<i class="mdi-content-send right"></i>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
Penjelasan
- <input type="file" accept="image/jpeg,image/png,image/JPG" type="file"
title="Click untuk Foto" name="foto" /> ketika mau upload file melalui direktori komputer, hanya berupa gambar saja
Sehingga tampilan menambah data barang sebagai berikut :
8.9.3 Controller
Tahap selanjutnya membuat controller mengenai barang. Buatlah file controller
47 Barang.php di direktori /apllication/controllers dan script controller untuk file Barang.php sebagai berikut :
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class barang extends CI_Controller { public function __construct(){
parent::__construct();
$this->load->model(array('m_barang','m_user'));
date_default_timezone_set('Asia/Jakarta');
}
function getkodeunik() {
$q = $this->db->query("SELECT MAX(RIGHT(idBarang,2)) AS idmax FROM barang");
$kd = ""; //kode awal
if($q->num_rows()>0){ //jika data ada foreach($q->result() as $k){
$tmp = ((int)$k->idmax)+1; //string kode diset ke integer dan ditambahkan 1 dari kode terakhir
$kd = sprintf("%02s",$tmp); //kode ambil 4 karakter terakhir }
}else{ //jika data kosong diset ke kode awal $kd = "01";
}
$kar = "B"; //karakter depan kodenya
//gabungkan string dengan kode yang telah dibuat tadi return $kar.$kd;
}
function tambah() {
if(!$this->session->userdata('level')=='Petugas') { redirect('login');
}else{
if ($this->input->method()=='post') { $this->m_barang->tambah();
$this->session->set_flashdata('info', 'Data berhasil ditambah');
redirect('barang/tambah');
}else{
$data['kodeunik'] = $this->m_barang->getkodeunik();
$this->load->view('petugas/header');
$this->load->view('petugas/tambahBarang',$data);
$this->load->view('petugas/footer');
} } }
48 }
?>
8.10 Melihat Data Barang Untuk Petugas
Melihat data barang untuk petugas digunakan ketika petugas ingin melihat barang apa saja yang tersedia.
8.10.1 Model
Model yang digunakan adalah M_barang.php yang sudah dibuat ketika membuat dashbord Admin. Sehingga ada penambahan script pada model M_barang.php sebagai berikut:
function getBarang(){
$this->db->select('*');
$this->db->from('barang');
$query = $this->db->get();
return $query;
}
8.10.2 View
Dalam tampilan ini membutuhkan file header.php, footer.php pada folder view petugas yang sudah dibuat sebelumnya dan membutuhkan file isi yaitu file dataBarang.php untuk melihat data barang. Buatlah file dataBarang.php pada direktori application/views/petugas/.
<section id="content">
<div class="container">
<div class="section">
<div class="divider"></div>
<div id="table-datatables">
<h4 class="header">Data Barang</h4>
<hr>
<div class="row">
<!-- alert -->
<?php if($this->session->flashdata('info')){?>
<div class="row" id="alert_box">
<div class="col s12 m12">
<div class="card green darken-1">
<div class="row">
<div class="col s12 m10">
<div class="card-content white-text center">
<p><?php echo $this->session->flashdata('info')?></p>
</div>
</div>
<div class="col s12 m2">
<i class="mdi-navigation-close icon_style" id="alert_close" aria-hidden="true"></i>
49
50 8.10.3 Controller
Tambahkan script dibawah ini pada file controller Barang.php : public function barang()
{
if(!$this->session->userdata('level')=='Petugas') { redirect('login');
}else{
$data['dataBarang'] = $this->m_barang->getBarang()->result();
$this->load->view('petugas/header');
$this->load->view('petugas/dataBarang',$data);
$this->load->view('petugas/footer');
} }
8.11 Melihat Data Barang untuk Admin
Melihat data barang untuk petugas digunakan ketika petugas ingin melihat barang apa saja yang tersedia.
8.11.1 Model
Model yang digunakan adalah M_barang.php yang sudah dibuat ketika membuat
51 dashbord Admin. Fungsi yang digunakan adalah getBarang();.
8.11.2 View
Dalam tampilan ini membutuhkan file header.php, footer.php pada folder view admin yang sudah dibuat sebelumnya dan membutuhkan file isi yaitu file dataBarang.php untuk melihat data barang. Buatlah file dataBarang.php pada direktori application/views/admin/.
<section id="content">
<div class="container">
<div class="section">
<div class="divider"></div>
<!--DataTables example-->
<div id="table-datatables">
<h4 class="header">Data Barang</h4>
<hr>
<div class="row">
<!-- alert -->
<?php if($this->session->flashdata('info')){?>
<div class="row" id="alert_box">
<div class="col s12 m12">
<div class="card green darken-1">
<div class="row">
<div class="col s12 m10">
<div class="card-content white-text center">
<p><?php echo $this->session->flashdata('info')?></p>
</div>
</div>
<div class="col s12 m2">
<i class="mdi-content-clear icon_style" id="alert_close" aria-hidden="true"></i>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
<!-- End Alert -->
<div class="col s12 m8 l11">
<a href="<?php echo base_url();?>barang/export" class="btn cyan waves-effect waves-light">Excel <i class="mdi-action-print right"></i></a>
<a class="btn waves-effect waves-light indigo" href="<?=
base_url();?>barang/exportPDF">PDF<i class="mdi-action-print right"></i></a>
<table id="data-table-simple" class="responsive-table display"
cellspacing="0">
<thead>
<tr>
<th>ID Barang</th>
52 <th>Foto</th>
<th>Nama Barang</th>
<th>Harga</th>
<th>Stok</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php
foreach ($dataBarang as $barang) { ?>
<tr>
<td><?= $barang->idBarang ?></td>
<td><img src="<?php echo base_url('assets/gambar/'.$barang->foto); ?>"
width="100" height="100"> </td>
<td><?= $barang->namaBarang ?></td>
<td>Rp <?= number_format( $barang->harga ,0,',','.')?></td>
<td><?= $barang->stok ?></td>
<td>
<a href="<?php echo base_url(); ?>barang/ubah/<?= $barang->idBarang
?>" rel="tooltip" title="Ubah" style="color:purple"><i class="mdi-editor-border-color"></i></a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
<br>
</div>
</div>
</section>
Hasil Tampilan
53 8.11.3 Controller
Tambahkan script dibawah ini pada file controller Barang.php : function dataBarang()
{
if(!$this->session->userdata('level')=='Admin') { redirect('login');
}else{
$data['admin'] = $this->m_user->selectAdmin()->row();
$data['dataBarang'] = $this->m_barang->getBarang()->result();
$this->load->view('admin/header',$data);
$this->load->view('admin/dataBarang');
$this->load->view('admin/footer');
} }
8.12 Mengubah Data Barang Untuk Petugas
Mengubah data barang untuk petugas digunakan ketika petugas melakukan pengubahan data pada barang
8.12.1 Model
Model yang digunakan adalah M_barang.php yang sudah dibuat. Sehingga ada penambahan script pada model M_barang.php sebagai berikut:
function ubahBarang($idBarang) {
$nama = $this->input->post('namaBarang');
$harga = $this->input->post('harga');
$stok = $this->input->post('stok');
54
$this->load->library('upload');
$config['upload_path'] = './assets/gambar'; //path folder
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
$config['file_name'] = $nama; //nama yang terupload nantinya $this->upload->initialize($config);
$foto = $this->m_barang->selectBarang($idBarang)->row();
if($_FILES['foto']['name']) {
unlink("./assets/gambar/".$foto->foto);
if ($this->upload->do_upload('foto')) {
$gbr = $this->upload->data();
define( 'WP_MEMORY_LIMIT', '256M' );
$source_url=$config['upload_path'].'/'.$gbr['file_name'];
$image = imagecreatefromjpeg($source_url);
imagejpeg($image, $config['upload_path'].'/'.$gbr['file_name'], 50);
$input = array(
'namaBarang' =>$nama, 'harga' =>$harga, 'stok' =>$stok,
'foto' =>$gbr['file_name']
);
} }else{
rename("./assets/gambar/".$foto->foto,"./assets/gambar/".$config['file_name'].'.jpg');
$input = array(
'namaBarang' =>$nama, 'harga' =>$harga, 'stok' =>$stok,
'foto' =>$config['file_name'].'.jpg' );
}
$this->db->set($input);
$this->db->where('idBarang', $idBarang);
$this->db->update('barang');
} Penjelasan
- unlink("./assets/gambar/".$foto->foto); untuk menghapus file yang berada di folder gambar
- rename("./assets/gambar/".$foto->foto,"./assets/gambar/".$config['file_name'].'.jpg');
untuk mengubah nama foto.
55 8.12.2 View
Dalam tampilan ini membutuhkan file header.php, footer.php pada folder view petugas yang sudah dibuat sebelumnya dan membutuhkan file isi yaitu file ubahBarang.php untuk mengubah data barang. Buatlah file ubahBarang.php pada direktori application/views/petugas/
<section>
<div class="container">
<div class="row">
<div class="col s12 ">
<div class="card-panel">
<!-- alert -->
<?php if($this->session->flashdata('info')){?>
<div class="row" id="alert_box">
<div class="col s12 m12">
<div class="card green darken-1">
<div class="row">
<div class="col s12 m10">
<div class="card-content white-text center">
<p><?php echo $this->session->flashdata('info')?></p>
</div>
</div>
<div class="col s12 m2">
<i class="mdi-navigation-close icon_style" id="alert_close" aria-hidden="true"></i>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
<!-- End Alert -->
<h4 class="header2">Ubah Barang</h4>
<div class="row">
<form class="col s12" method="post" enctype="multipart/form-data"
action="<?php echo base_url();?>barang/ubahBarang/<?= $dataBarang->idBarang; ?>">
<div class="row">
<div class="input-field col s1">
<input id="id" type="text" name="id" value="<?= $dataBarang->idBarang;
?>" readonly>
<label class="active" for="id">ID</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input id="namaBarang" type="text" name="namaBarang" value="<?=
$dataBarang->namaBarang; ?>">
<label class="active" for="namaBarang">Nama Barang</label>
56 </div>
</div>
<div class="row">
<div class="input-field col s8">
<input id="harga" type="text" name="harga" value="<?=
$dataBarang->harga; ?>">
<label class="active" for="harga">Harga</label>
</div>
</div>
<div class="row">
<div class="input-field col s1">
<input id="stok" type="text" name="stok" value="<?= $dataBarang->stok;
?>">
<label class="active" for="stok">Stok</label>
</div>
</div>
<div class="row">
<label>Foto</label>
<div class="fileupload">
<input type="file" onchange="document.getElementById('image-preview').src=window.URL.createObjectURL(this.files[0])"
accept="image/jpeg,image/png,image/JPG" type="file" title="Click untuk Foto"
name="foto" value="<?php echo set_value('foto')?>"/>
<br>
<br>
<img height="200px" width="200" src='<?php echo base_url();
?>assets/gambar/<?=$dataBarang->foto; ?>' id='image-preview' alt='your pamflet' class='img-responsive'>
</div>
<div class="row">
<div class="input-field col s12">
<button class="btn cyan waves-effect waves-light right" type="submit"
name="action">Ubah
<i class="mdi-content-send right"></i>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
Penejelasan Hasil
57 8.12.3 Controller
Tambahkan script dibawah ini pada file controller Barang.php : public function ubahBarang($idBarang){
if(!$this->session->userdata('level')=='Admin') { redirect('login');
}else{
if ($this->input->method()=='post') {
$this->m_barang->ubahBarang($idBarang);
$this->session->set_flashdata('info', 'Data berhasil diubah');
redirect('barang/barang');
}else{
$data['dataBarang'] = $this->m_barang->selectBarang($idBarang)->row();
$this->load->view('petugas/header');
$this->load->view('petugas/ubahBarang', $data);
$this->load->view('petugas/footer');
} } }
8.13 Mengubah Data Barang Untuk Admin
Mengubah data barang untuk petugas digunakan ketika petugas melakukan pengubahan
58 data pada barang.
8.13.1 Model
Model yang digunakan adalah M_barang.php yang sudah dibuat. Sehingga ada penambahan script pada model M_barang.php sebagai berikut:
function ubah($idBarang){
$nama = $this->input->post('namaBarang');
$harga = $this->input->post('harga');
$data = array(
'namaBarang' =>$nama, 'harga' =>$harga );
$this->db->set($data);
$this->db->where('idBarang', $idBarang);
$this->db->update('barang');
}
8.13.2 View
Dalam tampilan ini membutuhkan file header.php, footer.php pada folder view admin yang sudah dibuat sebelumnya dan membutuhkan file isi yaitu file ubahBarang.php untuk mengubah data barang. Buatlah file ubahBarang.php pada direktori application/views/petugas/
<section id="content">
<div class="container">
<div class="section">
<div class="divider"></div>
<!--Basic Form-->
<div id="basic-form" class="section">
<div id="table-datatables">
<h4 class="header">Ubah Barang</h4>
<hr>
<div class="row">
<div class="col s12 m12 l12">
<div class="col s12 m12 l12">