Membuat keranjang belanja pada codeigniter dengan mysql

Mau nanya dong teman-teman untuk membuat keranjang belanja di CI gimana yak ?

avatar KelvinBun
@KelvinBun

3 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

6 Jawaban:

Jawaban Terpilih

Mas bisa belajar dari sini https://github.com/kirilkirkov/Shopping-Cart-Solution-CodeIgniter itu di build pake ci , jadi bisa pelajarin sistemnya disana terus di kembangi lagi sesuai keinginan mas ^^

avatar markeronly
@markeronly

378 Kontribusi 230 Poin

Dipost 6 tahun yang lalu

Bisa pakai session, data keranjang belanja dalam bentuk aras sesuai dari isi field yg dibutuhkan semisal kode nama qty, namun session terkadang tidak berjalan dengan baik untuk keranjang belanja, saya sarankan dimasukan kedalam table tmp atau temporari yg dibuat di DB sehingga ketika save atau cekout tinggal rubah status temporari nya saja

avatar rabduljamal
@rabduljamal

10 Kontribusi 6 Poin

Dipost 6 tahun yang lalu

@rabduljamal jadi itu data belanjaannya disimpan di tmp dulu gtu? hmm kira2 ada tutorialnya ga buat dipelajarin?

avatar KelvinBun
@KelvinBun

3 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

ada jadi seperti bisa saja dimasukan ke table, contoh kita definisikan tabel 1 penjualan, tabel 2 penjualan_barang, nah di dalam tabel penjualan barang silahkan buat fiel (faktur, kode_barang, qty, status_tmp) nah setiap user yang memasukan ke keranjang belanja silahkan masukan ke table penjualan_barang namun di fieald status_tmp diisi dengan angka 1, supaya menerangkan bahwa barang itu masih dalam kerangjang belanja, jika user sudah cekuot atau membayar maka update status_tmp nya jadi 0

Penjualan.php controller


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Penjualan extends Ci_Controller  {
	public function __construct(){
		parent::__construct();
		$this->load->Models('Model_app');//model db kamu
	}

	public function index(){
	}

        public function tmp_barang($type){
		if(!$this->input->is_ajax_request()) {
			echo "Access Denied";
		}else{
			$post=$this->input->post(NULL, TRUE);

			if($type=='add'){

				$data_barang_ = $this->model_app->Select_where("tbl_stock", array("stock_gudang"=>$this->session->userdata('gudang')));
				$count_barang = count($data_barang_);
				if($count_barang>=$post['qty']){
					$data_barang=array();
					$cek_stock=$this->model_app->get_row_field("tbl_penjualan_barang", "qty", array("tmp"=>$this->session->userdata('username'), "kode_barang"=>$post['kode_barang'], "faktur"=>$post['faktur']));
					if($cek_stock!=NULL){
						$qty=$cek_stock+$post['qty'];
						if($count_barang>=$qty){
							$data_input=array(
								"qty"=>$qty
							);
							if($this->model_app->Update("tbl_penjualan_barang", $data_input, array("tmp"=>$this->session->userdata('username'), "kode_barang"=>$post['kode_barang'], "faktur"=>$post['faktur']))){
								echo json_encode(array(
									"status"=>"success",
									"class"=>"success",
									"pesan"=>"qty berhasil ditambahkan"
								));
							}else{
								echo json_encode(array(
									"status"=>"error",
									"class"=>"error",
									"pesan"=>"qty gagal ditambahkan"
								));
							}
						}else{
							echo json_encode(array(
								"status"=>"error",
								"class"=>"error",
								"pesan"=>"stock tidak mencukupi"
							));
						}

					}else{
						$harga=$this->model_app->get_row_field("tbl_barang_harga", "harga_jual", array("barang_id"=>$post['kode_barang']));
						$data_input=array(
							"faktur"=>$post['faktur'],
							"kode_barang"=>$post['kode_barang'],
							"harga_barang"=>$harga,
							"qty"=>$post['qty'],
							"diskon"=>0,
							"harga_jual"=>($harga-($harga*0/100)),
							"tmp"=>$this->session->userdata('username')
						);
						if($this->model_app->Insert("tbl_penjualan_barang", $data_input)){
							echo json_encode(array(
								"status"=>"success",
								"class"=>"success",
								"pesan"=>"berhasil ditambahkan"
							));
						}else{
							echo json_encode(array(
								"status"=>"error",
								"class"=>"error",
								"pesan"=>"gagal ditambahkan"
							));
						}
					}

				}else{
					echo json_encode(array(
						"status"=>"error",
						"class"=>"error",
						"pesan"=>"stock tidak mencukupi"
					));
				}

			}
		}
	}

        public function list_tmp_barang(){
		if(!$this->input->is_ajax_request()){
			echo "Access Denied";
		}else{
			$post=$this->input->post(NULL, TRUE);
			$data=$this->model_app->Select_where("tbl_penjualan_barang", array("faktur"=>$post['faktur'],"tmp"=>$this->session->userdata('username')));
			$data_array=array();
			$i=1;
			foreach ($data as $value) {

				$data_array[]=array(
					"no"					=>$i,
					"kode_barang"	=>$value['kode_barang'],
					"nama_barang"	=>$this->model_app->get_row_field("tbl_barang", "barang_nama", array("barang_kode"=>$value['kode_barang'])),
					"qty"					=>$value['qty'],
					"diskon"			=>$value['diskon'],
					"harga_barang"=>$value['harga_barang'],
					"harga_jual"	=>$value['harga_jual']
				);
				$i++;
			}
			if($data != NULL){
				echo json_encode(array(
					"status"=>"success",
					"class"=>"success",
					"pesan"=>"berhasil ditambahkan",
					"data"=>$data_array
				));
			}else{
				echo json_encode(array(
					"status"=>"kosong",
					"class"=>"success",
					"pesan"=>"data kosong",
					"data"=>array()
				));
			}
		}
	}
}

ini model db punya saya

<?php if(!defined('BASEPATH')) exit('Hacking Attempt : Keluar dari sistem..!!');

class Model_app extends CI_Model
{

  public function Select_tb($table){
			 $res=$this->db->get($table); // Kode ini berfungsi untuk memilih tabel yang akan ditampilkan
			 return $res->result_array(); // Kode ini digunakan untuk mengembalikan hasil operasi $res menjadi sebuah array
	 }

 public function Select_like($table, $kolom, $term){
			 $query = $this->db->query("Select * FROM $table where $kolom LIKE '%$term%'");
			 return $query->result_array(); // Kode ini digunakan untuk mengembalikan hasil operasi $res menjadi sebuah array
	 }

 public function Select_like_or($table, $like, $or_like){
	 $this->db->like($like);
	 $this->db->or_like($or_like);
	 $query=$this->db->get($table);
	 return $query->result_array();
 }

 public function Select_like_wr($table, $like, $wr){
	 $this->db->like($like);
	 $query=$this->db->get_where($table, $wr);
	 return $query->result_array();
 }

 public function Select_where($table, $array, $limit=0, $order="id", $short="DESC"){
   $this->db->order_by($order, $short);
   $res=$this->db->get_where($table, $array, $limit);
	 return $res->result_array();
 }

 public function Insert($table,$data){
		 $this->db->insert($table, $data); // Kode ini digunakan untuk memasukan record baru kedalam sebuah tabel
     $res = $this->db->insert_id();
		 return $res; // Kode ini digunakan untuk mengembalikan hasil $res
 }

 public function Update($table, $data, $where){
		 $res = $this->db->update($table, $data, $where); // Kode ini digunakan untuk merubah record yang sudah ada dalam sebuah tabel
		 return $res;
 }

 public function Delete($table, $where){
		 $res = $this->db->delete($table, $where); // Kode ini digunakan untuk menghapus record yang sudah ada
		 return $res;
 }

 public function get_key($table, $key){
		 $query = $this->db->select('id')->from($table)->order_by('id', 'DESC')->limit(1)->get();

		 if($query->num_rows() > 0) {
				 $id = $query->row("id");
		 }else {
				 $id=0;
		 }

		 if($id>9999){
				 $id=$key.($id+1);
		 }
		 elseif($id>999){
				 $id=$key.'0'.($id+1);
		 }elseif($id>99){
				 $id=$key.'00'.($id+1);
		 }elseif($id>9){
				 $id=$key.'000'.($id+1);
		 }else{
				 $id=$key.'0000'.($id+1);
		 }

		 return $id;
 }

 public function get_id($table, $field, $order, $sort, $limit){
   $this->db->select($field);
   $this->db->from($table);
   $this->db->where($array);
   $this->db->order_by($order, $sort);
   $this->db->limit($limit);
   $query = $this->db->get();
   return $query->result_array();
 }

 public function get_row_field($table, $field, $array){
			 $query = $this->db->select($field)->from($table)->where($array)->get();

			 if($query->num_rows() > 0) {
					 $_field = $query->row($field);
			 }else {
					 $_field=NULL;
			 }

			 return $_field;
	 }

	 public function Login($username, $password){
			 $this->db->where('user_name', $username);
			 $user=$this->db->get('tbl_user')->row();
			 if($user!=NULL){
				 if($password==$user->user_pass){
           $this->db->where('user_id', $user->id);
    			 $user_detail=$this->db->get('tbl_user_detail')->row();
           $data=array(
             "user"=>$user,
             "detail"=>$user_detail
           );
           return $data;
				 }else{
					 return 'MAT';
				 }
			 }else{
         return 'NULL';
       }
	 }

	 public function num_result($table, $key, $data){
			 $aa=$this->db->query("SELECT * FROM {$table} WHERE {$key}='{$data}'");
			 return $aa->num_rows();
	 }

 public function Select_distinct($table){
	 $this->db->distinct();
	 $query=$this->db->get($tabel);
	 return $res->result_array();
 }

 public function getDataWithCondition($table,$condition)
 {
   $this->db->select('*');
   $this->db->from($table);
   $this->db->where($condition);
   return $query = $this->db->get();
 }

}

avatar rabduljamal
@rabduljamal

10 Kontribusi 6 Poin

Dipost 6 tahun yang lalu

masih ga paham saya mas :(. mas orang mana ? biar kalo ada waktu ketmu gtu :)

avatar KelvinBun
@KelvinBun

3 Kontribusi 0 Poin

Dipost 6 tahun yang lalu

Saya org Bandung

avatar rabduljamal
@rabduljamal

10 Kontribusi 6 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban