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

Codeigniter Form Validation dan Form

Assalamualaikum,

Udah hampir jam 23.59. Wkwkwkw Tinggal 10 menit lagi kuy.

Lanjut kepembahasan kita ya, aku mau share kodingan yang digunakan untuk membuat form_validation dengan menggunakan CI atau codeigniter. Form_Validation ini bantuan dari libraries di CI, jadi kita tinggal autoload aja di folder Applicatioan/Cofig/Autoload.php

Nah untuk membuat kodingan seperti ini kita harus mengautoload helper dan libraries

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

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

Habis diautoload, kita mulai buat databasenya. Saya menggunakan database namanya user, jadi jangan lupa ganti databasenya di bagian Application/Config/Database.php

Dibagian bawah itu, database direname dengan nama database yang kita buat di phpmyadmin.

Habis itu kita buat controllernya. Saya memiliki dua Controller, yang pertama Chome untuk halaman depan sebelum si user masuk dan yang kedua Cberanda untuk controller apabila user telah menginputkan datanya.

Download aja yah buanyak nih filenya. Disini saya juga menggunakan template dari hasil praktikum saya.. saya berikan output yang saya dapatkan saja ya untuk disini..

Mau dijelasin mulut luber si ih.. mau upload dari tadi nyoba kok gak bisa yaaa -,-

Mana udah capek nyoba dari 7 jam yang lalu -,- jadi males njelasin atu-atu.. gak tau deh kenapa gak mau diupload semuanya -,-

gak ngerti deh yaa

coba ke link aja yaa… Disini

Sini juga

Nah, kekurangannya itu saat hapus user belum bisa menghapus kedatabasenya juga, Terus waktu login meskipun usernamenya harus sesuai, tapi passwordnya tidak case sensitive artinya meskipun menuliskan huruf besar tetep bisa login padahal passwordnya dengan huruf kecil.

 

Kalau kelebihannya, udah bisa masuk ke database ketika mendaftar, dan bisa mengupdate akun usernya. itu aja sih kayaknya kelebihannya. Wkwkwk udah yaa ngantuk nanti ada doa malam.
Terimakasih sudah membaca tulisan tak penting ini.

Wassalamualaikum wr. wb