Aplikasi Sewa Kamar Kost, Admin Kelola Kamar dan Cart

Assalamualaikuum,

Malem ini bakal bagi-bagi kodingan tentang tubes aplikasi yang aku buat nih. Tentunya materi ini gak jauh dari Codeigniter yaaah..

Sewaktu tubes function ini gagal, penyebab gagalnya juga kurang yakin sih antara penyimpanan didatabasenya atau kodingan bagian form validationnya. Kalau menurut orang-orang yang aku tanyain sih gak mungkin form validationnya penyebab masalah, tapi dari dosen bilang gak mungkin juga penyimpanan dari databasenya membuat aplikasi ini error. Setelah dapet petuah yang mengenai dihati, seharian langsung merefleksikan diri alias tidur. wkwkwkwk, tapi bangun-bangun pagi harinya langsung kena penyakit yang dulunya gak pernah dialami sebelumnya re: gara-gara lupa nutup jendela kamar, kena alergi deh. Lah malah bahas penyakit, wkwkwk. Usai bermurung karena petuah dan penyakit, malemnya langsung ngoding lagi. Gila emang -,-. Malem sabtu belum jadi tuh kodingannya masih tetep error, minggu malam waktu diajak kating makan bareng, tiba-tiba dapet ilham untuk kodingan yang akan dijabarkan setelahnya, tapi sempet ketunda sih, mau lan-jalan duluuu.. eh Senin pagi jam 01.00 WIB akhirnya jadiii dan berfungsi dengan semestinyaa..

cus yaaa

pertama siapin codeigniter 3.1.3 atau boleh yang terbaru 3.1.4, untuk percobaan setelah presentasi tubes aku download codeigniter baru 3.14 dan pindahin semua controller, model, dan view dari codeigniter 3.1.3 ke codeigniter 3.1.4. Jangan lupa folder codeigniter yang baru disimpan di localhost/xampp/ yaaah, terus jangan lupa rename jugaaa.. nih kayak ginii isi foldernya.

folder

oh iyaa, jangan lupa buat file .htaccess yang disimpan setara dengan folder application, kayak diatas ituu. Isinya bisa dilihat di user_guidenyaa cari aja remove index.php.

Habis itu kita mengautoloadkan beberapa helper dan library yang akan kita gunakan dalam aplikasi ini yaah. Kita bisa mengautoloadkannya di folder application/config/autoload.php. Bagian library kita isi sesuai berikut ini.

$autoload[‘libraries’] = array(‘session’,’cart’,’upload’,’pagination’,’form_validation’,’database’);

Lalu bagian helper kita isi dengan yang seperti dibawah.

$autoload[‘helper’] = array(‘url’,’form’,’file’,’html’,’date’);

Nah, untuk database apakah perlu dishare semuanya disini? download aja disini yah databasenya.  Jangan lupa rename jadi tubes.sql ajah, terus buat databasenya di xampp dengan nama tubes kemudian import file database tubes.sql itu ajaah. Terus jangan lupa atur databasenya dengan nama root dan database tubes di file application/config/database.php.

Untuk pengaturan router ada di controller Home dan untuk tutorial kita hanya kelola kamar bagian admin.

Habis itu buat controller dengan nama kelolaKamar.php yang disimpan dalam application/controller.

<?php defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
class kelolaKamar extends CI_Controller{

function __construct(){
parent::__construct();
if($this->session->userdata(‘status’) != “pemilik”){
redirect(base_url(“login”));
}
$this->load->helper(array(‘form’,’url’));
$this->load->model(‘billing_model’);
}
function tampilKamar(){
$config[‘base_url’] = ‘http://localhost/semangat/kelolaKamar/tampilKamar/’;
$config[‘total_rows’] = $this->billing_model->num_rows();
$config[‘per_page’] = 5;
$from = $this->uri->segment(3);

$this->pagination->initialize($config);
//$data[‘pagelink’] = $this->pagination->create_links();

$data[‘kam’] = $this->billing_model->tampil_data_kamar($config[‘per_page’],$from);

$this->load->view(‘siibuk/sidebar’,$data);
$this->load->view(‘siibuk/navbar’,$data);
$this->load->view(‘siibuk/tampil_kamar’,$data);
}
function edit($noKamar){
$data[‘kam’] = $this->billing_model->get_kamar_by($noKamar);
$this->load->view(‘siibuk/sidebar’);
$this->load->view(‘siibuk/navbar’);
$this->load->view(‘siibuk/edit_kamar’,$data);
}
function edit_data(){
$noKamar = $this->input->post(‘noKamar’);

$config[‘upload_path’] = ‘./images/’;
$config[‘allowed_types’] = ‘gif|jpg|png’;
$config[‘max_size’] = 1000;
$config[‘max_width’] = 1024;
$config[‘max_height’] = 768;
$this->upload->initialize($config);
//$this->load->library(‘upload’, $config);//

if ( ! $this->upload->do_upload(‘gambar’)) {
$error = array(‘error’ => $this->upload->display_errors());
$this->load->view(‘siibuk/sidebar’, $error);
$this->load->view(‘siibuk/navbar’,$error);
$this->load->view(‘siibuk/edit_kamar’, $error);
}else {
$masuk = array(
‘noKamar’ => $this->input->post(‘noKamar’),
‘deskripsi’ => $this->input->post(‘deskripsi’),
‘harga’ => $this->input->post(‘harga’),
‘gambar’ => $this->upload->data(‘file_name’)
);
$this->billing_model->edit_data_kamar($masuk, $noKamar);
$config[‘base_url’] = ‘http://localhost/semangat/kelolaKamar/tampilKamar/’;
$config[‘total_rows’] = $this->billing_model->num_rows();
$config[‘per_page’] = 5;
$from = $this->uri->segment(3);

$this->pagination->initialize($config);
//$data[‘pagelink’] = $this->pagination->create_links();

$data[‘kam’] = $this->billing_model->tampil_data_kamar($config[‘per_page’],$from);

$this->load->view(‘siibuk/sidebar’,$data);
$this->load->view(‘siibuk/navbar’,$data);
$this->load->view(‘siibuk/tampil_kamar’,$data);
}
}

function tambah(){
$this->load->view(‘siibuk/sidebar’);
$this->load->view(‘siibuk/navbar’);
$this->load->view(‘siibuk/tambah_kamar’);
}

function tambahKamar(){
$config[‘upload_path’] = ‘./images/’;
$config[‘allowed_types’] = ‘gif|jpg|png’;
$config[‘max_size’] = 1000;
$config[‘max_width’] = 1024;
$config[‘max_height’] = 768;
$this->upload->initialize($config);
//$this->load->library(‘upload’, $config);//

if ( ! $this->upload->do_upload(‘gambar’)) {
$error = array(‘error’ => $this->upload->display_errors());
$this->load->view(‘siibuk/sidebar’, $error);
$this->load->view(‘siibuk/navbar’,$error);
$this->load->view(‘siibuk/tambah_kamar’, $error);
}
else {
$masuk = array(
‘noKamar’ => $this->input->post(‘noKamar’),
‘deskripsi’ => $this->input->post(‘deskripsi’),
‘harga’ => $this->input->post(‘harga’),
‘gambar’ => $this->upload->data(‘file_name’)
);
$this->billing_model->insertData($masuk);
$config[‘base_url’] = ‘http://localhost/semangat/kelolaKamar/tampilKamar/’;
$config[‘total_rows’] = $this->billing_model->num_rows();
$config[‘per_page’] = 5;
$from = $this->uri->segment(3);

$this->pagination->initialize($config);
//$data[‘pagelink’] = $this->pagination->create_links();

$data[‘kam’] = $this->billing_model->tampil_data_kamar($config[‘per_page’],$from);

$this->load->view(‘siibuk/sidebar’,$data);
$this->load->view(‘siibuk/navbar’,$data);
$this->load->view(‘siibuk/tampil_kamar’,$data);
}
}
function hapusKamar(){
$noKamar = $this->uri->segment(3);
$this->billing_model->hapusKamar($noKamar);
}
}

Nah dalam controller kelolaKamar terdapat function construct. Dalam function tersebut ada pengecekan apabila status ketika login adalah pemilik, maka kegiatan dalam controller kelolaKamar dapat dilakukan, namun apabila tidak sesuai maka akan mengarahkan web pada perintah login. Masih dibagian construct kita load kembali helper form dan url, ini boleh dilakukan atau tidak. Bebas.

Untuk detail penjelasan bisa Chat saya atau bisa dibaca 😀

Lanjut ke bagian Viewnya yah.. View tampil_kamar aku simpan dalam folder view/siibuk/tampil_kamar.php

<?php defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);?>
<html>
<head>
<title>Kelola Kamar Kost</title>
<meta content=’width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no’ name=’viewport’>
<!– Bootstrap 3.3.2 –>
<link href=”<?php echo base_url(‘asset/css/css/style.css’) ?>” rel=”stylesheet” type=”text/css” />
</head>
<body>
<h3 align=”center”>Kelola Kamar Kost</h3>
<a href=”<?php echo base_url(); ?>kelolaKamar/tambah”>Tambah</a>
<!–<span align=”right”>
<button type=”submit” class=”btn btn-primary btn-block btn-flat” value=”<?php echo base_url() ?>kelolaKamar/tambahKamar”>Tambah</button>
</span> –>
<table align=”center”>
<thead>
<th>No Kamar</th>
<th>Deskripsi</th>
<th>Harga</th>
<th>Foto</th>
<th>Pengaturan</th>
</thead>
<tbody>
<?php
foreach ($kam as $kamar) {
?>
<tr>
<td>
<?php echo $kamar->noKamar; ?>
</td>
<td>
<?php echo $kamar->deskripsi; ?>
</td>
<td>
<?php echo $kamar->harga; ?>
</td>
<td>
<img src=”<?php echo base_url(); ?>images/<?php echo $kamar->gambar; ?>” width=”200″ height=”200″>
</td>
<td>
<?php
echo anchor(‘kelolaKamar/edit/’.$kamar->noKamar,’Edit’);
echo ” | “;
echo anchor(‘kelolaKamar/hapusKamar/’.$kamar->noKamar,’Hapus’);
?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<div align=”center”>
<?php echo $this->pagination->create_links(); ?>
</div>
</body>
</html>

Kalau sudah, lanjut ke bagian view tambah_kamar.php simpan di view/siibuk/tambah_kamar.php

<html>
<?php defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);?>
<?php
echo $this->session->flashdata(‘msg’);
?>
<html>
<head>
<title>Tambah Kamar</title>
<link href=”<?php echo base_url(‘asset/css/css/style.css’) ?>” rel=”stylesheet” type=”text/css” />
</head>
<body>
<?php echo form_open_multipart(‘kelolaKamar/tambahKamar’);?>
<h3>TAMBAH KAMAR</h3>
<table border=”1″>
<tr>
<td>No Kamar</td>
<td>:</td>
<td><input type=”text” name=”noKamar” value=”<?php echo set_value(‘noKamar’);; ?>” placeholder=”masukan nomor kamar”></td>
</tr>
<tr>
<td>Deskripsi</td>
<td>:</td>
<td><input type=”text” name=”deskripsi” value=”<?php echo set_value(‘deskripsi’); ?>” placeholder=”masukan deskripsi”></td>
</tr>
<tr>
<td>Harga</td>
<td>:</td>
<td><input type=”text” name=”harga” value=”<?php echo set_value(‘harga’); ?>” placeholder=”masukan harga”></td>
</tr>
<tr>
<td>Gambar</td>
<td>:</td>
<td><input type=”file” name=”gambar”></td>
</tr>
</table>
<tr>
<td>
<button type=”submit” name=”submit”>Submit</button>
</td>
</tr>
<?php echo form_close() ?>
</body>
</html>

Lanjut ke view edit_kamar disimpan pada folder view/siibuk/edit_kamar.php

<?php
echo validation_errors();
echo $this->session->flashdata(‘msg’);
?>

<?php echo form_open_multipart(‘kelolaKamar/edit_data’);?>
<link href=”<?php echo base_url(‘asset/css/css/style.css’) ?>” rel=”stylesheet” type=”text/css” />
<form action=”<?= base_url()?>kelolaKamar/edit_data” method=”post” enctype=”multipart/form-data”>
<fieldset>
<legend align=”center”>EDIT KAMAR</legend>
<table align=”center”>
<tr>
<td>No Kamar</td>
<td>: <input type=”text” name=”noKamar” value=”<?= $kam->noKamar; ?>”></td>
</tr>
<tr>
<td>Deskripsi</td>
<td>: <input type=”text” name=”deskripsi” value=”<?= $kam->deskripsi; ?>”></td>
</tr>
<tr>
<td>Harga</td>
<td>: <input type=”text” name=”harga” value=”<?= $kam->harga; ?>”></td>
</tr>
<tr>
<td>Gambar</td>
<td>: <input type=”file” name=”gambar” size=”20″ method=”post” /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;&nbsp;<input type=”submit” name=”submit” value=”Submit”></td>
</tr>
</table>
</fieldset>
</form>

di view tambah_kamar dan edit_kamar terdapat function upload file dengan cara penyimpanan kita membuat folder yang setara dengan application bernama images. Folder tersebut akan menjadi tempat penyimpanan file re: gambar dari proses upload. Sedangkan untuk memasukkan ke dalam database kita harus membuat model billing_model.php yang disimpan dalam folder model/billing_model.php

<?php if (!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);

class Billing_model extends CI_Model {

// Get all details ehich store in “products” table in database.
function insertData($data) {
$this->db->insert(‘kamar’, $data);
return TRUE;
}
public function get_all()
{
$query = $this->db->get(‘kamar’);
return $query->result_array();
}
public function tampil_data_kamar($number, $offset){
$query = $this->db->get(‘kamar’,$number, $offset)->result();
return $query;
}
public function num_rows()
{
return $this->db->get(‘kamar’)->num_rows();
}
public function get_kamar_by($noKamar)
{
$this->db->where(‘noKamar’,$noKamar);
return $this->db->get(‘kamar’)->row();
}

function hapusKamar($noKamar){
$this->db->where(‘noKamar’,$noKamar);
$this->db->delete(‘kamar’);
redirect(‘kelolaKamar/tampilKamar’);
}
function edit_data_kamar($data, $noKamar){
$this->db->where(‘noKamar’,$noKamar);
$this->db->update(‘kamar’,$data);
}
function get_list_data($StartData, $rows, $model, $data_cnt){
$this->db->select(“noKamar, deskripsi, harga, gambar”);
$this->db->from(‘kamar’);
if($model != null){
$this->db->like(‘model’, $model);
}
//$this->db-order_by(‘noKamar’, ‘asc’);
if($data_cnt > 0){
$this->db->limit($rows, $StartData);
}
return $this->db->get()->result();
}
function get_list_data_cnt($no){
$this->db->select(‘Count(*) as cnt’);
$this->db->from(‘kamar’);
if ($no != null){
$this->db->like(‘model’, $no);
}
$this->db->order_by(‘noKamar’, ‘asc’);
}

}

Nah kalau udah, udah deh selesai.. untuk bagian cartnya besok ajaah yaaah. Badan lagi gak enak nih alerginya muncul lagiii.. source code lengkap dikirim seusai pembahasan cartnyaa…

Perlu diperhatiin yah penggunaan helper atau librarynya codeigniter. Karena aku sering salah karena nama yang auto dari helper atau librarynya sering aku ganti gitu, kadang juga masih kurang faham dengan autocorrect atau apalah itu namanya saat menggunakan helper atau library. Contohnya di fungsi

$this->upload->do_upload(‘…’);

$this->upload->data(‘…’);

$this->upload->display_error(‘…’);

yang kayak gitu-gitu udah otomatis, termasuk nanti didalamnya ada file_name, types gitu-gitulah pokoknyaaa…

udaaaah yaaaa bye.. semoga bermanfaat.

Wassalamualaikuuum..

Leave a Reply

Your email address will not be published. Required fields are marked *