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..

Pengalaman TUBES serasa Sidang

Assalamualaikum…

Kabar buruk menimpa saya hari kamis 4 Mei lalu. Kalau dipikir sih memalukan sekaliiii, jangan sampai kalian melakukan seperti yang saya lakukan hari itu. Bukan gak siap menghadapi dosennya, tapi materinya yang belum siap untuk disampaikan. Bukan mau menggunjing, tapi tugas kelompok yang dilanjutkan dari semester dua tersebut emang sudah 80%an saya yang membuat. Memang sih, setiap orang memiliki kelebihan masing-masing. Teman saya itu memang top markotop dibagian seni, tapi untuk belajar kodingan ;'( saya tidak mengerti bagaimana saya mengajaknya belajar lagi. Terlebih, kita satu tempat tinggal dan sewaktu saya mengerjakan tugas kelompok itu sendiri disebuah ruangan khusus dikostan, ada seseorang yang dengan enaknya ngomong ‘Bantuin si X yaaa, kasihan dia gak salah jurusan gak ngerti ngoding.’

bukan maksud apaaaa gitu, kebanyakan hampir semua malah masuk jurusan ini karena dialihkan atau salah presepsi dengan nama jurusannya. Saya pun juga iyaaaa, saya kira lebih banyak manajemen seperti yang ada dibidang saya semasa SMA. Tapi kok ya gituuu yaa sudah lah jalani dan pelajari ajaaah sih.

Sedihnya ituu mau minta tolong ke dia mengerjakan tugas bagian A takut disangka ‘IH TEGA BANGET SIH, NGASIH TUGAS KE DIA. KAN DIA SALJUR’ atau semacamnya ituuu. Tapi setiap ditanyain mau ngerjain bagian mana selalu bilang bebas. Yaudah lupakan masa kelam ituuu…

intinyaaaaaa persiapin matang-matang materi yang bakal kalian siapin. Kalau itu tugas kelompok yaa bagi-bagi aja tugasnyaaa dan jangan pegang sendiiiri. CAPEK!

Apalagi sewaktu ngoding udah disamaain persis sama kodingan di internet gagal, kodingan contoh dosen juga gagal, kodingan temen pun gagal, disituu kepala rasanya mau pecah, otaknya kayak ditusuk jarum dari depan, belakang dan atas. Nangis? udah! tapi makin buat pusing aja ituu.. wkwkwk gak ngertilah kenapa waktu itu juga sampe nangis gara-gara ngoding! cuma karena ngoding ajaaah! wkwkw kelam banget yaaah..

nah, pokoknya karena materi dan aplikasi belum siap nih, kita kena semproot gitu lah. Padahal bagian yang lain dari aplikasi udah bisa, cuma dua bagian yang belum bisa ;'(

Terus buat kalian yang saljur atau gak ngerti ngoding coba-coba aja terus sih, kalau capek yaa istirahat seharian atau semalaman dan freshin itu pikiran… semoga kita semua bisa jadi web development atau programmer yang handal yaaaw. Aamiiin