category system

You are currently browsing articles tagged category system.

I found two model two make to make category system with unlimited category one oft them is Tree traversal, and other is Adjacency list model.

I will use adjacency list model  because it is more understandable than tree traversal. In tree traversal model , insterting and editing categories is unclear , also this model is for bigger database.  However, i advice you to look  up Tree traversal’s logic, i liked it :) .

Let’s start with creating database;

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(128) NOT NULL,
  `top_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;


– Tablo döküm verisi `category`

INSERT INTO `category` (`id`, `name`, `top_id`) VALUES
(1, ‘Computer’, 0),
(2, ‘Laptop’, 1),
(3, ‘Asus’, 2),
(4, ‘Phones’, 0);
 

We want to make sth like this:

-Computer

— PCS

——Laptop

———Asus

-Phone

We use functions that call itself named recursive functions.

class CATEGORY
{
function cat($cat_id, $space= 1, $x =”) // cat id, space to add "_" degree of categoreis times, list of categories
{
$sql = mysql_query("SELECT * FROM category WHERE top_id=’$cat_id’");

while($select = mysql_fetch_assoc($sql))
{

$this->x = $this->x.str_repeat(‘_’, $space).$select['name'].’-';  // making a list with all categories names. we add "_" to in front of category name. It adds degree of category times. For example asus deggre is 2 therefore it will be __asus, pda’s degree is one therefore it will be _pda

$this->x = $this->cat($select['id'], ($space+1), $this->x);  // function calls itself, with this, it finds subcategory of a category.
}
return $this->x; // This is list of all categories. Each category is separating with "-", be careful this is not an array , this is a string
}

function get_cat($cat_id)
{
$list = $this->cat($cat_tid);
$arr = explode(‘-’, $list); // making array with categories
unset($arr[count($arr-1]);// deleting last element of array, because it is a blank
return $arr // return a array;

}

}

To use it

$example = new CATEGORY;
$get_array_categories = $exapmle ->get_cat(0);
print_r($get_array_categories);

I wrote this to show you how you can make a category system with unlimited subcategory. If my codes don’t woking fine, please
inform.

Related posts

Tags: , , ,