Skip to main content
Untuk Tugas kali ini, kami menambah fitur CRUD untuk website CodeIgniter Tokobuah yang terdapat di tutorial www.petanikode.com

Untuk menambahkan fitur CRUD terlebih dahulu membuat database, dapat dibuat konfigurasi di config/database.php, kemudian ubah menjadi seperti ini
 $db['default'] = array(   
    'dsn'   => '',   
    'hostname' => 'localhost',   
    'username' => 'root',   
    'password' => '',   
    'database' => 'tokobuah',   
    'dbdriver' => 'mysqli',   
    'dbprefix' => '',   
    'pconnect' => FALSE,   
    'db_debug' => (ENVIRONMENT !== 'production'),   
    'cache_on' => FALSE,   
    'cachedir' => '',   
    'char_set' => 'utf8',   
    'dbcollat' => 'utf8_general_ci',   
    'swap_pre' => '',   
    'encrypt' => FALSE,   
    'compress' => FALSE,   
    'stricton' => FALSE,   
    'failover' => array(),   
    'save_queries' => TRUE   
  );  
Lalu tambahkan database anda dan session di $autoload['libraries']

Kemudian untuk fitur CRUD, kita membuat agar admin dapat menambahkan produk-produk buah baru
Maka kita buat sebuah file untuk menampung produk tersebut di direktori : application/model/ yaitu file Product_model.php


 <?php defined('BASEPATH') OR exit('No direct script access allowed');   
  class Product_model extends CI_Model   
  {   
   private $_table = "products";   
   public $product_id;   
   public $name;   
   public $price;   
   public $image = "default.jpg";   
   public $description;   
   public function rules()   
   {   
    return [   
     ['field' => 'name',   
     'label' => 'Name',   
     'rules' => 'required'],   
     ['field' => 'price',   
     'label' => 'Price',   
     'rules' => 'numeric'],   
     ['field' => 'description',   
     'label' => 'Description',   
     'rules' => 'required']   
    ];   
   }   
   public function getAll()   
   {   
    return $this->db->get($this->_table)->result();   
   }   
   public function getById($id)   
   {   
    return $this->db->get_where($this->_table, ["product_id" => $id])->row();   
   }   
   public function save()   
   {   
    $post = $this->input->post();   
    $this->product_id = uniqid();   
    $this->name = $post["name"];   
    $this->price = $post["price"];   
    $this->image = $this->_uploadImage();   
    $this->description = $post["description"];   
    $this->db->insert($this->_table, $this);   
   }   
   public function update()   
   {   
    $post = $this->input->post();   
    $this->product_id = $post["id"];   
    $this->name = $post["name"];   
    $this->price = $post["price"];   
    if (!empty($_FILES["image"]["name"])) {   
     $this->image = $this->_uploadImage();   
    } else {   
     $this->image = $post["old_image"];   
    }   
    $this->description = $post["description"];   
    $this->db->update($this->_table, $this, array('product_id' => $post['id']));   
   }   
   public function delete($id)   
   {   
    $this->_deleteImage($id);   
    return $this->db->delete($this->_table, array("product_id" => $id));   
   }   
   private function _uploadImage()   
   {   
   $config['upload_path']   = './upload/product/';   
   $config['allowed_types']  = 'gif|jpg|png';   
   $config['file_name']   = $this->product_id;   
   $config['overwrite']   = true;   
   $config['max_size']    = 1024; // 1MB   
   // $config['max_width']   = 1024;   
   // $config['max_height']   = 768;   
   $this->load->library('upload', $config);   
   if ($this->upload->do_upload('image')) {   
    return $this->upload->data("file_name");   
   }   
   return "default.jpg";   
   }   
   private function _deleteImage($id)   
   {   
    $product = $this->getById($id);   
    if ($product->image != "default.jpg") {   
     $filename = explode(".", $product->image)[0];   
     return array_map('unlink', glob(FCPATH."upload/product/$filename.*"));   
    }   
   }   
  }   

Kemudian untuk membuat produk-produk tersebut kita buat file bernama Products.php di direktori application/controllers/admin/


 <?php   
  defined('BASEPATH') OR exit('No direct script access allowed');   
  class Products extends CI_Controller   
  {   
   public function __construct()   
   {   
    parent::__construct();   
    $this->load->model("product_model");   
    $this->load->library('form_validation');   
   }   
   public function index()   
   {   
    $data["products"] = $this->product_model->getAll();   
    $this->load->view("admin/product/list", $data);   
   }   
   public function add()   
   {   
    $product = $this->product_model;   
    $validation = $this->form_validation;   
    $validation->set_rules($product->rules());   
    if ($validation->run()) {   
     $product->save();   
     $this->session->set_flashdata('success', 'Berhasil disimpan');   
    }   
    $this->load->view("admin/product/new_form");   
   }   
   public function edit($id = null)   
   {   
    if (!isset($id)) redirect('admin/products');   
    $product = $this->product_model;   
    $validation = $this->form_validation;   
    $validation->set_rules($product->rules());   
    if ($validation->run()) {   
     $product->update();   
     $this->session->set_flashdata('success', 'Berhasil disimpan');   
    }   
    $data["product"] = $product->getById($id);   
    if (!$data["product"]) show_404();   
    $this->load->view("admin/product/edit_form", $data);   
   }   
   public function delete($id=null)   
   {   
    if (!isset($id)) show_404();   
    if ($this->product_model->delete($id)) {   
     redirect(site_url('admin/products'));   
    }   
   }   
  }   

Kemudian untuk fungsi CRUD untuk Produk Tokobuah maka kita buat list.php, new_form.php, dan edit_form.php di direktori view/admin
  • List.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">   
                <?php $this->load->view("admin/_partials/breadcrumb.php") ?>   
                <!-- DataTables -->   
                <div class="card mb-3">   
                  <div class="card-header">   
                     <a href="<?php echo site_url('admin/products/add') ?>"><i class="fas fa-plus"></i> Add New</a>   
                  </div>   
                  <div class="card-body">   
                     <div class="table-responsive">   
                       <table class="table table-hover" id="dataTable" width="100%" cellspacing="0">   
                          <thead>   
                            <tr>   
                               <th>Name</th>   
                               <th>Price</th>   
                               <th>Photo</th>   
                               <th>Description</th>   
                               <th>Action</th>   
                            </tr>   
                          </thead>   
                          <tbody>   
                            <?php foreach ($products as $product): ?>   
                            <tr>   
                               <td width="150">   
                                 <?php echo $product->name ?>   
                               </td>   
                               <td>   
                                 <?php echo $product->price ?>   
                               </td>   
                               <td>   
                                 <img src="<?php echo base_url('upload/product/'.$product->image) ?>" width="64" />   
                               </td>   
                               <td class="small">   
                                 <?php echo substr($product->description, 0, 120) ?>...</td>   
                               <td width="250">   
                                 <a href="<?php echo site_url('admin/products/edit/'.$product->product_id) ?>"   
                                  class="btn btn-small"><i class="fas fa-edit"></i> Edit</a>   
                                 <a onclick="deleteConfirm('<?php echo site_url('admin/products/delete/'.$product->product_id) ?>')"   
                                  href="#!" class="btn btn-small text-danger"><i class="fas fa-trash"></i> Hapus</a>   
                               </td>   
                            </tr>   
                            <?php endforeach; ?>   
                          </tbody>   
                       </table>   
                     </div>   
                  </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") ?>   
        <script>   
        function deleteConfirm(url){   
           $('#btn-delete').attr('href', url);   
           $('#deleteModal').modal();   
        }   
        </script>   
      </body>   
      </html>   
    

  • new_form.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">   
                <?php $this->load->view("admin/_partials/breadcrumb.php") ?>   
                <?php if ($this->session->flashdata('success')): ?>   
                <div class="alert alert-success" role="alert">   
                  <?php echo $this->session->flashdata('success'); ?>   
                </div>   
                <?php endif; ?>   
                <div class="card mb-3">   
                  <div class="card-header">   
                     <a href="<?php echo site_url('admin/products/') ?>"><i class="fas fa-arrow-left"></i> Back</a>   
                  </div>   
                  <div class="card-body">   
                     <form action="<?php base_url('admin/product/add') ?>" method="post" enctype="multipart/form-data" >   
                       <div class="form-group">   
                          <label for="name">Name*</label>   
                          <input class="form-control <?php echo form_error('name') ? 'is-invalid':'' ?>"   
                          type="text" name="name" placeholder="Product name" />   
                          <div class="invalid-feedback">   
                            <?php echo form_error('name') ?>   
                          </div>   
                       </div>   
                       <div class="form-group">   
                          <label for="price">Price*</label>   
                          <input class="form-control <?php echo form_error('price') ? 'is-invalid':'' ?>"   
                          type="number" name="price" min="0" placeholder="Product price" />   
                          <div class="invalid-feedback">   
                            <?php echo form_error('price') ?>   
                          </div>   
                       </div>   
                       <div class="form-group">   
                          <label for="name">Photo</label>   
                          <input class="form-control-file <?php echo form_error('price') ? 'is-invalid':'' ?>"   
                          type="file" name="image" />   
                          <div class="invalid-feedback">   
                            <?php echo form_error('image') ?>   
                          </div>   
                       </div>   
                       <div class="form-group">   
                          <label for="name">Description*</label>   
                          <textarea class="form-control <?php echo form_error('description') ? 'is-invalid':'' ?>"   
                          name="description" placeholder="Product description..."></textarea>   
                          <div class="invalid-feedback">   
                            <?php echo form_error('description') ?>   
                          </div>   
                       </div>   
                       <input class="btn btn-success" type="submit" name="btn" value="Save" />   
                     </form>   
                  </div>   
                  <div class="card-footer small text-muted">   
                     * required fields   
                  </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/js.php") ?>   
      </body>   
      </html>   
    

  • edit_form.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">   
                <?php $this->load->view("admin/_partials/breadcrumb.php") ?>   
                <?php if ($this->session->flashdata('success')): ?>   
                <div class="alert alert-success" role="alert">   
                  <?php echo $this->session->flashdata('success'); ?>   
                </div>   
                <?php endif; ?>   
                <!-- Card -->   
                <div class="card mb-3">   
                  <div class="card-header">   
                     <a href="<?php echo site_url('admin/products/') ?>"><i class="fas fa-arrow-left"></i>   
                       Back</a>   
                  </div>   
                  <div class="card-body">   
                     <form action="<?php base_url('admin/product/edit') ?>" method="post" enctype="multipart/form-data">   
                       <input type="hidden" name="id" value="<?php echo $product->product_id?>" />   
                       <div class="form-group">   
                          <label for="name">Name*</label>   
                          <input class="form-control <?php echo form_error('name') ? 'is-invalid':'' ?>"   
                          type="text" name="name" placeholder="Product name" value="<?php echo $product->name ?>" />   
                          <div class="invalid-feedback">   
                            <?php echo form_error('name') ?>   
                          </div>   
                       </div>   
                       <div class="form-group">   
                          <label for="price">Price</label>   
                          <input class="form-control <?php echo form_error('price') ? 'is-invalid':'' ?>"   
                          type="number" name="price" min="0" placeholder="Product price" value="<?php echo $product->price ?>" />   
                          <div class="invalid-feedback">   
                            <?php echo form_error('price') ?>   
                          </div>   
                       </div>   
                       <div class="form-group">   
                          <label for="name">Photo</label>   
                          <input class="form-control-file <?php echo form_error('image') ? 'is-invalid':'' ?>"   
                          type="file" name="image" />   
                          <input type="hidden" name="old_image" value="<?php echo $product->image ?>" />   
                          <div class="invalid-feedback">   
                            <?php echo form_error('image') ?>   
                          </div>   
                       </div>   
                       <div class="form-group">   
                          <label for="name">Description*</label>   
                          <textarea class="form-control <?php echo form_error('description') ? 'is-invalid':'' ?>"   
                          name="description" placeholder="Product description..."><?php echo $product->description ?></textarea>   
                          <div class="invalid-feedback">   
                            <?php echo form_error('description') ?>   
                          </div>   
                       </div>   
                       <input class="btn btn-success" type="submit" name="btn" value="Save" />   
                     </form>   
                  </div>   
                  <div class="card-footer small text-muted">   
                     * required fields   
                  </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/js.php") ?>   
      </body>   
      </html>  
Berikut Hasil Run website :

Tampilan awal halaman admin


Menu menambah Produk baru


Tampilan setelah ditambahkan sebuah produk


Tampilan setelah di edit dan ditambahkan foto


Nama : Reza Adipatria Maranatha
NRP : 05111740000186
Kelas : PWEB C

Comments

Popular posts from this blog

SISTEM INFORMASI

Sistem Informasi  merupakan suatu sistem di dalam organisasi yang mempertemukan kebutuhan dalam pengelolaan transaksi, menjalankan operasi, dan kegiatan strategi lainnya yang bersifat manajerial serta mampu menyediakan informasi bagi pihak luar untuk laporan tertentu. Sistem Informasi sendiri memiliki beberapa fungsi, seperti: Memperbaiki produktivitas aplikasi pengembangan serta dalam pemeliharaan sebuah sistem Menjamin kualitas serta keterampilan dalam penggunaan Sistem Informasi Mengidentifikasi kebutuhan apa saja yang dapat mendukung sistem informasi Mengantisipasi serta memahami akan adanya konsekuensi secara ekonomi Menetapkan investasi yang akan diarahkan pada sistem informasi Mengembangkan proses perencanaan yang efektif Bagan Sistem Informasi Transaction Processing Systems Merupakan sebuah sistem pemrosesan informasi untuk bisnis transaksi yang melibatkan pengambilan, perubahan dan pengembalian dari seluruh transaksi data. Ciri khas dari sebuah TPS i...

ANALISA USE CASE

Nama : Reza Adipatria Maranatha NRP : 05111740000186 Analisa use case adalah teknik yang digunakan untuk mengidentifikasi kebutuhan sistem perangkat lunak dengan menggambarkan aktor atau user yang akan menggunakan perangkat lunak dan ruang lingkup fitur kegunaan perangkat lunak. Dalam sistem penggajian penerbitan Kanisius, menurut saya ada 5 aktor didalamnya. Pegawai Pegawai bertugas untuk bekerja dan sebagai penerima gaji Pencatat Absen Pencatat Absen bertugas untuk mencatat daftar hadir dari pegawai dan merekap daftar hadir  Penggajian Bagian Penggajian bertugas untuk memberikan gaji kepada karyawan dan merekap gaji pegawai Kasir Bagian Kasir bertugas untuk mencairkan cek dan menggaji pegawai Keuangan Bagian Keuangan bertugas sebagai pencatat seluruh pengeluaran  Diagram Use Case 

Aplikasi Mobile Banking Penarikan Uang

Nama Anggota : Samuel Marcellinus 05111740000134 Reza Adipatria Maranatha 051111740000186 Bastian Farandy 05111740000190 Alfin Pradana 05111740000191 APSI C Aplikasi M-Banking Penarikan Uang  Pada Tugas ini, kami membuat sebuah aplikasi Mobile Banking menggunakan website "bubble.is". Disini kami membuat fitur Penarikan. Aplikasi dapat di akses di :  Apps Berikut hasil Tampilan Aplikasi Tampilan awal Registrasi untuk membuat akun Mobile-Banking Tampilan Login setelah membuat akun Kemudian kita isikan username dan password yang telah kita buat kemudian klik tombol Login, dan akan masuk ke Menu utama seperti dibawah Kemudian kita coba untuk masuk ke menu Penarikan Apabila kita tekan salah satu dari nominal di atas, akan digenerate kode untuk mengambil uang Transaksi Selesai