Skip to main content

membuat kategori dan sub kategori

June 30, 2011 by fananicenter

fananicenter's picture

tolong bantuannya..
saya bikin kategori dengan sub kategori

tabelnya :
==========
kategori
==========
id_kategori int(11) primary key auto_increment
nama_kategori varchar(45)
ket_kategori varchar(60)
idsub_kategori int(11)

modelnya : Mkategori.php

 function get_kategori()
 {
   $data = array();
   $this->db->get('kategori');
   $Q = if($Q->num_rows() > 0)
   {
     foreach($Q->result_array() as $row)
     {
       $data[] = $row;
     }
     $Q->free_result();
     return $data;
   }
 }
 
 function get_subkategori($id_kategori)
 {
   $data = array();
   $this->db->get('kategori');
   $this->db->where('idsub_kategori', $id_kategori);
   $Q = if($Q->num_rows() > 0)
   {
     foreach($Q->result_array() as $row)
     {
       $data[] = $row;
     }
     $Q->free_result();
     return $data;
   }
 }

Controller : home.php

function __construct()
 {
   parent::controller();
   $this->load->model('Mkategori');
 }
 function index()
 {
   $db_kategori = $this->Mkategori->get_kategori()
   foreach($db_kategori as $item)
   {
     $data['sub'] = $this->Mkategori->get_subkategori($item['id_kategori']);
   }
   $this->load->view('kategori', $data);
 }

gimana membuat looping parent kategori dan sub kategori di VIEW..??

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

BLS:

July 1, 2011 by syabac, 3 days 6 hours ago
Comment: 8478

syabac's picture

//---------
id_kategori int(11) primary key auto_increment
nama_kategori varchar(45)
ket_kategori varchar(60)
idsub_kategori int(11) ----> maksudnya parent category kan.
//------------------

oke, kalo mau sekali panggil, bisa pake rekursif.

//MODEL-----------------
function category_by_parent($parent=0, $include_child=false){
	$list = $this->db->from('kategori')
			->where('idsub_kategori', $parent)
			->get()->result();
	$result = array();
 
	$foreach($list as $item){
		$temp = $include_child ? $this->category_by_parent($item->id_kategori, true) : array();
		$result[] = array(
			'item' => $item, 
			'child' => $temp
		);
	}
	unset($list);
	return $result;
}
//END MODEL----------------------
 
//CONTROLLER--------------------
//ambil semua kategori beserta sub2nya
$categories = $this->Mkategori->category_by_parent(0, true);
 
//hanya ambil top kategori
$categories = $this->Mkategori->category_by_parent();
 
//ambil semua sub kategori dari kategori ID=2
$categories = $this->Mkategori->category_by_parent(2, true);

bisa sekali.... mungkin bisa

July 1, 2011 by predhtz, 3 days 14 hours ago
Comment: 8467

predhtz's picture

bisa sekali....
mungkin bisa dicoba dulu....
tinggal modif sedikit isi variabel $out di MY_Controller supaya bisa sesuai dengan keinginan

predhtz tolong..

July 1, 2011 by fananicenter, 3 days 12 hours ago
Comment: 8471

fananicenter's picture

udah saya coba nih masih bingung aja..
untuk looping di sub kategori di MY_Controller nya gimana?

Loopingnya pake fungsi

July 1, 2011 by predhtz, 3 days 11 hours ago
Comment: 8475

predhtz's picture

Loopingnya pake fungsi recursive (memanggil fungsi di dalam fungsi itu sendiri... semoga nggas salah...).. coba googling soal recursive function...
looping di fungsi ada di baris ini

$out .= $this->get_kategori($id_kategori, $level+1);

dibandingkan dengan looping biasa.... recursive lebih efektif... karna lebih sedikit baris perintahnya....
coba saja bandingkan dengan proses looping parent - child tradisional, jika kedalaman sub kategorinya sudah lebih dari 3.... hehehe

pake fungsi recursive

June 30, 2011 by predhtz, 3 days 18 hours ago
Comment: 8463

predhtz's picture

pake fungsi recursive aja...
kalau cara saya (mungkin berbeda dengan yang lain), fungsi itu saya taruh di MY_Controller..(kalo di versi 1.7, disimpan di folder application/library, kalo di versi 2 simpan di folder application/core)....
Contohnya begini....

Model :

 function get_kategori($where = '')
 {
if ($where != "")
{
$this->db->where($where);
return $this->db->get("kategori");
}
 }

MY_Controller

class MY_Controller extends Controller
{
function __construct()
{
parent::__construct();
}
 
function get_kategori($id_parent = 0, $level = 0)
{
$out = "";
$this->load->model("mkategori");
$where = array("idsub_kategori" => $id_parent);
$q = $this->mkategori->get_kategori($where);
$numrows = $q->total_rows();
if ($numrows > 0)
{
$out .= "<ul>";
foreach ($q->result() as $row)
{
if ($row->idsub_kategori == $id_parent)
$out .= "<li>";
$out .= "<p>".$row->nama_kategori."</p>";
$out .= "<p>".$row->ket_kategori."</p>";
$out .= $this->get_kategori($id_kategori, $level+1);
$out .= "</li>";
}
$out .= "</ul>";
}
return $out;
}
}

Di Controller

Class Kategori extends MY_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$data["kategori"] = $this->get_kategori();
$this->load->view("kategori", $data);
}
}

View-nya :

Kategori

 echo isset($kategori) ? $kategori : "";

Silahkan dimodifikasi sesuai kebutuhan....
Semoga membantu

trimasi predhtz, salam

June 30, 2011 by fananicenter, 3 days 16 hours ago
Comment: 8465

fananicenter's picture

trimasi predhtz, salam kenal...
wah saya masih awan nih, belum perna pakek MY_Controller..
saya masih bingung nerapinnya,

gini misalkan isi table kategori

id_kategori | nama_kategori | idsub_kategori|
1           | Notebook      | 0             |
2           | mobil         | 0             |
3           | acer          | 1             |
4           | compaq        | 1             | 
5           | honda CRV     | 2             |

jadi nantinya viewnya seperti ini

NOTEBOOK //root kategori
  -acer  //sub kategori  
  -compaq
 
MOBIL //root kategori
  -honda CRV

itu apa bisa pakek MY_Controller seperti yang di contohkan

Premium Drupal Themes by Adaptivethemes