Here is my simple recursive function to create a category subcategory tree of unlimited subcategories.
<select name="parent_cat"> <option value="0">Root</option> <? function get_all_sub_cats($parent_cat_id, $level_string) { $return_str=''; if(!$level_string) { $level_string=''; } $db=new DB(); $db->open(); $db->query("select * from categories where parent_id='{$parent_cat_id}'"); $db->rsset(); if($db->rs) { while($db->rs) { $return_str.="<option value=\"{$db->rs['id']}\" style=\"padding-left:10px\">{$level_string}{$db->rs['name']}</option>"; $return_str.=get_all_sub_cats($db->rs['id'], $level_string.'+'); $db->rsset(); } } else { return false; } return $return_str; } print get_all_sub_cats('0', ''); ?> </select>
This is to fit my needs. You can get the logic and build your own accordingly.