Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Westi on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Category Navigation Problem

Status
Not open for further replies.

ralphiooo

Programmer
Oct 23, 2005
64
GB
Hi, I have setup the following array called list_categories which is in the format $list_categories[sub_category_id][category_id], ie say it has the following content:

Code:
Array
(
    [0] => Array
           (
              [0] => Array
                  (
                      [category_id] => 27
                      [sub_category_id] => 0
                      [category_name] => dsg
                      [description] => dfsg
                      [display_order] => 0
                      [status] => 1
                  )

              [1] => Array
                  (
                      [category_id] => 28
                      [sub_category_id] => 0
                      [category_name] => afs
                      [description] => dasfd
                      [display_order] => 0
                      [status] => 1
                  )

            )

     [27] => Array
          (
              [0] => Array
                  (
                      [category_id] => 29
                      [sub_category_id] => 27
                      [category_name] => dsdaf
                      [description] => asf
                      [display_order] => 0
                      [status] => 1

                )

        )

)

What I want to be able to do is loop through the array and display the categories in a list. So far I have put together the following code which loops through every category and displays its sub categories fine.
Code:
function get_select_categories($category_id, $prefix) {
	$select_categories = array();
								
	if (array_key_exists($category_id, $GLOBALS['list_categories'])) {
		foreach ($GLOBALS['list_categories'][$category_id] as $category) {
			$category['category_name']	= $prefix . $category['category_name'];
			$select_categories[]		= $category;
			$select_categories		= array_merge($select_categories, get_select_categories($category['category_id'], $prefix . '     '));
		}
	}

	return $select_categories;
}

echo '<ul>';

foreach (get_select_categories(0, '') as $category) {
	echo '<li>' . $category['category_name'] . '</li>';
}

echo '</ul>';

But say I was in a specific category ie category_id = 1 i want to limit it to:

- cat 1 (category_id = 1, sub_category_id = 0)
- sub cat 1 (category_id = 2, sub_category_id = 1)
- sub cat 2 (category_id = 3, sub_category_id = 1)
- cat 2 (category_id = 4, sub_category_id = 0)
- cat 3 (category_id = 5, sub_category_id = 0)

and if category_id = 8 it would be

- cat 1 (category_id = 1, sub_category_id = 0)
- cat 2 (category_id = 2, sub_category_id = 0)
- cat 3 (category_id = 3, sub_category_id = 0)
- sub cat 1 (category_id = 4, sub_category_id = 3)
- sub sub cat 1 (category_id = 4, sub_category_id = 4)
- sub sub cat 2 (category_id = 5, sub_category_id = 4)
- sub cat 2 (category_id = 6, sub_category_id = 3)
- cat 4 (category_id = 7, sub_category_id = 0)

I hope you can see the pattern now, basically I want to limit the loop to only show the results for the current category it is in.

I would appreciate it alot if someone could help. Thanks
 
sorry - i don't see the pattern. can you try explaining your aims in words? I don't get how category id 3 can be "in" category_id 8
 
damn that's cus I renamed it I'll repost the example:

But say I was in a specific category ie category_id = 1 i want to limit it to:

- cat 1 (category_id = 1, sub_category_id = 0)
- sub cat 1 (category_id = 2, sub_category_id = 1)
- sub cat 2 (category_id = 3, sub_category_id = 1)
- cat 2 (category_id = 4, sub_category_id = 0)
- cat 3 (category_id = 5, sub_category_id = 0)

and if category_id = 4 it would be

- cat 1 (category_id = 1, sub_category_id = 0)
- cat 2 (category_id = 2, sub_category_id = 0)
- cat 3 (category_id = 3, sub_category_id = 0)
- sub cat 1 (category_id = 4, sub_category_id = 3)
- sub sub cat 1 (category_id = 4, sub_category_id = 4)
- sub sub cat 2 (category_id = 5, sub_category_id = 4)
- sub cat 2 (category_id = 6, sub_category_id = 3)
- cat 4 (category_id = 7, sub_category_id = 0)

The second example should have been 4, basically it goes down as far as the category set and lists its sub categories. Also if the category set is not within a level it does not list its sub categories. Hope that makes things clearer.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top